From 59e7be4ac16ad694ccc95148429b56bddd4bdee3 Mon Sep 17 00:00:00 2001 From: Evgin Demirci <128102917+Evolancer02@users.noreply.github.com> Date: Fri, 28 Jun 2024 18:09:38 +0000 Subject: [PATCH 1/4] Installed pydoctor and generated the html files for API documentation. Removed the generated files with epydoc. Updated build.sh. Updated some of the markdown files --- docs/README.md | 2 +- docs/batch.md | 4 +- docs/build | 2 +- docs/epy/api-objects.txt | 392 -- docs/epy/class-tree.html | 267 -- docs/epy/crarr.png | Bin 340 -> 0 bytes docs/epy/epydoc.css | 322 -- docs/epy/epydoc.js | 293 -- docs/epy/frames.html | 17 - docs/epy/googleapiclient-module.html | 168 - docs/epy/googleapiclient-pysrc.html | 137 - .../googleapiclient.NullHandler-class.html | 282 -- docs/epy/googleapiclient._auth-module.html | 390 -- docs/epy/googleapiclient._auth-pysrc.html | 290 -- docs/epy/googleapiclient._helpers-module.html | 531 --- docs/epy/googleapiclient._helpers-pysrc.html | 324 -- docs/epy/googleapiclient.channel-module.html | 490 --- docs/epy/googleapiclient.channel-pysrc.html | 433 -- ...googleapiclient.channel.Channel-class.html | 380 -- ...eapiclient.channel.Notification-class.html | 263 -- .../epy/googleapiclient.discovery-module.html | 1564 ------- docs/epy/googleapiclient.discovery-pysrc.html | 1806 -------- ...gleapiclient.discovery.Resource-class.html | 517 --- ...covery.ResourceMethodParameters-class.html | 319 -- ...lient.discovery._BytesGenerator-class.html | 137 - ...oogleapiclient.discovery_cache-module.html | 251 -- ...googleapiclient.discovery_cache-pysrc.html | 170 - ...overy_cache.appengine_memcache-module.html | 172 - ...covery_cache.appengine_memcache-pysrc.html | 188 - ..._cache.appengine_memcache.Cache-class.html | 404 -- ...apiclient.discovery_cache.base-module.html | 158 - ...eapiclient.discovery_cache.base-pysrc.html | 158 - ...ient.discovery_cache.base.Cache-class.html | 415 -- ...ent.discovery_cache.file_cache-module.html | 233 -- ...ient.discovery_cache.file_cache-pysrc.html | 303 -- ...iscovery_cache.file_cache.Cache-class.html | 404 -- docs/epy/googleapiclient.errors-module.html | 267 -- docs/epy/googleapiclient.errors-pysrc.html | 345 -- ...ogleapiclient.errors.BatchError-class.html | 344 -- .../googleapiclient.errors.Error-class.html | 198 - ...oogleapiclient.errors.HttpError-class.html | 362 -- ...nt.errors.InvalidChunkSizeError-class.html | 194 - ...iclient.errors.InvalidJsonError-class.html | 194 - ...errors.InvalidNotificationError-class.html | 194 - ...ent.errors.MediaUploadSizeError-class.html | 194 - ...ent.errors.ResumableUploadError-class.html | 201 - ...rrors.UnacceptableMimeTypeError-class.html | 194 - ...ient.errors.UnexpectedBodyError-class.html | 256 -- ...nt.errors.UnexpectedMethodError-class.html | 258 -- ....errors.UnknownApiNameOrVersion-class.html | 194 - ...piclient.errors.UnknownFileType-class.html | 194 - ...piclient.errors.UnknownLinkType-class.html | 194 - docs/epy/googleapiclient.http-module.html | 636 --- docs/epy/googleapiclient.http-pysrc.html | 2349 ----------- ...apiclient.http.BatchHttpRequest-class.html | 752 ---- .../googleapiclient.http.HttpMock-class.html | 282 -- ...apiclient.http.HttpMockSequence-class.html | 286 -- ...oogleapiclient.http.HttpRequest-class.html | 572 --- ...eapiclient.http.HttpRequestMock-class.html | 290 -- ...ient.http.MediaDownloadProgress-class.html | 288 -- ...eapiclient.http.MediaFileUpload-class.html | 413 -- ...client.http.MediaInMemoryUpload-class.html | 300 -- ...client.http.MediaIoBaseDownload-class.html | 329 -- ...piclient.http.MediaIoBaseUpload-class.html | 683 --- ...oogleapiclient.http.MediaUpload-class.html | 694 ---- ...client.http.MediaUploadProgress-class.html | 289 -- ...iclient.http.RequestMockBuilder-class.html | 335 -- ...ogleapiclient.http._StreamSlice-class.html | 301 -- .../epy/googleapiclient.mimeparse-module.html | 508 --- docs/epy/googleapiclient.mimeparse-pysrc.html | 294 -- docs/epy/googleapiclient.model-module.html | 344 -- docs/epy/googleapiclient.model-pysrc.html | 675 --- ...googleapiclient.model.BaseModel-class.html | 565 --- ...googleapiclient.model.JsonModel-class.html | 446 -- ...oogleapiclient.model.MediaModel-class.html | 348 -- .../googleapiclient.model.Model-class.html | 318 -- ...lient.model.ProtocolBufferModel-class.html | 444 -- .../googleapiclient.model.RawModel-class.html | 348 -- .../googleapiclient.sample_tools-module.html | 223 - .../googleapiclient.sample_tools-pysrc.html | 224 - docs/epy/googleapiclient.schema-module.html | 214 - docs/epy/googleapiclient.schema-pysrc.html | 477 --- .../googleapiclient.schema.Schemas-class.html | 494 --- ...piclient.schema._SchemaToStruct-class.html | 516 --- docs/epy/help.html | 268 -- docs/epy/identifier-index.html | 1187 ------ docs/epy/index.html | 17 - docs/epy/module-tree.html | 125 - docs/epy/redirect.html | 38 - docs/epy/toc-everything.html | 346 -- docs/epy/toc-googleapiclient-module.html | 31 - .../epy/toc-googleapiclient._auth-module.html | 67 - .../toc-googleapiclient._helpers-module.html | 73 - .../toc-googleapiclient.channel-module.html | 47 - .../toc-googleapiclient.discovery-module.html | 141 - ...oogleapiclient.discovery_cache-module.html | 35 - ...overy_cache.appengine_memcache-module.html | 35 - ...apiclient.discovery_cache.base-module.html | 33 - ...ent.discovery_cache.file_cache-module.html | 43 - .../toc-googleapiclient.errors-module.html | 46 - docs/epy/toc-googleapiclient.http-module.html | 70 - .../toc-googleapiclient.mimeparse-module.html | 43 - .../epy/toc-googleapiclient.model-module.html | 51 - ...c-googleapiclient.sample_tools-module.html | 31 - .../toc-googleapiclient.schema-module.html | 36 - docs/epy/toc.html | 51 - docs/epy/uml_class_diagram_for_googleap.gif | Bin 13024 -> 0 bytes .../epy/uml_class_diagram_for_googleap_10.gif | Bin 12894 -> 0 bytes .../epy/uml_class_diagram_for_googleap_11.gif | Bin 9233 -> 0 bytes .../epy/uml_class_diagram_for_googleap_12.gif | Bin 11350 -> 0 bytes .../epy/uml_class_diagram_for_googleap_13.gif | Bin 10737 -> 0 bytes .../epy/uml_class_diagram_for_googleap_14.gif | Bin 10386 -> 0 bytes .../epy/uml_class_diagram_for_googleap_15.gif | Bin 10611 -> 0 bytes .../epy/uml_class_diagram_for_googleap_16.gif | Bin 10734 -> 0 bytes .../epy/uml_class_diagram_for_googleap_17.gif | Bin 12489 -> 0 bytes .../epy/uml_class_diagram_for_googleap_18.gif | Bin 10642 -> 0 bytes .../epy/uml_class_diagram_for_googleap_19.gif | Bin 11274 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_2.gif | Bin 4963 -> 0 bytes .../epy/uml_class_diagram_for_googleap_20.gif | Bin 11153 -> 0 bytes .../epy/uml_class_diagram_for_googleap_21.gif | Bin 11087 -> 0 bytes .../epy/uml_class_diagram_for_googleap_22.gif | Bin 10490 -> 0 bytes .../epy/uml_class_diagram_for_googleap_23.gif | Bin 10460 -> 0 bytes .../epy/uml_class_diagram_for_googleap_24.gif | Bin 4759 -> 0 bytes .../epy/uml_class_diagram_for_googleap_25.gif | Bin 5127 -> 0 bytes .../epy/uml_class_diagram_for_googleap_26.gif | Bin 4991 -> 0 bytes .../epy/uml_class_diagram_for_googleap_27.gif | Bin 8910 -> 0 bytes .../epy/uml_class_diagram_for_googleap_28.gif | Bin 3236 -> 0 bytes .../epy/uml_class_diagram_for_googleap_29.gif | Bin 3492 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_3.gif | Bin 3037 -> 0 bytes .../epy/uml_class_diagram_for_googleap_30.gif | Bin 14003 -> 0 bytes .../epy/uml_class_diagram_for_googleap_31.gif | Bin 14260 -> 0 bytes .../epy/uml_class_diagram_for_googleap_32.gif | Bin 4621 -> 0 bytes .../epy/uml_class_diagram_for_googleap_33.gif | Bin 11284 -> 0 bytes .../epy/uml_class_diagram_for_googleap_34.gif | Bin 5448 -> 0 bytes .../epy/uml_class_diagram_for_googleap_35.gif | Bin 3386 -> 0 bytes .../epy/uml_class_diagram_for_googleap_36.gif | Bin 5765 -> 0 bytes .../epy/uml_class_diagram_for_googleap_37.gif | Bin 2982 -> 0 bytes .../epy/uml_class_diagram_for_googleap_38.gif | Bin 8660 -> 0 bytes .../epy/uml_class_diagram_for_googleap_39.gif | Bin 10790 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_4.gif | Bin 5150 -> 0 bytes .../epy/uml_class_diagram_for_googleap_40.gif | Bin 12243 -> 0 bytes .../epy/uml_class_diagram_for_googleap_41.gif | Bin 3844 -> 0 bytes .../epy/uml_class_diagram_for_googleap_42.gif | Bin 10888 -> 0 bytes .../epy/uml_class_diagram_for_googleap_43.gif | Bin 12267 -> 0 bytes .../epy/uml_class_diagram_for_googleap_44.gif | Bin 4491 -> 0 bytes .../epy/uml_class_diagram_for_googleap_45.gif | Bin 5280 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_5.gif | Bin 3376 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_6.gif | Bin 1383 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_7.gif | Bin 4940 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_8.gif | Bin 2542 -> 0 bytes docs/epy/uml_class_diagram_for_googleap_9.gif | Bin 4940 -> 0 bytes docs/media.md | 6 +- docs/mocks.md | 4 +- docs/pydoc/ajax.js | 50 + docs/pydoc/all-documents.html | 3675 +++++++++++++++++ docs/pydoc/apidocs.css | 1166 ++++++ docs/pydoc/bootstrap.min.css | 5 + docs/pydoc/classIndex.html | 167 + docs/pydoc/extra.css | 0 docs/pydoc/fonts/info.svg | 4 + docs/pydoc/fonts/x-circle.svg | 4 + docs/pydoc/fullsearchindex.json | 1 + docs/pydoc/googleapiclient._auth.html | 812 ++++ docs/pydoc/googleapiclient._helpers.html | 972 +++++ .../googleapiclient.channel.Channel.html | 892 ++++ .../googleapiclient.channel.Notification.html | 621 +++ docs/pydoc/googleapiclient.channel.html | 915 ++++ ...iclient.discovery.APICoreVersionError.html | 765 ++++ .../googleapiclient.discovery.Resource.html | 1659 ++++++++ ...nt.discovery.ResourceMethodParameters.html | 1155 ++++++ ...leapiclient.discovery._BytesGenerator.html | 719 ++++ docs/pydoc/googleapiclient.discovery.html | 2346 +++++++++++ ...covery_cache.appengine_memcache.Cache.html | 496 +++ ...nt.discovery_cache.appengine_memcache.html | 501 +++ ...eapiclient.discovery_cache.base.Cache.html | 379 ++ .../googleapiclient.discovery_cache.base.html | 381 ++ ...ient.discovery_cache.file_cache.Cache.html | 568 +++ ...eapiclient.discovery_cache.file_cache.html | 626 +++ .../googleapiclient.discovery_cache.html | 663 +++ .../googleapiclient.errors.BatchError.html | 706 ++++ docs/pydoc/googleapiclient.errors.Error.html | 426 ++ .../googleapiclient.errors.HttpError.html | 787 ++++ ...piclient.errors.InvalidChunkSizeError.html | 426 ++ ...ogleapiclient.errors.InvalidJsonError.html | 426 ++ ...lient.errors.InvalidNotificationError.html | 426 ++ ...apiclient.errors.MediaUploadSizeError.html | 426 ++ ...apiclient.errors.ResumableUploadError.html | 576 +++ ...ient.errors.UnacceptableMimeTypeError.html | 426 ++ ...eapiclient.errors.UnexpectedBodyError.html | 472 +++ ...piclient.errors.UnexpectedMethodError.html | 472 +++ ...client.errors.UnknownApiNameOrVersion.html | 426 ++ ...oogleapiclient.errors.UnknownFileType.html | 426 ++ ...oogleapiclient.errors.UnknownLinkType.html | 426 ++ docs/pydoc/googleapiclient.errors.html | 655 +++ docs/pydoc/googleapiclient.html | 1 + ...googleapiclient.http.BatchHttpRequest.html | 1425 +++++++ docs/pydoc/googleapiclient.http.HttpMock.html | 912 ++++ ...googleapiclient.http.HttpMockSequence.html | 775 ++++ .../googleapiclient.http.HttpRequest.html | 1536 +++++++ .../googleapiclient.http.HttpRequestMock.html | 765 ++++ ...eapiclient.http.MediaDownloadProgress.html | 723 ++++ .../googleapiclient.http.MediaFileUpload.html | 1046 +++++ ...gleapiclient.http.MediaInMemoryUpload.html | 859 ++++ ...gleapiclient.http.MediaIoBaseDownload.html | 1065 +++++ ...oogleapiclient.http.MediaIoBaseUpload.html | 1211 ++++++ .../googleapiclient.http.MediaUpload.html | 1019 +++++ ...gleapiclient.http.MediaUploadProgress.html | 724 ++++ ...ogleapiclient.http.RequestMockBuilder.html | 751 ++++ .../googleapiclient.http._StreamSlice.html | 771 ++++ docs/pydoc/googleapiclient.http.html | 1188 ++++++ docs/pydoc/googleapiclient.mimeparse.html | 936 +++++ .../googleapiclient.model.BaseModel.html | 891 ++++ .../googleapiclient.model.JsonModel.html | 827 ++++ .../googleapiclient.model.MediaModel.html | 759 ++++ docs/pydoc/googleapiclient.model.Model.html | 512 +++ ...leapiclient.model.ProtocolBufferModel.html | 831 ++++ .../pydoc/googleapiclient.model.RawModel.html | 759 ++++ docs/pydoc/googleapiclient.model.html | 753 ++++ docs/pydoc/googleapiclient.sample_tools.html | 504 +++ .../pydoc/googleapiclient.schema.Schemas.html | 668 +++ ...oogleapiclient.schema._SchemaToStruct.html | 893 ++++ docs/pydoc/googleapiclient.schema.html | 514 +++ docs/pydoc/googleapiclient.version.html | 439 ++ docs/pydoc/index.html | 428 ++ docs/pydoc/lunr.js | 3475 ++++++++++++++++ docs/pydoc/moduleIndex.html | 166 + docs/pydoc/nameIndex.html | 383 ++ docs/pydoc/objects.inv | Bin 0 -> 5339 bytes docs/pydoc/pydoctor.js | 35 + docs/pydoc/search.js | 478 +++ docs/pydoc/searchindex.json | 1 + docs/pydoc/searchlib.js | 370 ++ docs/pydoc/sidebartoggle.js | 69 + docs/pydoc/undoccedSummary.html | 167 + docs/start.md | 6 +- 235 files changed, 56685 insertions(+), 34024 deletions(-) delete mode 100644 docs/epy/api-objects.txt delete mode 100644 docs/epy/class-tree.html delete mode 100644 docs/epy/crarr.png delete mode 100644 docs/epy/epydoc.css delete mode 100644 docs/epy/epydoc.js delete mode 100644 docs/epy/frames.html delete mode 100644 docs/epy/googleapiclient-module.html delete mode 100644 docs/epy/googleapiclient-pysrc.html delete mode 100644 docs/epy/googleapiclient.NullHandler-class.html delete mode 100644 docs/epy/googleapiclient._auth-module.html delete mode 100644 docs/epy/googleapiclient._auth-pysrc.html delete mode 100644 docs/epy/googleapiclient._helpers-module.html delete mode 100644 docs/epy/googleapiclient._helpers-pysrc.html delete mode 100644 docs/epy/googleapiclient.channel-module.html delete mode 100644 docs/epy/googleapiclient.channel-pysrc.html delete mode 100644 docs/epy/googleapiclient.channel.Channel-class.html delete mode 100644 docs/epy/googleapiclient.channel.Notification-class.html delete mode 100644 docs/epy/googleapiclient.discovery-module.html delete mode 100644 docs/epy/googleapiclient.discovery-pysrc.html delete mode 100644 docs/epy/googleapiclient.discovery.Resource-class.html delete mode 100644 docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html delete mode 100644 docs/epy/googleapiclient.discovery._BytesGenerator-class.html delete mode 100644 docs/epy/googleapiclient.discovery_cache-module.html delete mode 100644 docs/epy/googleapiclient.discovery_cache-pysrc.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.base-module.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.base-pysrc.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.base.Cache-class.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.file_cache-module.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html delete mode 100644 docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html delete mode 100644 docs/epy/googleapiclient.errors-module.html delete mode 100644 docs/epy/googleapiclient.errors-pysrc.html delete mode 100644 docs/epy/googleapiclient.errors.BatchError-class.html delete mode 100644 docs/epy/googleapiclient.errors.Error-class.html delete mode 100644 docs/epy/googleapiclient.errors.HttpError-class.html delete mode 100644 docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html delete mode 100644 docs/epy/googleapiclient.errors.InvalidJsonError-class.html delete mode 100644 docs/epy/googleapiclient.errors.InvalidNotificationError-class.html delete mode 100644 docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html delete mode 100644 docs/epy/googleapiclient.errors.ResumableUploadError-class.html delete mode 100644 docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html delete mode 100644 docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html delete mode 100644 docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html delete mode 100644 docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html delete mode 100644 docs/epy/googleapiclient.errors.UnknownFileType-class.html delete mode 100644 docs/epy/googleapiclient.errors.UnknownLinkType-class.html delete mode 100644 docs/epy/googleapiclient.http-module.html delete mode 100644 docs/epy/googleapiclient.http-pysrc.html delete mode 100644 docs/epy/googleapiclient.http.BatchHttpRequest-class.html delete mode 100644 docs/epy/googleapiclient.http.HttpMock-class.html delete mode 100644 docs/epy/googleapiclient.http.HttpMockSequence-class.html delete mode 100644 docs/epy/googleapiclient.http.HttpRequest-class.html delete mode 100644 docs/epy/googleapiclient.http.HttpRequestMock-class.html delete mode 100644 docs/epy/googleapiclient.http.MediaDownloadProgress-class.html delete mode 100644 docs/epy/googleapiclient.http.MediaFileUpload-class.html delete mode 100644 docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html delete mode 100644 docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html delete mode 100644 docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html delete mode 100644 docs/epy/googleapiclient.http.MediaUpload-class.html delete mode 100644 docs/epy/googleapiclient.http.MediaUploadProgress-class.html delete mode 100644 docs/epy/googleapiclient.http.RequestMockBuilder-class.html delete mode 100644 docs/epy/googleapiclient.http._StreamSlice-class.html delete mode 100644 docs/epy/googleapiclient.mimeparse-module.html delete mode 100644 docs/epy/googleapiclient.mimeparse-pysrc.html delete mode 100644 docs/epy/googleapiclient.model-module.html delete mode 100644 docs/epy/googleapiclient.model-pysrc.html delete mode 100644 docs/epy/googleapiclient.model.BaseModel-class.html delete mode 100644 docs/epy/googleapiclient.model.JsonModel-class.html delete mode 100644 docs/epy/googleapiclient.model.MediaModel-class.html delete mode 100644 docs/epy/googleapiclient.model.Model-class.html delete mode 100644 docs/epy/googleapiclient.model.ProtocolBufferModel-class.html delete mode 100644 docs/epy/googleapiclient.model.RawModel-class.html delete mode 100644 docs/epy/googleapiclient.sample_tools-module.html delete mode 100644 docs/epy/googleapiclient.sample_tools-pysrc.html delete mode 100644 docs/epy/googleapiclient.schema-module.html delete mode 100644 docs/epy/googleapiclient.schema-pysrc.html delete mode 100644 docs/epy/googleapiclient.schema.Schemas-class.html delete mode 100644 docs/epy/googleapiclient.schema._SchemaToStruct-class.html delete mode 100644 docs/epy/help.html delete mode 100644 docs/epy/identifier-index.html delete mode 100644 docs/epy/index.html delete mode 100644 docs/epy/module-tree.html delete mode 100644 docs/epy/redirect.html delete mode 100644 docs/epy/toc-everything.html delete mode 100644 docs/epy/toc-googleapiclient-module.html delete mode 100644 docs/epy/toc-googleapiclient._auth-module.html delete mode 100644 docs/epy/toc-googleapiclient._helpers-module.html delete mode 100644 docs/epy/toc-googleapiclient.channel-module.html delete mode 100644 docs/epy/toc-googleapiclient.discovery-module.html delete mode 100644 docs/epy/toc-googleapiclient.discovery_cache-module.html delete mode 100644 docs/epy/toc-googleapiclient.discovery_cache.appengine_memcache-module.html delete mode 100644 docs/epy/toc-googleapiclient.discovery_cache.base-module.html delete mode 100644 docs/epy/toc-googleapiclient.discovery_cache.file_cache-module.html delete mode 100644 docs/epy/toc-googleapiclient.errors-module.html delete mode 100644 docs/epy/toc-googleapiclient.http-module.html delete mode 100644 docs/epy/toc-googleapiclient.mimeparse-module.html delete mode 100644 docs/epy/toc-googleapiclient.model-module.html delete mode 100644 docs/epy/toc-googleapiclient.sample_tools-module.html delete mode 100644 docs/epy/toc-googleapiclient.schema-module.html delete mode 100644 docs/epy/toc.html delete mode 100644 docs/epy/uml_class_diagram_for_googleap.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_10.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_11.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_12.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_13.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_14.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_15.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_16.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_17.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_18.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_19.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_2.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_20.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_21.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_22.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_23.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_24.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_25.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_26.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_27.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_28.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_29.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_3.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_30.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_31.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_32.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_33.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_34.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_35.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_36.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_37.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_38.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_39.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_4.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_40.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_41.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_42.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_43.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_44.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_45.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_5.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_6.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_7.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_8.gif delete mode 100644 docs/epy/uml_class_diagram_for_googleap_9.gif create mode 100644 docs/pydoc/ajax.js create mode 100644 docs/pydoc/all-documents.html create mode 100644 docs/pydoc/apidocs.css create mode 100644 docs/pydoc/bootstrap.min.css create mode 100644 docs/pydoc/classIndex.html create mode 100644 docs/pydoc/extra.css create mode 100644 docs/pydoc/fonts/info.svg create mode 100644 docs/pydoc/fonts/x-circle.svg create mode 100644 docs/pydoc/fullsearchindex.json create mode 100644 docs/pydoc/googleapiclient._auth.html create mode 100644 docs/pydoc/googleapiclient._helpers.html create mode 100644 docs/pydoc/googleapiclient.channel.Channel.html create mode 100644 docs/pydoc/googleapiclient.channel.Notification.html create mode 100644 docs/pydoc/googleapiclient.channel.html create mode 100644 docs/pydoc/googleapiclient.discovery.APICoreVersionError.html create mode 100644 docs/pydoc/googleapiclient.discovery.Resource.html create mode 100644 docs/pydoc/googleapiclient.discovery.ResourceMethodParameters.html create mode 100644 docs/pydoc/googleapiclient.discovery._BytesGenerator.html create mode 100644 docs/pydoc/googleapiclient.discovery.html create mode 100644 docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.Cache.html create mode 100644 docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.html create mode 100644 docs/pydoc/googleapiclient.discovery_cache.base.Cache.html create mode 100644 docs/pydoc/googleapiclient.discovery_cache.base.html create mode 100644 docs/pydoc/googleapiclient.discovery_cache.file_cache.Cache.html create mode 100644 docs/pydoc/googleapiclient.discovery_cache.file_cache.html create mode 100644 docs/pydoc/googleapiclient.discovery_cache.html create mode 100644 docs/pydoc/googleapiclient.errors.BatchError.html create mode 100644 docs/pydoc/googleapiclient.errors.Error.html create mode 100644 docs/pydoc/googleapiclient.errors.HttpError.html create mode 100644 docs/pydoc/googleapiclient.errors.InvalidChunkSizeError.html create mode 100644 docs/pydoc/googleapiclient.errors.InvalidJsonError.html create mode 100644 docs/pydoc/googleapiclient.errors.InvalidNotificationError.html create mode 100644 docs/pydoc/googleapiclient.errors.MediaUploadSizeError.html create mode 100644 docs/pydoc/googleapiclient.errors.ResumableUploadError.html create mode 100644 docs/pydoc/googleapiclient.errors.UnacceptableMimeTypeError.html create mode 100644 docs/pydoc/googleapiclient.errors.UnexpectedBodyError.html create mode 100644 docs/pydoc/googleapiclient.errors.UnexpectedMethodError.html create mode 100644 docs/pydoc/googleapiclient.errors.UnknownApiNameOrVersion.html create mode 100644 docs/pydoc/googleapiclient.errors.UnknownFileType.html create mode 100644 docs/pydoc/googleapiclient.errors.UnknownLinkType.html create mode 100644 docs/pydoc/googleapiclient.errors.html create mode 120000 docs/pydoc/googleapiclient.html create mode 100644 docs/pydoc/googleapiclient.http.BatchHttpRequest.html create mode 100644 docs/pydoc/googleapiclient.http.HttpMock.html create mode 100644 docs/pydoc/googleapiclient.http.HttpMockSequence.html create mode 100644 docs/pydoc/googleapiclient.http.HttpRequest.html create mode 100644 docs/pydoc/googleapiclient.http.HttpRequestMock.html create mode 100644 docs/pydoc/googleapiclient.http.MediaDownloadProgress.html create mode 100644 docs/pydoc/googleapiclient.http.MediaFileUpload.html create mode 100644 docs/pydoc/googleapiclient.http.MediaInMemoryUpload.html create mode 100644 docs/pydoc/googleapiclient.http.MediaIoBaseDownload.html create mode 100644 docs/pydoc/googleapiclient.http.MediaIoBaseUpload.html create mode 100644 docs/pydoc/googleapiclient.http.MediaUpload.html create mode 100644 docs/pydoc/googleapiclient.http.MediaUploadProgress.html create mode 100644 docs/pydoc/googleapiclient.http.RequestMockBuilder.html create mode 100644 docs/pydoc/googleapiclient.http._StreamSlice.html create mode 100644 docs/pydoc/googleapiclient.http.html create mode 100644 docs/pydoc/googleapiclient.mimeparse.html create mode 100644 docs/pydoc/googleapiclient.model.BaseModel.html create mode 100644 docs/pydoc/googleapiclient.model.JsonModel.html create mode 100644 docs/pydoc/googleapiclient.model.MediaModel.html create mode 100644 docs/pydoc/googleapiclient.model.Model.html create mode 100644 docs/pydoc/googleapiclient.model.ProtocolBufferModel.html create mode 100644 docs/pydoc/googleapiclient.model.RawModel.html create mode 100644 docs/pydoc/googleapiclient.model.html create mode 100644 docs/pydoc/googleapiclient.sample_tools.html create mode 100644 docs/pydoc/googleapiclient.schema.Schemas.html create mode 100644 docs/pydoc/googleapiclient.schema._SchemaToStruct.html create mode 100644 docs/pydoc/googleapiclient.schema.html create mode 100644 docs/pydoc/googleapiclient.version.html create mode 100644 docs/pydoc/index.html create mode 100644 docs/pydoc/lunr.js create mode 100644 docs/pydoc/moduleIndex.html create mode 100644 docs/pydoc/nameIndex.html create mode 100644 docs/pydoc/objects.inv create mode 100644 docs/pydoc/pydoctor.js create mode 100644 docs/pydoc/search.js create mode 100644 docs/pydoc/searchindex.json create mode 100644 docs/pydoc/searchlib.js create mode 100644 docs/pydoc/sidebartoggle.js create mode 100644 docs/pydoc/undoccedSummary.html diff --git a/docs/README.md b/docs/README.md index b583275f7a7..4e878a841d3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -34,5 +34,5 @@ Learn how to use the Google API Python Client with these guides: ### Reference Documentation -- Reference documentation for the core library [googleapiclient](http://googleapis.github.io/google-api-python-client/docs/epy/index.html). +- Reference documentation for the core library [googleapiclient](http://googleapis.github.io/google-api-python-client/docs/pydoc/index.html). - [Library reference documentation by API](dyn/index.md). diff --git a/docs/batch.md b/docs/batch.md index 260c128d628..33ed595d8b5 100644 --- a/docs/batch.md +++ b/docs/batch.md @@ -19,7 +19,7 @@ object in a batch request. ## Details You create batch requests by calling `new_batch_http_request()` on your service object, which returns a -[BatchHttpRequest](https://google.github.io/google-api-python-client/docs/epy/googleapiclient.http.BatchHttpRequest-class.html) +[BatchHttpRequest](https://google.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.BatchHttpRequest-class.html) object, and then calling `add()` for each request you want to execute. You may pass in a callback with each request that is called with the response to that request. The callback function arguments are: @@ -39,7 +39,7 @@ You can also supply a single callback that gets called for each response:
See below
The -[add()](https://google.github.io/google-api-python-client/docs/epy/googleapiclient.http.BatchHttpRequest-class.html#add) +[add()](https://google.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.BatchHttpRequest-class.html#add) method also allows you to supply a request_id parameter for each request. These IDs are provided to the callbacks. If you don't supply one, the library creates one for you. diff --git a/docs/build b/docs/build index 4792292f364..6cb1555c6ff 100755 --- a/docs/build +++ b/docs/build @@ -25,4 +25,4 @@ export GOOGLE_APPENGINE=$HOME/projects/google_appengine/ export DJANGO_SETTINGS_MODULE=fakesettings export PYTHONPATH=$(pwd)/..:$GOOGLE_APPENGINE -epydoc --output epy --graph all --parse-only --docformat plaintext googleapiclient +pydoctor --html-output=pydoc --docformat=plaintext googleapiclient diff --git a/docs/epy/api-objects.txt b/docs/epy/api-objects.txt deleted file mode 100644 index 5e06b2065c0..00000000000 --- a/docs/epy/api-objects.txt +++ /dev/null @@ -1,392 +0,0 @@ -googleapiclient googleapiclient-module.html -googleapiclient.__package__ googleapiclient-module.html#__package__ -googleapiclient._auth googleapiclient._auth-module.html -googleapiclient._auth.apply_credentials googleapiclient._auth-module.html#apply_credentials -googleapiclient._auth.HAS_GOOGLE_AUTH googleapiclient._auth-module.html#HAS_GOOGLE_AUTH -googleapiclient._auth.google_auth_httplib2 googleapiclient._auth-module.html#google_auth_httplib2 -googleapiclient._auth.__package__ googleapiclient._auth-module.html#__package__ -googleapiclient._auth.is_valid googleapiclient._auth-module.html#is_valid -googleapiclient._auth.default_credentials googleapiclient._auth-module.html#default_credentials -googleapiclient._auth.get_credentials_from_http googleapiclient._auth-module.html#get_credentials_from_http -googleapiclient._auth.authorized_http googleapiclient._auth-module.html#authorized_http -googleapiclient._auth.with_scopes googleapiclient._auth-module.html#with_scopes -googleapiclient._auth.HAS_OAUTH2CLIENT googleapiclient._auth-module.html#HAS_OAUTH2CLIENT -googleapiclient._auth.refresh_credentials googleapiclient._auth-module.html#refresh_credentials -googleapiclient._auth.credentials_from_file googleapiclient._auth-module.html#credentials_from_file -googleapiclient._helpers googleapiclient._helpers-module.html -googleapiclient._helpers.parse_unique_urlencoded googleapiclient._helpers-module.html#parse_unique_urlencoded -googleapiclient._helpers._add_query_parameter googleapiclient._helpers-module.html#_add_query_parameter -googleapiclient._helpers._SYM_LINK_MESSAGE googleapiclient._helpers-module.html#_SYM_LINK_MESSAGE -googleapiclient._helpers.positional googleapiclient._helpers-module.html#positional -googleapiclient._helpers._IS_DIR_MESSAGE googleapiclient._helpers-module.html#_IS_DIR_MESSAGE -googleapiclient._helpers.__package__ googleapiclient._helpers-module.html#__package__ -googleapiclient._helpers.POSITIONAL_EXCEPTION googleapiclient._helpers-module.html#POSITIONAL_EXCEPTION -googleapiclient._helpers.POSITIONAL_IGNORE googleapiclient._helpers-module.html#POSITIONAL_IGNORE -googleapiclient._helpers._MISSING_FILE_MESSAGE googleapiclient._helpers-module.html#_MISSING_FILE_MESSAGE -googleapiclient._helpers.POSITIONAL_SET googleapiclient._helpers-module.html#POSITIONAL_SET -googleapiclient._helpers.update_query_params googleapiclient._helpers-module.html#update_query_params -googleapiclient._helpers.logger googleapiclient._helpers-module.html#logger -googleapiclient._helpers.positional_parameters_enforcement googleapiclient._helpers-module.html#positional_parameters_enforcement -googleapiclient._helpers.POSITIONAL_WARNING googleapiclient._helpers-module.html#POSITIONAL_WARNING -googleapiclient.channel googleapiclient.channel-module.html -googleapiclient.channel.notification_from_headers googleapiclient.channel-module.html#notification_from_headers -googleapiclient.channel._upper_header_keys googleapiclient.channel-module.html#_upper_header_keys -googleapiclient.channel.X_GOOG_RESOURCE_STATE googleapiclient.channel-module.html#X_GOOG_RESOURCE_STATE -googleapiclient.channel.__package__ googleapiclient.channel-module.html#__package__ -googleapiclient.channel.CHANNEL_PARAMS googleapiclient.channel-module.html#CHANNEL_PARAMS -googleapiclient.channel.X_GOOG_CHANNEL_ID googleapiclient.channel-module.html#X_GOOG_CHANNEL_ID -googleapiclient.channel.EPOCH googleapiclient.channel-module.html#EPOCH -googleapiclient.channel.X_GOOG_RESOURCE_URI googleapiclient.channel-module.html#X_GOOG_RESOURCE_URI -googleapiclient.channel.new_webhook_channel googleapiclient.channel-module.html#new_webhook_channel -googleapiclient.channel.X_GOOG_MESSAGE_NUMBER googleapiclient.channel-module.html#X_GOOG_MESSAGE_NUMBER -googleapiclient.channel.X_GOOG_RESOURCE_ID googleapiclient.channel-module.html#X_GOOG_RESOURCE_ID -googleapiclient.discovery googleapiclient.discovery-module.html -googleapiclient.discovery._retrieve_discovery_doc googleapiclient.discovery-module.html#_retrieve_discovery_doc -googleapiclient.discovery.logger googleapiclient.discovery-module.html#logger -googleapiclient.discovery._fix_up_method_description googleapiclient.discovery-module.html#_fix_up_method_description -googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE googleapiclient.discovery-module.html#MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE -googleapiclient.discovery._media_path_url_from_info googleapiclient.discovery-module.html#_media_path_url_from_info -googleapiclient.discovery.URITEMPLATE googleapiclient.discovery-module.html#URITEMPLATE -googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT googleapiclient.discovery-module.html#GOOGLE_API_USE_MTLS_ENDPOINT -googleapiclient.discovery.V1_DISCOVERY_URI googleapiclient.discovery-module.html#V1_DISCOVERY_URI -googleapiclient.discovery.createNextMethod googleapiclient.discovery-module.html#createNextMethod -googleapiclient.discovery.build_from_document googleapiclient.discovery-module.html#build_from_document -googleapiclient.discovery._findPageTokenName googleapiclient.discovery-module.html#_findPageTokenName -googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE googleapiclient.discovery-module.html#GOOGLE_API_USE_CLIENT_CERTIFICATE -googleapiclient.discovery.fix_method_name googleapiclient.discovery-module.html#fix_method_name -googleapiclient.discovery.DISCOVERY_URI googleapiclient.discovery-module.html#DISCOVERY_URI -googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE googleapiclient.discovery-module.html#MEDIA_BODY_PARAMETER_DEFAULT_VALUE -googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS googleapiclient.discovery-module.html#_MEDIA_SIZE_BIT_SHIFTS -googleapiclient.discovery._fix_up_parameters googleapiclient.discovery-module.html#_fix_up_parameters -googleapiclient.discovery._cast googleapiclient.discovery-module.html#_cast -googleapiclient.discovery._fix_up_media_upload googleapiclient.discovery-module.html#_fix_up_media_upload -googleapiclient.discovery._discovery_service_uri_options googleapiclient.discovery-module.html#_discovery_service_uri_options -googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE googleapiclient.discovery-module.html#STACK_QUERY_PARAMETER_DEFAULT_VALUE -googleapiclient.discovery.createMethod googleapiclient.discovery-module.html#createMethod -googleapiclient.discovery.key2param googleapiclient.discovery-module.html#key2param -googleapiclient.discovery.DEFAULT_METHOD_DOC googleapiclient.discovery-module.html#DEFAULT_METHOD_DOC -googleapiclient.discovery.V2_DISCOVERY_URI googleapiclient.discovery-module.html#V2_DISCOVERY_URI -googleapiclient.discovery.VARNAME googleapiclient.discovery-module.html#VARNAME -googleapiclient.discovery.HTTP_PAYLOAD_METHODS googleapiclient.discovery-module.html#HTTP_PAYLOAD_METHODS -googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE googleapiclient.discovery-module.html#BODY_PARAMETER_DEFAULT_VALUE -googleapiclient.discovery.build googleapiclient.discovery-module.html#build -googleapiclient.discovery._methodProperties googleapiclient.discovery-module.html#_methodProperties -googleapiclient.discovery._media_size_to_long googleapiclient.discovery-module.html#_media_size_to_long -googleapiclient.discovery._PAGE_TOKEN_NAMES googleapiclient.discovery-module.html#_PAGE_TOKEN_NAMES -googleapiclient.discovery._urljoin googleapiclient.discovery-module.html#_urljoin -googleapiclient.discovery.RESERVED_WORDS googleapiclient.discovery-module.html#RESERVED_WORDS -googleapiclient.discovery.google_auth_httplib2 googleapiclient.discovery-module.html#google_auth_httplib2 -googleapiclient.discovery.STACK_QUERY_PARAMETERS googleapiclient.discovery-module.html#STACK_QUERY_PARAMETERS -googleapiclient.discovery_cache googleapiclient.discovery_cache-module.html -googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE googleapiclient.discovery_cache-module.html#DISCOVERY_DOC_MAX_AGE -googleapiclient.discovery_cache.autodetect googleapiclient.discovery_cache-module.html#autodetect -googleapiclient.discovery_cache.LOGGER googleapiclient.discovery_cache-module.html#LOGGER -googleapiclient.discovery_cache.__package__ googleapiclient.discovery_cache-module.html#__package__ -googleapiclient.discovery_cache.appengine_memcache googleapiclient.discovery_cache.appengine_memcache-module.html -googleapiclient.discovery_cache.appengine_memcache.cache googleapiclient.discovery_cache.appengine_memcache-module.html#cache -googleapiclient.discovery_cache.appengine_memcache.NAMESPACE googleapiclient.discovery_cache.appengine_memcache-module.html#NAMESPACE -googleapiclient.discovery_cache.appengine_memcache.LOGGER googleapiclient.discovery_cache.appengine_memcache-module.html#LOGGER -googleapiclient.discovery_cache.base googleapiclient.discovery_cache.base-module.html -googleapiclient.discovery_cache.base.__package__ googleapiclient.discovery_cache.base-module.html#__package__ -googleapiclient.discovery_cache.file_cache googleapiclient.discovery_cache.file_cache-module.html -googleapiclient.discovery_cache.file_cache._to_timestamp googleapiclient.discovery_cache.file_cache-module.html#_to_timestamp -googleapiclient.discovery_cache.file_cache._read_or_initialize_cache googleapiclient.discovery_cache.file_cache-module.html#_read_or_initialize_cache -googleapiclient.discovery_cache.file_cache.cache googleapiclient.discovery_cache.file_cache-module.html#cache -googleapiclient.discovery_cache.file_cache.EPOCH googleapiclient.discovery_cache.file_cache-module.html#EPOCH -googleapiclient.discovery_cache.file_cache.LOGGER googleapiclient.discovery_cache.file_cache-module.html#LOGGER -googleapiclient.discovery_cache.file_cache.FILENAME googleapiclient.discovery_cache.file_cache-module.html#FILENAME -googleapiclient.errors googleapiclient.errors-module.html -googleapiclient.errors.__package__ googleapiclient.errors-module.html#__package__ -googleapiclient.http googleapiclient.http-module.html -googleapiclient.http.MAX_BATCH_LIMIT googleapiclient.http-module.html#MAX_BATCH_LIMIT -googleapiclient.http._TOO_MANY_REQUESTS googleapiclient.http-module.html#_TOO_MANY_REQUESTS -googleapiclient.http.set_user_agent googleapiclient.http-module.html#set_user_agent -googleapiclient.http.tunnel_patch googleapiclient.http-module.html#tunnel_patch -googleapiclient.http.ConnectionError googleapiclient.http-module.html#ConnectionError -googleapiclient.http.DEFAULT_CHUNK_SIZE googleapiclient.http-module.html#DEFAULT_CHUNK_SIZE -googleapiclient.http.__package__ googleapiclient.http-module.html#__package__ -googleapiclient.http.LOGGER googleapiclient.http-module.html#LOGGER -googleapiclient.http.MAX_URI_LENGTH googleapiclient.http-module.html#MAX_URI_LENGTH -googleapiclient.http.build_http googleapiclient.http-module.html#build_http -googleapiclient.http._retry_request googleapiclient.http-module.html#_retry_request -googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC googleapiclient.http-module.html#DEFAULT_HTTP_TIMEOUT_SEC -googleapiclient.http._LEGACY_BATCH_URI googleapiclient.http-module.html#_LEGACY_BATCH_URI -googleapiclient.http._should_retry_response googleapiclient.http-module.html#_should_retry_response -googleapiclient.mimeparse googleapiclient.mimeparse-module.html -googleapiclient.mimeparse.__credits__ googleapiclient.mimeparse-module.html#__credits__ -googleapiclient.mimeparse.fitness_and_quality_parsed googleapiclient.mimeparse-module.html#fitness_and_quality_parsed -googleapiclient.mimeparse.parse_media_range googleapiclient.mimeparse-module.html#parse_media_range -googleapiclient.mimeparse.best_match googleapiclient.mimeparse-module.html#best_match -googleapiclient.mimeparse.quality_parsed googleapiclient.mimeparse-module.html#quality_parsed -googleapiclient.mimeparse.__package__ googleapiclient.mimeparse-module.html#__package__ -googleapiclient.mimeparse.__email__ googleapiclient.mimeparse-module.html#__email__ -googleapiclient.mimeparse.parse_mime_type googleapiclient.mimeparse-module.html#parse_mime_type -googleapiclient.mimeparse.quality googleapiclient.mimeparse-module.html#quality -googleapiclient.mimeparse._filter_blank googleapiclient.mimeparse-module.html#_filter_blank -googleapiclient.model googleapiclient.model-module.html -googleapiclient.model._abstract googleapiclient.model-module.html#_abstract -googleapiclient.model.dump_request_response googleapiclient.model-module.html#dump_request_response -googleapiclient.model._LIBRARY_VERSION googleapiclient.model-module.html#_LIBRARY_VERSION -googleapiclient.model._PY_VERSION googleapiclient.model-module.html#_PY_VERSION -googleapiclient.model.__package__ googleapiclient.model-module.html#__package__ -googleapiclient.model.LOGGER googleapiclient.model-module.html#LOGGER -googleapiclient.model.makepatch googleapiclient.model-module.html#makepatch -googleapiclient.sample_tools googleapiclient.sample_tools-module.html -googleapiclient.sample_tools.init googleapiclient.sample_tools-module.html#init -googleapiclient.schema googleapiclient.schema-module.html -googleapiclient.schema.__package__ googleapiclient.schema-module.html#__package__ -googleapiclient.channel.Channel googleapiclient.channel.Channel-class.html -googleapiclient.channel.Channel.body googleapiclient.channel.Channel-class.html#body -googleapiclient.channel.Channel.update googleapiclient.channel.Channel-class.html#update -googleapiclient.channel.Channel.__init__ googleapiclient.channel.Channel-class.html#__init__ -googleapiclient.channel.Notification googleapiclient.channel.Notification-class.html -googleapiclient.channel.Notification.__init__ googleapiclient.channel.Notification-class.html#__init__ -googleapiclient.discovery.Resource googleapiclient.discovery.Resource-class.html -googleapiclient.discovery.Resource._add_next_methods googleapiclient.discovery.Resource-class.html#_add_next_methods -googleapiclient.discovery.Resource.close googleapiclient.discovery.Resource-class.html#close -googleapiclient.discovery.Resource._add_basic_methods googleapiclient.discovery.Resource-class.html#_add_basic_methods -googleapiclient.discovery.Resource.__enter__ googleapiclient.discovery.Resource-class.html#__enter__ -googleapiclient.discovery.Resource.__init__ googleapiclient.discovery.Resource-class.html#__init__ -googleapiclient.discovery.Resource._set_service_methods googleapiclient.discovery.Resource-class.html#_set_service_methods -googleapiclient.discovery.Resource.__getstate__ googleapiclient.discovery.Resource-class.html#__getstate__ -googleapiclient.discovery.Resource.__exit__ googleapiclient.discovery.Resource-class.html#__exit__ -googleapiclient.discovery.Resource.__setstate__ googleapiclient.discovery.Resource-class.html#__setstate__ -googleapiclient.discovery.Resource._set_dynamic_attr googleapiclient.discovery.Resource-class.html#_set_dynamic_attr -googleapiclient.discovery.Resource._add_nested_resources googleapiclient.discovery.Resource-class.html#_add_nested_resources -googleapiclient.discovery.ResourceMethodParameters googleapiclient.discovery.ResourceMethodParameters-class.html -googleapiclient.discovery.ResourceMethodParameters.set_parameters googleapiclient.discovery.ResourceMethodParameters-class.html#set_parameters -googleapiclient.discovery.ResourceMethodParameters.__init__ googleapiclient.discovery.ResourceMethodParameters-class.html#__init__ -googleapiclient.discovery._BytesGenerator googleapiclient.discovery._BytesGenerator-class.html -googleapiclient.discovery._BytesGenerator._write_lines googleapiclient.discovery._BytesGenerator-class.html#_write_lines -googleapiclient.discovery_cache.appengine_memcache.Cache googleapiclient.discovery_cache.appengine_memcache.Cache-class.html -googleapiclient.discovery_cache.appengine_memcache.Cache.set googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#set -googleapiclient.discovery_cache.base.Cache._abc_negative_cache googleapiclient.discovery_cache.base.Cache-class.html#_abc_negative_cache -googleapiclient.discovery_cache.appengine_memcache.Cache.__init__ googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#__init__ -googleapiclient.discovery_cache.base.Cache._abc_cache googleapiclient.discovery_cache.base.Cache-class.html#_abc_cache -googleapiclient.discovery_cache.base.Cache.__abstractmethods__ googleapiclient.discovery_cache.base.Cache-class.html#__abstractmethods__ -googleapiclient.discovery_cache.appengine_memcache.Cache.get googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#get -googleapiclient.discovery_cache.base.Cache._abc_negative_cache_version googleapiclient.discovery_cache.base.Cache-class.html#_abc_negative_cache_version -googleapiclient.discovery_cache.base.Cache._abc_registry googleapiclient.discovery_cache.base.Cache-class.html#_abc_registry -googleapiclient.discovery_cache.base.Cache googleapiclient.discovery_cache.base.Cache-class.html -googleapiclient.discovery_cache.base.Cache.set googleapiclient.discovery_cache.base.Cache-class.html#set -googleapiclient.discovery_cache.base.Cache._abc_negative_cache googleapiclient.discovery_cache.base.Cache-class.html#_abc_negative_cache -googleapiclient.discovery_cache.base.Cache._abc_cache googleapiclient.discovery_cache.base.Cache-class.html#_abc_cache -googleapiclient.discovery_cache.base.Cache.__abstractmethods__ googleapiclient.discovery_cache.base.Cache-class.html#__abstractmethods__ -googleapiclient.discovery_cache.base.Cache.get googleapiclient.discovery_cache.base.Cache-class.html#get -googleapiclient.discovery_cache.base.Cache._abc_negative_cache_version googleapiclient.discovery_cache.base.Cache-class.html#_abc_negative_cache_version -googleapiclient.discovery_cache.base.Cache._abc_registry googleapiclient.discovery_cache.base.Cache-class.html#_abc_registry -googleapiclient.discovery_cache.file_cache.Cache googleapiclient.discovery_cache.file_cache.Cache-class.html -googleapiclient.discovery_cache.file_cache.Cache.set googleapiclient.discovery_cache.file_cache.Cache-class.html#set -googleapiclient.discovery_cache.base.Cache.__metaclass__ -googleapiclient.discovery_cache.base.Cache._abc_negative_cache googleapiclient.discovery_cache.base.Cache-class.html#_abc_negative_cache -googleapiclient.discovery_cache.file_cache.Cache.__init__ googleapiclient.discovery_cache.file_cache.Cache-class.html#__init__ -googleapiclient.discovery_cache.base.Cache._abc_cache googleapiclient.discovery_cache.base.Cache-class.html#_abc_cache -googleapiclient.discovery_cache.base.Cache.__abstractmethods__ googleapiclient.discovery_cache.base.Cache-class.html#__abstractmethods__ -googleapiclient.discovery_cache.file_cache.Cache.get googleapiclient.discovery_cache.file_cache.Cache-class.html#get -googleapiclient.discovery_cache.base.Cache._abc_negative_cache_version googleapiclient.discovery_cache.base.Cache-class.html#_abc_negative_cache_version -googleapiclient.discovery_cache.base.Cache._abc_registry googleapiclient.discovery_cache.base.Cache-class.html#_abc_registry -googleapiclient.errors.BatchError googleapiclient.errors.BatchError-class.html -googleapiclient.errors.BatchError.__str__ googleapiclient.errors.BatchError-class.html#__str__ -googleapiclient.errors.BatchError.__repr__ googleapiclient.errors.BatchError-class.html#__repr__ -googleapiclient.errors.BatchError.__init__ googleapiclient.errors.BatchError-class.html#__init__ -googleapiclient.errors.HttpError._get_reason googleapiclient.errors.HttpError-class.html#_get_reason -googleapiclient.errors.Error googleapiclient.errors.Error-class.html -googleapiclient.errors.HttpError googleapiclient.errors.HttpError-class.html -googleapiclient.errors.HttpError.__str__ googleapiclient.errors.HttpError-class.html#__str__ -googleapiclient.errors.HttpError.__repr__ googleapiclient.errors.HttpError-class.html#__repr__ -googleapiclient.errors.HttpError.__init__ googleapiclient.errors.HttpError-class.html#__init__ -googleapiclient.errors.HttpError._get_reason googleapiclient.errors.HttpError-class.html#_get_reason -googleapiclient.errors.InvalidChunkSizeError googleapiclient.errors.InvalidChunkSizeError-class.html -googleapiclient.errors.InvalidJsonError googleapiclient.errors.InvalidJsonError-class.html -googleapiclient.errors.InvalidNotificationError googleapiclient.errors.InvalidNotificationError-class.html -googleapiclient.errors.MediaUploadSizeError googleapiclient.errors.MediaUploadSizeError-class.html -googleapiclient.errors.ResumableUploadError googleapiclient.errors.ResumableUploadError-class.html -googleapiclient.errors.HttpError.__str__ googleapiclient.errors.HttpError-class.html#__str__ -googleapiclient.errors.HttpError.__repr__ googleapiclient.errors.HttpError-class.html#__repr__ -googleapiclient.errors.HttpError.__init__ googleapiclient.errors.HttpError-class.html#__init__ -googleapiclient.errors.HttpError._get_reason googleapiclient.errors.HttpError-class.html#_get_reason -googleapiclient.errors.UnacceptableMimeTypeError googleapiclient.errors.UnacceptableMimeTypeError-class.html -googleapiclient.errors.UnexpectedBodyError googleapiclient.errors.UnexpectedBodyError-class.html -googleapiclient.errors.UnexpectedBodyError.__init__ googleapiclient.errors.UnexpectedBodyError-class.html#__init__ -googleapiclient.errors.UnexpectedMethodError googleapiclient.errors.UnexpectedMethodError-class.html -googleapiclient.errors.UnexpectedMethodError.__init__ googleapiclient.errors.UnexpectedMethodError-class.html#__init__ -googleapiclient.errors.UnknownApiNameOrVersion googleapiclient.errors.UnknownApiNameOrVersion-class.html -googleapiclient.errors.UnknownFileType googleapiclient.errors.UnknownFileType-class.html -googleapiclient.errors.UnknownLinkType googleapiclient.errors.UnknownLinkType-class.html -googleapiclient.http.BatchHttpRequest googleapiclient.http.BatchHttpRequest-class.html -googleapiclient.http.BatchHttpRequest.__init__ googleapiclient.http.BatchHttpRequest-class.html#__init__ -googleapiclient.http.BatchHttpRequest._execute googleapiclient.http.BatchHttpRequest-class.html#_execute -googleapiclient.http.BatchHttpRequest.add googleapiclient.http.BatchHttpRequest-class.html#add -googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials googleapiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials -googleapiclient.http.BatchHttpRequest.execute googleapiclient.http.BatchHttpRequest-class.html#execute -googleapiclient.http.BatchHttpRequest._id_to_header googleapiclient.http.BatchHttpRequest-class.html#_id_to_header -googleapiclient.http.BatchHttpRequest._deserialize_response googleapiclient.http.BatchHttpRequest-class.html#_deserialize_response -googleapiclient.http.BatchHttpRequest._header_to_id googleapiclient.http.BatchHttpRequest-class.html#_header_to_id -googleapiclient.http.BatchHttpRequest._new_id googleapiclient.http.BatchHttpRequest-class.html#_new_id -googleapiclient.http.BatchHttpRequest._serialize_request googleapiclient.http.BatchHttpRequest-class.html#_serialize_request -googleapiclient.http.HttpMock googleapiclient.http.HttpMock-class.html -googleapiclient.http.HttpMock.request googleapiclient.http.HttpMock-class.html#request -googleapiclient.http.HttpMock.close googleapiclient.http.HttpMock-class.html#close -googleapiclient.http.HttpMock.__init__ googleapiclient.http.HttpMock-class.html#__init__ -googleapiclient.http.HttpMockSequence googleapiclient.http.HttpMockSequence-class.html -googleapiclient.http.HttpMockSequence.request googleapiclient.http.HttpMockSequence-class.html#request -googleapiclient.http.HttpMockSequence.__init__ googleapiclient.http.HttpMockSequence-class.html#__init__ -googleapiclient.http.HttpRequest googleapiclient.http.HttpRequest-class.html -googleapiclient.http.HttpRequest.from_json googleapiclient.http.HttpRequest-class.html#from_json -googleapiclient.http.HttpRequest.execute googleapiclient.http.HttpRequest-class.html#execute -googleapiclient.http.HttpRequest._process_response googleapiclient.http.HttpRequest-class.html#_process_response -googleapiclient.http.HttpRequest.next_chunk googleapiclient.http.HttpRequest-class.html#next_chunk -googleapiclient.http.HttpRequest.add_response_callback googleapiclient.http.HttpRequest-class.html#add_response_callback -googleapiclient.http.HttpRequest.to_json googleapiclient.http.HttpRequest-class.html#to_json -googleapiclient.http.HttpRequest.null_postproc googleapiclient.http.HttpRequest-class.html#null_postproc -googleapiclient.http.HttpRequest.__init__ googleapiclient.http.HttpRequest-class.html#__init__ -googleapiclient.http.HttpRequestMock googleapiclient.http.HttpRequestMock-class.html -googleapiclient.http.HttpRequestMock.execute googleapiclient.http.HttpRequestMock-class.html#execute -googleapiclient.http.HttpRequestMock.__init__ googleapiclient.http.HttpRequestMock-class.html#__init__ -googleapiclient.http.MediaDownloadProgress googleapiclient.http.MediaDownloadProgress-class.html -googleapiclient.http.MediaDownloadProgress.progress googleapiclient.http.MediaDownloadProgress-class.html#progress -googleapiclient.http.MediaDownloadProgress.__init__ googleapiclient.http.MediaDownloadProgress-class.html#__init__ -googleapiclient.http.MediaFileUpload googleapiclient.http.MediaFileUpload-class.html -googleapiclient.http.MediaFileUpload.from_json googleapiclient.http.MediaFileUpload-class.html#from_json -googleapiclient.http.MediaIoBaseUpload.stream googleapiclient.http.MediaIoBaseUpload-class.html#stream -googleapiclient.http.MediaFileUpload.to_json googleapiclient.http.MediaFileUpload-class.html#to_json -googleapiclient.http.MediaUpload.new_from_json googleapiclient.http.MediaUpload-class.html#new_from_json -googleapiclient.http.MediaFileUpload.__init__ googleapiclient.http.MediaFileUpload-class.html#__init__ -googleapiclient.http.MediaIoBaseUpload.size googleapiclient.http.MediaIoBaseUpload-class.html#size -googleapiclient.http.MediaUpload._to_json googleapiclient.http.MediaUpload-class.html#_to_json -googleapiclient.http.MediaIoBaseUpload.chunksize googleapiclient.http.MediaIoBaseUpload-class.html#chunksize -googleapiclient.http.MediaFileUpload.__del__ googleapiclient.http.MediaFileUpload-class.html#__del__ -googleapiclient.http.MediaIoBaseUpload.getbytes googleapiclient.http.MediaIoBaseUpload-class.html#getbytes -googleapiclient.http.MediaIoBaseUpload.mimetype googleapiclient.http.MediaIoBaseUpload-class.html#mimetype -googleapiclient.http.MediaIoBaseUpload.resumable googleapiclient.http.MediaIoBaseUpload-class.html#resumable -googleapiclient.http.MediaIoBaseUpload.has_stream googleapiclient.http.MediaIoBaseUpload-class.html#has_stream -googleapiclient.http.MediaInMemoryUpload googleapiclient.http.MediaInMemoryUpload-class.html -googleapiclient.http.MediaIoBaseUpload.stream googleapiclient.http.MediaIoBaseUpload-class.html#stream -googleapiclient.http.MediaIoBaseUpload.to_json googleapiclient.http.MediaIoBaseUpload-class.html#to_json -googleapiclient.http.MediaUpload.new_from_json googleapiclient.http.MediaUpload-class.html#new_from_json -googleapiclient.http.MediaInMemoryUpload.__init__ googleapiclient.http.MediaInMemoryUpload-class.html#__init__ -googleapiclient.http.MediaIoBaseUpload.size googleapiclient.http.MediaIoBaseUpload-class.html#size -googleapiclient.http.MediaUpload._to_json googleapiclient.http.MediaUpload-class.html#_to_json -googleapiclient.http.MediaIoBaseUpload.chunksize googleapiclient.http.MediaIoBaseUpload-class.html#chunksize -googleapiclient.http.MediaIoBaseUpload.getbytes googleapiclient.http.MediaIoBaseUpload-class.html#getbytes -googleapiclient.http.MediaIoBaseUpload.mimetype googleapiclient.http.MediaIoBaseUpload-class.html#mimetype -googleapiclient.http.MediaIoBaseUpload.resumable googleapiclient.http.MediaIoBaseUpload-class.html#resumable -googleapiclient.http.MediaIoBaseUpload.has_stream googleapiclient.http.MediaIoBaseUpload-class.html#has_stream -googleapiclient.http.MediaIoBaseDownload googleapiclient.http.MediaIoBaseDownload-class.html -googleapiclient.http.MediaIoBaseDownload.next_chunk googleapiclient.http.MediaIoBaseDownload-class.html#next_chunk -googleapiclient.http.MediaIoBaseDownload.__init__ googleapiclient.http.MediaIoBaseDownload-class.html#__init__ -googleapiclient.http.MediaIoBaseUpload googleapiclient.http.MediaIoBaseUpload-class.html -googleapiclient.http.MediaIoBaseUpload.stream googleapiclient.http.MediaIoBaseUpload-class.html#stream -googleapiclient.http.MediaIoBaseUpload.to_json googleapiclient.http.MediaIoBaseUpload-class.html#to_json -googleapiclient.http.MediaUpload.new_from_json googleapiclient.http.MediaUpload-class.html#new_from_json -googleapiclient.http.MediaIoBaseUpload.__init__ googleapiclient.http.MediaIoBaseUpload-class.html#__init__ -googleapiclient.http.MediaIoBaseUpload.size googleapiclient.http.MediaIoBaseUpload-class.html#size -googleapiclient.http.MediaUpload._to_json googleapiclient.http.MediaUpload-class.html#_to_json -googleapiclient.http.MediaIoBaseUpload.chunksize googleapiclient.http.MediaIoBaseUpload-class.html#chunksize -googleapiclient.http.MediaIoBaseUpload.getbytes googleapiclient.http.MediaIoBaseUpload-class.html#getbytes -googleapiclient.http.MediaIoBaseUpload.mimetype googleapiclient.http.MediaIoBaseUpload-class.html#mimetype -googleapiclient.http.MediaIoBaseUpload.resumable googleapiclient.http.MediaIoBaseUpload-class.html#resumable -googleapiclient.http.MediaIoBaseUpload.has_stream googleapiclient.http.MediaIoBaseUpload-class.html#has_stream -googleapiclient.http.MediaUpload googleapiclient.http.MediaUpload-class.html -googleapiclient.http.MediaUpload.stream googleapiclient.http.MediaUpload-class.html#stream -googleapiclient.http.MediaUpload.to_json googleapiclient.http.MediaUpload-class.html#to_json -googleapiclient.http.MediaUpload.new_from_json googleapiclient.http.MediaUpload-class.html#new_from_json -googleapiclient.http.MediaUpload.size googleapiclient.http.MediaUpload-class.html#size -googleapiclient.http.MediaUpload._to_json googleapiclient.http.MediaUpload-class.html#_to_json -googleapiclient.http.MediaUpload.chunksize googleapiclient.http.MediaUpload-class.html#chunksize -googleapiclient.http.MediaUpload.getbytes googleapiclient.http.MediaUpload-class.html#getbytes -googleapiclient.http.MediaUpload.mimetype googleapiclient.http.MediaUpload-class.html#mimetype -googleapiclient.http.MediaUpload.resumable googleapiclient.http.MediaUpload-class.html#resumable -googleapiclient.http.MediaUpload.has_stream googleapiclient.http.MediaUpload-class.html#has_stream -googleapiclient.http.MediaUploadProgress googleapiclient.http.MediaUploadProgress-class.html -googleapiclient.http.MediaUploadProgress.progress googleapiclient.http.MediaUploadProgress-class.html#progress -googleapiclient.http.MediaUploadProgress.__init__ googleapiclient.http.MediaUploadProgress-class.html#__init__ -googleapiclient.http.RequestMockBuilder googleapiclient.http.RequestMockBuilder-class.html -googleapiclient.http.RequestMockBuilder.__call__ googleapiclient.http.RequestMockBuilder-class.html#__call__ -googleapiclient.http.RequestMockBuilder.__init__ googleapiclient.http.RequestMockBuilder-class.html#__init__ -googleapiclient.http._StreamSlice googleapiclient.http._StreamSlice-class.html -googleapiclient.http._StreamSlice.read googleapiclient.http._StreamSlice-class.html#read -googleapiclient.http._StreamSlice.__init__ googleapiclient.http._StreamSlice-class.html#__init__ -googleapiclient.model.BaseModel googleapiclient.model.BaseModel-class.html -googleapiclient.model.BaseModel.serialize googleapiclient.model.BaseModel-class.html#serialize -googleapiclient.model.BaseModel.accept googleapiclient.model.BaseModel-class.html#accept -googleapiclient.model.BaseModel._build_query googleapiclient.model.BaseModel-class.html#_build_query -googleapiclient.model.BaseModel.content_type googleapiclient.model.BaseModel-class.html#content_type -googleapiclient.model.BaseModel._log_request googleapiclient.model.BaseModel-class.html#_log_request -googleapiclient.model.BaseModel.response googleapiclient.model.BaseModel-class.html#response -googleapiclient.model.BaseModel.deserialize googleapiclient.model.BaseModel-class.html#deserialize -googleapiclient.model.BaseModel.alt_param googleapiclient.model.BaseModel-class.html#alt_param -googleapiclient.model.BaseModel.request googleapiclient.model.BaseModel-class.html#request -googleapiclient.model.BaseModel.no_content_response googleapiclient.model.BaseModel-class.html#no_content_response -googleapiclient.model.BaseModel._log_response googleapiclient.model.BaseModel-class.html#_log_response -googleapiclient.model.JsonModel googleapiclient.model.JsonModel-class.html -googleapiclient.model.JsonModel.serialize googleapiclient.model.JsonModel-class.html#serialize -googleapiclient.model.JsonModel.accept googleapiclient.model.JsonModel-class.html#accept -googleapiclient.model.BaseModel._build_query googleapiclient.model.BaseModel-class.html#_build_query -googleapiclient.model.JsonModel.__init__ googleapiclient.model.JsonModel-class.html#__init__ -googleapiclient.model.JsonModel.content_type googleapiclient.model.JsonModel-class.html#content_type -googleapiclient.model.BaseModel._log_request googleapiclient.model.BaseModel-class.html#_log_request -googleapiclient.model.BaseModel.response googleapiclient.model.BaseModel-class.html#response -googleapiclient.model.JsonModel.deserialize googleapiclient.model.JsonModel-class.html#deserialize -googleapiclient.model.JsonModel.alt_param googleapiclient.model.JsonModel-class.html#alt_param -googleapiclient.model.BaseModel.request googleapiclient.model.BaseModel-class.html#request -googleapiclient.model.JsonModel.no_content_response googleapiclient.model.JsonModel-class.html#no_content_response -googleapiclient.model.BaseModel._log_response googleapiclient.model.BaseModel-class.html#_log_response -googleapiclient.model.MediaModel googleapiclient.model.MediaModel-class.html -googleapiclient.model.JsonModel.serialize googleapiclient.model.JsonModel-class.html#serialize -googleapiclient.model.MediaModel.accept googleapiclient.model.MediaModel-class.html#accept -googleapiclient.model.BaseModel._build_query googleapiclient.model.BaseModel-class.html#_build_query -googleapiclient.model.JsonModel.__init__ googleapiclient.model.JsonModel-class.html#__init__ -googleapiclient.model.MediaModel.content_type googleapiclient.model.MediaModel-class.html#content_type -googleapiclient.model.BaseModel._log_request googleapiclient.model.BaseModel-class.html#_log_request -googleapiclient.model.BaseModel.response googleapiclient.model.BaseModel-class.html#response -googleapiclient.model.MediaModel.deserialize googleapiclient.model.MediaModel-class.html#deserialize -googleapiclient.model.MediaModel.alt_param googleapiclient.model.MediaModel-class.html#alt_param -googleapiclient.model.BaseModel.request googleapiclient.model.BaseModel-class.html#request -googleapiclient.model.MediaModel.no_content_response googleapiclient.model.MediaModel-class.html#no_content_response -googleapiclient.model.BaseModel._log_response googleapiclient.model.BaseModel-class.html#_log_response -googleapiclient.model.Model googleapiclient.model.Model-class.html -googleapiclient.model.Model.request googleapiclient.model.Model-class.html#request -googleapiclient.model.Model.response googleapiclient.model.Model-class.html#response -googleapiclient.model.ProtocolBufferModel googleapiclient.model.ProtocolBufferModel-class.html -googleapiclient.model.ProtocolBufferModel.serialize googleapiclient.model.ProtocolBufferModel-class.html#serialize -googleapiclient.model.ProtocolBufferModel.accept googleapiclient.model.ProtocolBufferModel-class.html#accept -googleapiclient.model.BaseModel._build_query googleapiclient.model.BaseModel-class.html#_build_query -googleapiclient.model.ProtocolBufferModel.__init__ googleapiclient.model.ProtocolBufferModel-class.html#__init__ -googleapiclient.model.ProtocolBufferModel.content_type googleapiclient.model.ProtocolBufferModel-class.html#content_type -googleapiclient.model.BaseModel._log_request googleapiclient.model.BaseModel-class.html#_log_request -googleapiclient.model.BaseModel.response googleapiclient.model.BaseModel-class.html#response -googleapiclient.model.ProtocolBufferModel.deserialize googleapiclient.model.ProtocolBufferModel-class.html#deserialize -googleapiclient.model.ProtocolBufferModel.alt_param googleapiclient.model.ProtocolBufferModel-class.html#alt_param -googleapiclient.model.BaseModel.request googleapiclient.model.BaseModel-class.html#request -googleapiclient.model.ProtocolBufferModel.no_content_response googleapiclient.model.ProtocolBufferModel-class.html#no_content_response -googleapiclient.model.BaseModel._log_response googleapiclient.model.BaseModel-class.html#_log_response -googleapiclient.model.RawModel googleapiclient.model.RawModel-class.html -googleapiclient.model.JsonModel.serialize googleapiclient.model.JsonModel-class.html#serialize -googleapiclient.model.RawModel.accept googleapiclient.model.RawModel-class.html#accept -googleapiclient.model.BaseModel._build_query googleapiclient.model.BaseModel-class.html#_build_query -googleapiclient.model.JsonModel.__init__ googleapiclient.model.JsonModel-class.html#__init__ -googleapiclient.model.RawModel.content_type googleapiclient.model.RawModel-class.html#content_type -googleapiclient.model.BaseModel._log_request googleapiclient.model.BaseModel-class.html#_log_request -googleapiclient.model.BaseModel.response googleapiclient.model.BaseModel-class.html#response -googleapiclient.model.RawModel.deserialize googleapiclient.model.RawModel-class.html#deserialize -googleapiclient.model.RawModel.alt_param googleapiclient.model.RawModel-class.html#alt_param -googleapiclient.model.BaseModel.request googleapiclient.model.BaseModel-class.html#request -googleapiclient.model.RawModel.no_content_response googleapiclient.model.RawModel-class.html#no_content_response -googleapiclient.model.BaseModel._log_response googleapiclient.model.BaseModel-class.html#_log_response -googleapiclient.schema.Schemas googleapiclient.schema.Schemas-class.html -googleapiclient.schema.Schemas._prettyPrintByName googleapiclient.schema.Schemas-class.html#_prettyPrintByName -googleapiclient.schema.Schemas._prettyPrintSchema googleapiclient.schema.Schemas-class.html#_prettyPrintSchema -googleapiclient.schema.Schemas.get googleapiclient.schema.Schemas-class.html#get -googleapiclient.schema.Schemas.prettyPrintByName googleapiclient.schema.Schemas-class.html#prettyPrintByName -googleapiclient.schema.Schemas.prettyPrintSchema googleapiclient.schema.Schemas-class.html#prettyPrintSchema -googleapiclient.schema.Schemas.__init__ googleapiclient.schema.Schemas-class.html#__init__ -googleapiclient.schema._SchemaToStruct googleapiclient.schema._SchemaToStruct-class.html -googleapiclient.schema._SchemaToStruct.indent googleapiclient.schema._SchemaToStruct-class.html#indent -googleapiclient.schema._SchemaToStruct.emit googleapiclient.schema._SchemaToStruct-class.html#emit -googleapiclient.schema._SchemaToStruct._to_str_impl googleapiclient.schema._SchemaToStruct-class.html#_to_str_impl -googleapiclient.schema._SchemaToStruct.emitEnd googleapiclient.schema._SchemaToStruct-class.html#emitEnd -googleapiclient.schema._SchemaToStruct.to_str googleapiclient.schema._SchemaToStruct-class.html#to_str -googleapiclient.schema._SchemaToStruct.undent googleapiclient.schema._SchemaToStruct-class.html#undent -googleapiclient.schema._SchemaToStruct.emitBegin googleapiclient.schema._SchemaToStruct-class.html#emitBegin -googleapiclient.schema._SchemaToStruct.__init__ googleapiclient.schema._SchemaToStruct-class.html#__init__ diff --git a/docs/epy/class-tree.html b/docs/epy/class-tree.html deleted file mode 100644 index 36db6b69492..00000000000 --- a/docs/epy/class-tree.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - Class Hierarchy - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - -
[hide private]
[frames] | no frames]
-
-
- [ Module Hierarchy - | Class Hierarchy ] -

-

Class Hierarchy

- - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/crarr.png b/docs/epy/crarr.png deleted file mode 100644 index 26b43c52433b71e72a9a478c52d446278335f0e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^f?NMQuI$%1#8??M1uoZK z0}62#ctjR6FvuMOVaB`*rFK9;mUKs7M+SzC{oH>NS%G}l0G|-o|NsA=J-p%i`2!7U zCdJ_j4{u-SDsoA1U`TRixpVcz%O`iHHAYk?=&YaLkmD!Pp6~GW^M_S4D^grJKD>P~ zuPf!ku`N^TLavn`Edv_JSQ6wH%;50sMjDXg>*?YcQgJIe!GUqln>_|<+Os&OOUQS1 zY~Wzutud*iVS#|PHMc&?2WHoZpEo8l+6!Oc$x~=%U)469Gl^f?nq7UBw#1AXkrEde cmFKWBXcRFE*(?@T0vgQV>FVdQ&MBb@0LpZ4r2qf` diff --git a/docs/epy/epydoc.css b/docs/epy/epydoc.css deleted file mode 100644 index 86d41706824..00000000000 --- a/docs/epy/epydoc.css +++ /dev/null @@ -1,322 +0,0 @@ - - -/* Epydoc CSS Stylesheet - * - * This stylesheet can be used to customize the appearance of epydoc's - * HTML output. - * - */ - -/* Default Colors & Styles - * - Set the default foreground & background color with 'body'; and - * link colors with 'a:link' and 'a:visited'. - * - Use bold for decision list terms. - * - The heading styles defined here are used for headings *within* - * docstring descriptions. All headings used by epydoc itself use - * either class='epydoc' or class='toc' (CSS styles for both - * defined below). - */ -body { background: #ffffff; color: #000000; } -p { margin-top: 0.5em; margin-bottom: 0.5em; } -a:link { color: #0000ff; } -a:visited { color: #204080; } -dt { font-weight: bold; } -h1 { font-size: +140%; font-style: italic; - font-weight: bold; } -h2 { font-size: +125%; font-style: italic; - font-weight: bold; } -h3 { font-size: +110%; font-style: italic; - font-weight: normal; } -code { font-size: 100%; } -/* N.B.: class, not pseudoclass */ -a.link { font-family: monospace; } - -/* Page Header & Footer - * - The standard page header consists of a navigation bar (with - * pointers to standard pages such as 'home' and 'trees'); a - * breadcrumbs list, which can be used to navigate to containing - * classes or modules; options links, to show/hide private - * variables and to show/hide frames; and a page title (using - *

). The page title may be followed by a link to the - * corresponding source code (using 'span.codelink'). - * - The footer consists of a navigation bar, a timestamp, and a - * pointer to epydoc's homepage. - */ -h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; } -h2.epydoc { font-size: +130%; font-weight: bold; } -h3.epydoc { font-size: +115%; font-weight: bold; - margin-top: 0.2em; } -td h3.epydoc { font-size: +115%; font-weight: bold; - margin-bottom: 0; } -table.navbar { background: #a0c0ff; color: #000000; - border: 2px groove #c0d0d0; } -table.navbar table { color: #000000; } -th.navbar-select { background: #70b0ff; - color: #000000; } -table.navbar a { text-decoration: none; } -table.navbar a:link { color: #0000ff; } -table.navbar a:visited { color: #204080; } -span.breadcrumbs { font-size: 85%; font-weight: bold; } -span.options { font-size: 70%; } -span.codelink { font-size: 85%; } -td.footer { font-size: 85%; } - -/* Table Headers - * - Each summary table and details section begins with a 'header' - * row. This row contains a section title (marked by - * 'span.table-header') as well as a show/hide private link - * (marked by 'span.options', defined above). - * - Summary tables that contain user-defined groups mark those - * groups using 'group header' rows. - */ -td.table-header { background: #70b0ff; color: #000000; - border: 1px solid #608090; } -td.table-header table { color: #000000; } -td.table-header table a:link { color: #0000ff; } -td.table-header table a:visited { color: #204080; } -span.table-header { font-size: 120%; font-weight: bold; } -th.group-header { background: #c0e0f8; color: #000000; - text-align: left; font-style: italic; - font-size: 115%; - border: 1px solid #608090; } - -/* Summary Tables (functions, variables, etc) - * - Each object is described by a single row of the table with - * two cells. The left cell gives the object's type, and is - * marked with 'code.summary-type'. The right cell gives the - * object's name and a summary description. - * - CSS styles for the table's header and group headers are - * defined above, under 'Table Headers' - */ -table.summary { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin-bottom: 0.5em; } -td.summary { border: 1px solid #608090; } -code.summary-type { font-size: 85%; } -table.summary a:link { color: #0000ff; } -table.summary a:visited { color: #204080; } - - -/* Details Tables (functions, variables, etc) - * - Each object is described in its own div. - * - A single-row summary table w/ table-header is used as - * a header for each details section (CSS style for table-header - * is defined above, under 'Table Headers'). - */ -table.details { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin: .2em 0 0 0; } -table.details table { color: #000000; } -table.details a:link { color: #0000ff; } -table.details a:visited { color: #204080; } - -/* Fields */ -dl.fields { margin-left: 2em; margin-top: 1em; - margin-bottom: 1em; } -dl.fields dd ul { margin-left: 0em; padding-left: 0em; } -dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; } -div.fields { margin-left: 2em; } -div.fields p { margin-bottom: 0.5em; } - -/* Index tables (identifier index, term index, etc) - * - link-index is used for indices containing lists of links - * (namely, the identifier index & term index). - * - index-where is used in link indices for the text indicating - * the container/source for each link. - * - metadata-index is used for indices containing metadata - * extracted from fields (namely, the bug index & todo index). - */ -table.link-index { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; } -td.link-index { border-width: 0px; } -table.link-index a:link { color: #0000ff; } -table.link-index a:visited { color: #204080; } -span.index-where { font-size: 70%; } -table.metadata-index { border-collapse: collapse; - background: #e8f0f8; color: #000000; - border: 1px solid #608090; - margin: .2em 0 0 0; } -td.metadata-index { border-width: 1px; border-style: solid; } -table.metadata-index a:link { color: #0000ff; } -table.metadata-index a:visited { color: #204080; } - -/* Function signatures - * - sig* is used for the signature in the details section. - * - .summary-sig* is used for the signature in the summary - * table, and when listing property accessor functions. - * */ -.sig-name { color: #006080; } -.sig-arg { color: #008060; } -.sig-default { color: #602000; } -.summary-sig { font-family: monospace; } -.summary-sig-name { color: #006080; font-weight: bold; } -table.summary a.summary-sig-name:link - { color: #006080; font-weight: bold; } -table.summary a.summary-sig-name:visited - { color: #006080; font-weight: bold; } -.summary-sig-arg { color: #006040; } -.summary-sig-default { color: #501800; } - -/* Subclass list - */ -ul.subclass-list { display: inline; } -ul.subclass-list li { display: inline; } - -/* To render variables, classes etc. like functions */ -table.summary .summary-name { color: #006080; font-weight: bold; - font-family: monospace; } -table.summary - a.summary-name:link { color: #006080; font-weight: bold; - font-family: monospace; } -table.summary - a.summary-name:visited { color: #006080; font-weight: bold; - font-family: monospace; } - -/* Variable values - * - In the 'variable details' sections, each varaible's value is - * listed in a 'pre.variable' box. The width of this box is - * restricted to 80 chars; if the value's repr is longer than - * this it will be wrapped, using a backslash marked with - * class 'variable-linewrap'. If the value's repr is longer - * than 3 lines, the rest will be ellided; and an ellipsis - * marker ('...' marked with 'variable-ellipsis') will be used. - * - If the value is a string, its quote marks will be marked - * with 'variable-quote'. - * - If the variable is a regexp, it is syntax-highlighted using - * the re* CSS classes. - */ -pre.variable { padding: .5em; margin: 0; - background: #dce4ec; color: #000000; - border: 1px solid #708890; } -.variable-linewrap { color: #604000; font-weight: bold; } -.variable-ellipsis { color: #604000; font-weight: bold; } -.variable-quote { color: #604000; font-weight: bold; } -.variable-group { color: #008000; font-weight: bold; } -.variable-op { color: #604000; font-weight: bold; } -.variable-string { color: #006030; } -.variable-unknown { color: #a00000; font-weight: bold; } -.re { color: #000000; } -.re-char { color: #006030; } -.re-op { color: #600000; } -.re-group { color: #003060; } -.re-ref { color: #404040; } - -/* Base tree - * - Used by class pages to display the base class hierarchy. - */ -pre.base-tree { font-size: 80%; margin: 0; } - -/* Frames-based table of contents headers - * - Consists of two frames: one for selecting modules; and - * the other listing the contents of the selected module. - * - h1.toc is used for each frame's heading - * - h2.toc is used for subheadings within each frame. - */ -h1.toc { text-align: center; font-size: 105%; - margin: 0; font-weight: bold; - padding: 0; } -h2.toc { font-size: 100%; font-weight: bold; - margin: 0.5em 0 0 -0.3em; } - -/* Syntax Highlighting for Source Code - * - doctest examples are displayed in a 'pre.py-doctest' block. - * If the example is in a details table entry, then it will use - * the colors specified by the 'table pre.py-doctest' line. - * - Source code listings are displayed in a 'pre.py-src' block. - * Each line is marked with 'span.py-line' (used to draw a line - * down the left margin, separating the code from the line - * numbers). Line numbers are displayed with 'span.py-lineno'. - * The expand/collapse block toggle button is displayed with - * 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not - * modify the font size of the text.) - * - If a source code page is opened with an anchor, then the - * corresponding code block will be highlighted. The code - * block's header is highlighted with 'py-highlight-hdr'; and - * the code block's body is highlighted with 'py-highlight'. - * - The remaining py-* classes are used to perform syntax - * highlighting (py-string for string literals, py-name for names, - * etc.) - */ -pre.py-doctest { padding: .5em; margin: 1em; - background: #e8f0f8; color: #000000; - border: 1px solid #708890; } -table pre.py-doctest { background: #dce4ec; - color: #000000; } -pre.py-src { border: 2px solid #000000; - background: #f0f0f0; color: #000000; } -.py-line { border-left: 2px solid #000000; - margin-left: .2em; padding-left: .4em; } -.py-lineno { font-style: italic; font-size: 90%; - padding-left: .5em; } -a.py-toggle { text-decoration: none; } -div.py-highlight-hdr { border-top: 2px solid #000000; - border-bottom: 2px solid #000000; - background: #d8e8e8; } -div.py-highlight { border-bottom: 2px solid #000000; - background: #d0e0e0; } -.py-prompt { color: #005050; font-weight: bold;} -.py-more { color: #005050; font-weight: bold;} -.py-string { color: #006030; } -.py-comment { color: #003060; } -.py-keyword { color: #600000; } -.py-output { color: #404040; } -.py-name { color: #000050; } -.py-name:link { color: #000050 !important; } -.py-name:visited { color: #000050 !important; } -.py-number { color: #005000; } -.py-defname { color: #000060; font-weight: bold; } -.py-def-name { color: #000060; font-weight: bold; } -.py-base-class { color: #000060; } -.py-param { color: #000060; } -.py-docstring { color: #006030; } -.py-decorator { color: #804020; } -/* Use this if you don't want links to names underlined: */ -/*a.py-name { text-decoration: none; }*/ - -/* Graphs & Diagrams - * - These CSS styles are used for graphs & diagrams generated using - * Graphviz dot. 'img.graph-without-title' is used for bare - * diagrams (to remove the border created by making the image - * clickable). - */ -img.graph-without-title { border: none; } -img.graph-with-title { border: 1px solid #000000; } -span.graph-title { font-weight: bold; } -span.graph-caption { } - -/* General-purpose classes - * - 'p.indent-wrapped-lines' defines a paragraph whose first line - * is not indented, but whose subsequent lines are. - * - The 'nomargin-top' class is used to remove the top margin (e.g. - * from lists). The 'nomargin' class is used to remove both the - * top and bottom margin (but not the left or right margin -- - * for lists, that would cause the bullets to disappear.) - */ -p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em; - margin: 0; } -.nomargin-top { margin-top: 0; } -.nomargin { margin-top: 0; margin-bottom: 0; } - -/* HTML Log */ -div.log-block { padding: 0; margin: .5em 0 .5em 0; - background: #e8f0f8; color: #000000; - border: 1px solid #000000; } -div.log-error { padding: .1em .3em .1em .3em; margin: 4px; - background: #ffb0b0; color: #000000; - border: 1px solid #000000; } -div.log-warning { padding: .1em .3em .1em .3em; margin: 4px; - background: #ffffb0; color: #000000; - border: 1px solid #000000; } -div.log-info { padding: .1em .3em .1em .3em; margin: 4px; - background: #b0ffb0; color: #000000; - border: 1px solid #000000; } -h2.log-hdr { background: #70b0ff; color: #000000; - margin: 0; padding: 0em 0.5em 0em 0.5em; - border-bottom: 1px solid #000000; font-size: 110%; } -p.log { font-weight: bold; margin: .5em 0 .5em 0; } -tr.opt-changed { color: #000000; font-weight: bold; } -tr.opt-default { color: #606060; } -pre.log { margin: 0; padding: 0; padding-left: 1em; } diff --git a/docs/epy/epydoc.js b/docs/epy/epydoc.js deleted file mode 100644 index e787dbcf471..00000000000 --- a/docs/epy/epydoc.js +++ /dev/null @@ -1,293 +0,0 @@ -function toggle_private() { - // Search for any private/public links on this page. Store - // their old text in "cmd," so we will know what action to - // take; and change their text to the opposite action. - var cmd = "?"; - var elts = document.getElementsByTagName("a"); - for(var i=0; i...
"; - elt.innerHTML = s; - } -} - -function toggle(id) { - elt = document.getElementById(id+"-toggle"); - if (elt.innerHTML == "-") - collapse(id); - else - expand(id); - return false; -} - -function highlight(id) { - var elt = document.getElementById(id+"-def"); - if (elt) elt.className = "py-highlight-hdr"; - var elt = document.getElementById(id+"-expanded"); - if (elt) elt.className = "py-highlight"; - var elt = document.getElementById(id+"-collapsed"); - if (elt) elt.className = "py-highlight"; -} - -function num_lines(s) { - var n = 1; - var pos = s.indexOf("\n"); - while ( pos > 0) { - n += 1; - pos = s.indexOf("\n", pos+1); - } - return n; -} - -// Collapse all blocks that mave more than `min_lines` lines. -function collapse_all(min_lines) { - var elts = document.getElementsByTagName("div"); - for (var i=0; i 0) - if (elt.id.substring(split, elt.id.length) == "-expanded") - if (num_lines(elt.innerHTML) > min_lines) - collapse(elt.id.substring(0, split)); - } -} - -function expandto(href) { - var start = href.indexOf("#")+1; - if (start != 0 && start != href.length) { - if (href.substring(start, href.length) != "-") { - collapse_all(4); - pos = href.indexOf(".", start); - while (pos != -1) { - var id = href.substring(start, pos); - expand(id); - pos = href.indexOf(".", pos+1); - } - var id = href.substring(start, href.length); - expand(id); - highlight(id); - } - } -} - -function kill_doclink(id) { - var parent = document.getElementById(id); - parent.removeChild(parent.childNodes.item(0)); -} -function auto_kill_doclink(ev) { - if (!ev) var ev = window.event; - if (!this.contains(ev.toElement)) { - var parent = document.getElementById(this.parentID); - parent.removeChild(parent.childNodes.item(0)); - } -} - -function doclink(id, name, targets_id) { - var elt = document.getElementById(id); - - // If we already opened the box, then destroy it. - // (This case should never occur, but leave it in just in case.) - if (elt.childNodes.length > 1) { - elt.removeChild(elt.childNodes.item(0)); - } - else { - // The outer box: relative + inline positioning. - var box1 = document.createElement("div"); - box1.style.position = "relative"; - box1.style.display = "inline"; - box1.style.top = 0; - box1.style.left = 0; - - // A shadow for fun - var shadow = document.createElement("div"); - shadow.style.position = "absolute"; - shadow.style.left = "-1.3em"; - shadow.style.top = "-1.3em"; - shadow.style.background = "#404040"; - - // The inner box: absolute positioning. - var box2 = document.createElement("div"); - box2.style.position = "relative"; - box2.style.border = "1px solid #a0a0a0"; - box2.style.left = "-.2em"; - box2.style.top = "-.2em"; - box2.style.background = "white"; - box2.style.padding = ".3em .4em .3em .4em"; - box2.style.fontStyle = "normal"; - box2.onmouseout=auto_kill_doclink; - box2.parentID = id; - - // Get the targets - var targets_elt = document.getElementById(targets_id); - var targets = targets_elt.getAttribute("targets"); - var links = ""; - target_list = targets.split(","); - for (var i=0; i" + - target[0] + ""; - } - - // Put it all together. - elt.insertBefore(box1, elt.childNodes.item(0)); - //box1.appendChild(box2); - box1.appendChild(shadow); - shadow.appendChild(box2); - box2.innerHTML = - "Which "+name+" do you want to see documentation for?" + - ""; - } - return false; -} - -function get_anchor() { - var href = location.href; - var start = href.indexOf("#")+1; - if ((start != 0) && (start != href.length)) - return href.substring(start, href.length); - } -function redirect_url(dottedName) { - // Scan through each element of the "pages" list, and check - // if "name" matches with any of them. - for (var i=0; i-m" or "-c"; - // extract the portion & compare it to dottedName. - var pagename = pages[i].substring(0, pages[i].length-2); - if (pagename == dottedName.substring(0,pagename.length)) { - - // We've found a page that matches `dottedName`; - // construct its URL, using leftover `dottedName` - // content to form an anchor. - var pagetype = pages[i].charAt(pages[i].length-1); - var url = pagename + ((pagetype=="m")?"-module.html": - "-class.html"); - if (dottedName.length > pagename.length) - url += "#" + dottedName.substring(pagename.length+1, - dottedName.length); - return url; - } - } - } diff --git a/docs/epy/frames.html b/docs/epy/frames.html deleted file mode 100644 index 042cb61ab1f..00000000000 --- a/docs/epy/frames.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - API Documentation - - - - - - - - - diff --git a/docs/epy/googleapiclient-module.html b/docs/epy/googleapiclient-module.html deleted file mode 100644 index c71277b53e2..00000000000 --- a/docs/epy/googleapiclient-module.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - googleapiclient - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Package googleapiclient

source code

- - - - - - - -
- - - - - -
Submodules[hide private]
-
-
- -
- - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - __package__ = 'googleapiclient' -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient-pysrc.html b/docs/epy/googleapiclient-pysrc.html deleted file mode 100644 index 63b4e14d477..00000000000 --- a/docs/epy/googleapiclient-pysrc.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - googleapiclient - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Package googleapiclient

-
- 1  # Copyright 2014 Google Inc. All Rights Reserved. 
- 2  # 
- 3  # Licensed under the Apache License, Version 2.0 (the "License"); 
- 4  # you may not use this file except in compliance with the License. 
- 5  # You may obtain a copy of the License at 
- 6  # 
- 7  #      http://www.apache.org/licenses/LICENSE-2.0 
- 8  # 
- 9  # Unless required by applicable law or agreed to in writing, software 
-10  # distributed under the License is distributed on an "AS IS" BASIS, 
-11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-12  # See the License for the specific language governing permissions and 
-13  # limitations under the License. 
-14   
-15  # Set default logging handler to avoid "No handler found" warnings. 
-16  import logging 
-17   
-18  try:  # Python 2.7+ 
-19      from logging import NullHandler 
-20  except ImportError: 
-21   
-
22 - class NullHandler(logging.Handler): -
23 - def emit(self, record): -
24 pass -
25 -26 -27 logging.getLogger(__name__).addHandler(NullHandler()) -28 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.NullHandler-class.html b/docs/epy/googleapiclient.NullHandler-class.html deleted file mode 100644 index 723ee152f96..00000000000 --- a/docs/epy/googleapiclient.NullHandler-class.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - googleapiclient.NullHandler - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Class NullHandler - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class NullHandler

source code

-
- -
-
- - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
emit(self, - record)
- Do whatever it takes to actually log the specified logging record.
- source code - -
- -
-

Inherited from logging.Handler: - __init__, - acquire, - close, - createLock, - flush, - format, - get_name, - handle, - handleError, - release, - setFormatter, - setLevel, - set_name -

-

Inherited from logging.Filterer: - addFilter, - filter, - removeFilter -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-

Inherited from logging.Handler: - name -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

emit(self, - record) -

-
source code  -
- -
-
-Do whatever it takes to actually log the specified logging record.
-
-This version is intended to be implemented by subclasses and so
-raises a NotImplementedError.
-
-
-
-
Overrides: - logging.Handler.emit -
(inherited documentation)
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient._auth-module.html b/docs/epy/googleapiclient._auth-module.html deleted file mode 100644 index a166d7753a0..00000000000 --- a/docs/epy/googleapiclient._auth-module.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - - googleapiclient._auth - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module _auth - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module _auth

source code

-

Helpers for authentication using oauth2client or google-auth.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
credentials_from_file(filename, - scopes=None, - quota_project_id=None)
- Returns credentials loaded from a file.
- source code - -
- -
-   - - - - - - -
default_credentials(scopes=None, - quota_project_id=None)
- Returns Application Default Credentials.
- source code - -
- -
-   - - - - - - -
with_scopes(credentials, - scopes)
- Scopes the credentials if necessary.
- source code - -
- -
-   - - - - - - -
authorized_http(credentials)
- Returns an http client that is authorized with the given credentials.
- source code - -
- -
-   - - - - - - -
refresh_credentials(credentials) - source code - -
- -
-   - - - - - - -
apply_credentials(credentials, - headers) - source code - -
- -
-   - - - - - - -
is_valid(credentials) - source code - -
- -
-   - - - - - - -
get_credentials_from_http(http) - source code - -
- -
- - - - - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - HAS_GOOGLE_AUTH = False -
-   - - google_auth_httplib2 = None -
-   - - HAS_OAUTH2CLIENT = False -
-   - - __package__ = 'googleapiclient' -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

with_scopes(credentials, - scopes) -

-
source code  -
- -
-Scopes the credentials if necessary.
-
-Args:
-    credentials (Union[
-        google.auth.credentials.Credentials,
-        oauth2client.client.Credentials]): The credentials to scope.
-    scopes (Sequence[str]): The list of scopes.
-
-Returns:
-    Union[google.auth.credentials.Credentials,
-        oauth2client.client.Credentials]: The scoped credentials.
-
-
-
-
-
-
- -
- -
- - -
-

authorized_http(credentials) -

-
source code  -
- -
-Returns an http client that is authorized with the given credentials.
-
-Args:
-    credentials (Union[
-        google.auth.credentials.Credentials,
-        oauth2client.client.Credentials]): The credentials to use.
-
-Returns:
-    Union[httplib2.Http, google_auth_httplib2.AuthorizedHttp]: An
-        authorized http client.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient._auth-pysrc.html b/docs/epy/googleapiclient._auth-pysrc.html deleted file mode 100644 index 9717363ccfd..00000000000 --- a/docs/epy/googleapiclient._auth-pysrc.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - googleapiclient._auth - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module _auth - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient._auth

-
-  1  # Copyright 2016 Google Inc. All Rights Reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """Helpers for authentication using oauth2client or google-auth.""" 
- 16   
- 17  import httplib2 
- 18   
- 19  try: 
- 20      import google.auth 
- 21      import google.auth.credentials 
- 22   
- 23      HAS_GOOGLE_AUTH = True 
- 24  except ImportError:  # pragma: NO COVER 
- 25      HAS_GOOGLE_AUTH = False 
- 26   
- 27  try: 
- 28      import google_auth_httplib2 
- 29  except ImportError:  # pragma: NO COVER 
- 30      google_auth_httplib2 = None 
- 31   
- 32  try: 
- 33      import oauth2client 
- 34      import oauth2client.client 
- 35   
- 36      HAS_OAUTH2CLIENT = True 
- 37  except ImportError:  # pragma: NO COVER 
- 38      HAS_OAUTH2CLIENT = False 
- 39   
- 40   
-
41 -def credentials_from_file(filename, scopes=None, quota_project_id=None): -
42 """Returns credentials loaded from a file.""" - 43 if HAS_GOOGLE_AUTH: - 44 credentials, _ = google.auth.load_credentials_from_file(filename, scopes=scopes, quota_project_id=quota_project_id) - 45 return credentials - 46 else: - 47 raise EnvironmentError( - 48 "client_options.credentials_file is only supported in google-auth.") -
49 - 50 -
51 -def default_credentials(scopes=None, quota_project_id=None): -
52 """Returns Application Default Credentials.""" - 53 if HAS_GOOGLE_AUTH: - 54 credentials, _ = google.auth.default(scopes=scopes, quota_project_id=quota_project_id) - 55 return credentials - 56 elif HAS_OAUTH2CLIENT: - 57 if scopes is not None or quota_project_id is not None: - 58 raise EnvironmentError( - 59 "client_options.scopes and client_options.quota_project_id are not supported in oauth2client." - 60 "Please install google-auth." - 61 ) - 62 return oauth2client.client.GoogleCredentials.get_application_default() - 63 else: - 64 raise EnvironmentError( - 65 "No authentication library is available. Please install either " - 66 "google-auth or oauth2client." - 67 ) -
68 - 69 -
70 -def with_scopes(credentials, scopes): -
71 """Scopes the credentials if necessary. - 72 - 73 Args: - 74 credentials (Union[ - 75 google.auth.credentials.Credentials, - 76 oauth2client.client.Credentials]): The credentials to scope. - 77 scopes (Sequence[str]): The list of scopes. - 78 - 79 Returns: - 80 Union[google.auth.credentials.Credentials, - 81 oauth2client.client.Credentials]: The scoped credentials. - 82 """ - 83 if HAS_GOOGLE_AUTH and isinstance(credentials, google.auth.credentials.Credentials): - 84 return google.auth.credentials.with_scopes_if_required(credentials, scopes) - 85 else: - 86 try: - 87 if credentials.create_scoped_required(): - 88 return credentials.create_scoped(scopes) - 89 else: - 90 return credentials - 91 except AttributeError: - 92 return credentials -
93 - 94 -
95 -def authorized_http(credentials): -
96 """Returns an http client that is authorized with the given credentials. - 97 - 98 Args: - 99 credentials (Union[ -100 google.auth.credentials.Credentials, -101 oauth2client.client.Credentials]): The credentials to use. -102 -103 Returns: -104 Union[httplib2.Http, google_auth_httplib2.AuthorizedHttp]: An -105 authorized http client. -106 """ -107 from googleapiclient.http import build_http -108 -109 if HAS_GOOGLE_AUTH and isinstance(credentials, google.auth.credentials.Credentials): -110 if google_auth_httplib2 is None: -111 raise ValueError( -112 "Credentials from google.auth specified, but " -113 "google-api-python-client is unable to use these credentials " -114 "unless google-auth-httplib2 is installed. Please install " -115 "google-auth-httplib2." -116 ) -117 return google_auth_httplib2.AuthorizedHttp(credentials, http=build_http()) -118 else: -119 return credentials.authorize(build_http()) -
120 -121 -
122 -def refresh_credentials(credentials): -
123 # Refresh must use a new http instance, as the one associated with the -124 # credentials could be a AuthorizedHttp or an oauth2client-decorated -125 # Http instance which would cause a weird recursive loop of refreshing -126 # and likely tear a hole in spacetime. -127 refresh_http = httplib2.Http() -128 if HAS_GOOGLE_AUTH and isinstance(credentials, google.auth.credentials.Credentials): -129 request = google_auth_httplib2.Request(refresh_http) -130 return credentials.refresh(request) -131 else: -132 return credentials.refresh(refresh_http) -
133 -134 -
135 -def apply_credentials(credentials, headers): -
136 # oauth2client and google-auth have the same interface for this. -137 if not is_valid(credentials): -138 refresh_credentials(credentials) -139 return credentials.apply(headers) -
140 -141 -
142 -def is_valid(credentials): -
143 if HAS_GOOGLE_AUTH and isinstance(credentials, google.auth.credentials.Credentials): -144 return credentials.valid -145 else: -146 return ( -147 credentials.access_token is not None -148 and not credentials.access_token_expired -149 ) -
150 -151 -
153 if http is None: -154 return None -155 elif hasattr(http.request, "credentials"): -156 return http.request.credentials -157 elif hasattr(http, "credentials") and not isinstance( -158 http.credentials, httplib2.Credentials -159 ): -160 return http.credentials -161 else: -162 return None -
163 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient._helpers-module.html b/docs/epy/googleapiclient._helpers-module.html deleted file mode 100644 index bd1a42b0241..00000000000 --- a/docs/epy/googleapiclient._helpers-module.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - - googleapiclient._helpers - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module _helpers - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module _helpers

source code

-

Helper functions for commonly used utilities.

- - - - - - - - - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
positional(max_positional_args)
- A decorator to declare that only the first N arguments may be positional.
- source code - -
- -
-   - - - - - - -
parse_unique_urlencoded(content)
- Parses unique key-value parameters from urlencoded content.
- source code - -
- -
-   - - - - - - -
update_query_params(uri, - params)
- Updates a URI with new query parameters.
- source code - -
- -
-   - - - - - - -
_add_query_parameter(url, - name, - value)
- Adds a query parameter to a url.
- source code - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - logger = logging.getLogger(__name__) -
-   - - POSITIONAL_WARNING = 'WARNING' -
-   - - POSITIONAL_EXCEPTION = 'EXCEPTION' -
-   - - POSITIONAL_IGNORE = 'IGNORE' -
-   - - POSITIONAL_SET = frozenset(['EXCEPTION', 'IGNORE', 'WARNING']) -
-   - - positional_parameters_enforcement = 'WARNING' -
-   - - _SYM_LINK_MESSAGE = 'File: {0}: Is a symbolic link.' -
-   - - _IS_DIR_MESSAGE = '{0}: Is a directory' -
-   - - _MISSING_FILE_MESSAGE = 'Cannot access {0}: No such file or di... -
-   - - __package__ = 'googleapiclient' -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

positional(max_positional_args) -

-
source code  -
- -
-A decorator to declare that only the first N arguments may be positional.
-
-This decorator makes it easy to support Python 3 style keyword-only
-parameters. For example, in Python 3 it is possible to write::
-
-    def fn(pos1, *, kwonly1=None, kwonly1=None):
-        ...
-
-All named parameters after ``*`` must be a keyword::
-
-    fn(10, 'kw1', 'kw2')  # Raises exception.
-    fn(10, kwonly1='kw1')  # Ok.
-
-Example
-^^^^^^^
-
-To define a function like above, do::
-
-    @positional(1)
-    def fn(pos1, kwonly1=None, kwonly2=None):
-        ...
-
-If no default value is provided to a keyword argument, it becomes a
-required keyword argument::
-
-    @positional(0)
-    def fn(required_kw):
-        ...
-
-This must be called with the keyword parameter::
-
-    fn()  # Raises exception.
-    fn(10)  # Raises exception.
-    fn(required_kw=10)  # Ok.
-
-When defining instance or class methods always remember to account for
-``self`` and ``cls``::
-
-    class MyClass(object):
-
-        @positional(2)
-        def my_method(self, pos1, kwonly1=None):
-            ...
-
-        @classmethod
-        @positional(2)
-        def my_method(cls, pos1, kwonly1=None):
-            ...
-
-The positional decorator behavior is controlled by
-``_helpers.positional_parameters_enforcement``, which may be set to
-``POSITIONAL_EXCEPTION``, ``POSITIONAL_WARNING`` or
-``POSITIONAL_IGNORE`` to raise an exception, log a warning, or do
-nothing, respectively, if a declaration is violated.
-
-Args:
-    max_positional_arguments: Maximum number of positional arguments. All
-                              parameters after the this index must be
-                              keyword only.
-
-Returns:
-    A decorator that prevents using arguments after max_positional_args
-    from being used as positional parameters.
-
-Raises:
-    TypeError: if a key-word only argument is provided as a positional
-               parameter, but only if
-               _helpers.positional_parameters_enforcement is set to
-               POSITIONAL_EXCEPTION.
-
-
-
-
-
-
- -
- -
- - -
-

parse_unique_urlencoded(content) -

-
source code  -
- -
-Parses unique key-value parameters from urlencoded content.
-
-Args:
-    content: string, URL-encoded key-value pairs.
-
-Returns:
-    dict, The key-value pairs from ``content``.
-
-Raises:
-    ValueError: if one of the keys is repeated.
-
-
-
-
-
-
- -
- -
- - -
-

update_query_params(uri, - params) -

-
source code  -
- -
-Updates a URI with new query parameters.
-
-If a given key from ``params`` is repeated in the ``uri``, then
-the URI will be considered invalid and an error will occur.
-
-If the URI is valid, then each value from ``params`` will
-replace the corresponding value in the query parameters (if
-it exists).
-
-Args:
-    uri: string, A valid URI, with potential existing query parameters.
-    params: dict, A dictionary of query parameters.
-
-Returns:
-    The same URI but with the new query parameters added.
-
-
-
-
-
-
- -
- -
- - -
-

_add_query_parameter(url, - name, - value) -

-
source code  -
- -
-Adds a query parameter to a url.
-
-Replaces the current value if it already exists in the URL.
-
-Args:
-    url: string, url to add the query parameter to.
-    name: string, query parameter name.
-    value: string, query parameter value.
-
-Returns:
-    Updated query parameter. Does not update the url if value is None.
-
-
-
-
-
-
-
- - - - - - -
- - - - - -
Variables Details[hide private]
-
- -
- -
-

_MISSING_FILE_MESSAGE

- -
-
-
-
Value:
-
-'Cannot access {0}: No such file or directory'
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient._helpers-pysrc.html b/docs/epy/googleapiclient._helpers-pysrc.html deleted file mode 100644 index 8110814a8b8..00000000000 --- a/docs/epy/googleapiclient._helpers-pysrc.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - googleapiclient._helpers - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module _helpers - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient._helpers

-
-  1  # Copyright 2015 Google Inc. All rights reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """Helper functions for commonly used utilities.""" 
- 16   
- 17  import functools 
- 18  import inspect 
- 19  import logging 
- 20  import warnings 
- 21   
- 22  import six 
- 23  from six.moves import urllib 
- 24   
- 25   
- 26  logger = logging.getLogger(__name__) 
- 27   
- 28  POSITIONAL_WARNING = "WARNING" 
- 29  POSITIONAL_EXCEPTION = "EXCEPTION" 
- 30  POSITIONAL_IGNORE = "IGNORE" 
- 31  POSITIONAL_SET = frozenset( 
- 32      [POSITIONAL_WARNING, POSITIONAL_EXCEPTION, POSITIONAL_IGNORE] 
- 33  ) 
- 34   
- 35  positional_parameters_enforcement = POSITIONAL_WARNING 
- 36   
- 37  _SYM_LINK_MESSAGE = "File: {0}: Is a symbolic link." 
- 38  _IS_DIR_MESSAGE = "{0}: Is a directory" 
- 39  _MISSING_FILE_MESSAGE = "Cannot access {0}: No such file or directory" 
-
40 - 41 - 42 -def positional(max_positional_args): -
43 """A decorator to declare that only the first N arguments may be positional. - 44 - 45 This decorator makes it easy to support Python 3 style keyword-only - 46 parameters. For example, in Python 3 it is possible to write:: - 47 - 48 def fn(pos1, *, kwonly1=None, kwonly1=None): - 49 ... - 50 - 51 All named parameters after ``*`` must be a keyword:: - 52 - 53 fn(10, 'kw1', 'kw2') # Raises exception. - 54 fn(10, kwonly1='kw1') # Ok. - 55 - 56 Example - 57 ^^^^^^^ - 58 - 59 To define a function like above, do:: - 60 - 61 @positional(1) - 62 def fn(pos1, kwonly1=None, kwonly2=None): - 63 ... - 64 - 65 If no default value is provided to a keyword argument, it becomes a - 66 required keyword argument:: - 67 - 68 @positional(0) - 69 def fn(required_kw): - 70 ... - 71 - 72 This must be called with the keyword parameter:: - 73 - 74 fn() # Raises exception. - 75 fn(10) # Raises exception. - 76 fn(required_kw=10) # Ok. - 77 - 78 When defining instance or class methods always remember to account for - 79 ``self`` and ``cls``:: - 80 - 81 class MyClass(object): - 82 - 83 @positional(2) - 84 def my_method(self, pos1, kwonly1=None): - 85 ... - 86 - 87 @classmethod - 88 @positional(2) - 89 def my_method(cls, pos1, kwonly1=None): - 90 ... - 91 - 92 The positional decorator behavior is controlled by - 93 ``_helpers.positional_parameters_enforcement``, which may be set to - 94 ``POSITIONAL_EXCEPTION``, ``POSITIONAL_WARNING`` or - 95 ``POSITIONAL_IGNORE`` to raise an exception, log a warning, or do - 96 nothing, respectively, if a declaration is violated. - 97 - 98 Args: - 99 max_positional_arguments: Maximum number of positional arguments. All -100 parameters after the this index must be -101 keyword only. -102 -103 Returns: -104 A decorator that prevents using arguments after max_positional_args -105 from being used as positional parameters. -106 -107 Raises: -108 TypeError: if a key-word only argument is provided as a positional -109 parameter, but only if -110 _helpers.positional_parameters_enforcement is set to -111 POSITIONAL_EXCEPTION. -112 """ -113 -114 def positional_decorator(wrapped): -115 @functools.wraps(wrapped) -116 def positional_wrapper(*args, **kwargs): -117 if len(args) > max_positional_args: -118 plural_s = "" -119 if max_positional_args != 1: -120 plural_s = "s" -121 message = ( -122 "{function}() takes at most {args_max} positional " -123 "argument{plural} ({args_given} given)".format( -124 function=wrapped.__name__, -125 args_max=max_positional_args, -126 args_given=len(args), -127 plural=plural_s, -128 ) -129 ) -130 if positional_parameters_enforcement == POSITIONAL_EXCEPTION: -131 raise TypeError(message) -132 elif positional_parameters_enforcement == POSITIONAL_WARNING: -133 logger.warning(message) -134 return wrapped(*args, **kwargs) -
135 -136 return positional_wrapper -137 -138 if isinstance(max_positional_args, six.integer_types): -139 return positional_decorator -140 else: -141 args, _, _, defaults = inspect.getargspec(max_positional_args) -142 return positional(len(args) - len(defaults))(max_positional_args) -143 -
144 -145 -def parse_unique_urlencoded(content): -
146 """Parses unique key-value parameters from urlencoded content. -147 -148 Args: -149 content: string, URL-encoded key-value pairs. -150 -151 Returns: -152 dict, The key-value pairs from ``content``. -153 -154 Raises: -155 ValueError: if one of the keys is repeated. -156 """ -157 urlencoded_params = urllib.parse.parse_qs(content) -158 params = {} -159 for key, value in six.iteritems(urlencoded_params): -160 if len(value) != 1: -161 msg = "URL-encoded content contains a repeated value:" "%s -> %s" % ( -162 key, -163 ", ".join(value), -164 ) -165 raise ValueError(msg) -166 params[key] = value[0] -167 return params -
168 -
169 -170 -def update_query_params(uri, params): -
171 """Updates a URI with new query parameters. -172 -173 If a given key from ``params`` is repeated in the ``uri``, then -174 the URI will be considered invalid and an error will occur. -175 -176 If the URI is valid, then each value from ``params`` will -177 replace the corresponding value in the query parameters (if -178 it exists). -179 -180 Args: -181 uri: string, A valid URI, with potential existing query parameters. -182 params: dict, A dictionary of query parameters. -183 -184 Returns: -185 The same URI but with the new query parameters added. -186 """ -187 parts = urllib.parse.urlparse(uri) -188 query_params = parse_unique_urlencoded(parts.query) -189 query_params.update(params) -190 new_query = urllib.parse.urlencode(query_params) -191 new_parts = parts._replace(query=new_query) -192 return urllib.parse.urlunparse(new_parts) -
193 -
194 -195 -def _add_query_parameter(url, name, value): -
196 """Adds a query parameter to a url. -197 -198 Replaces the current value if it already exists in the URL. -199 -200 Args: -201 url: string, url to add the query parameter to. -202 name: string, query parameter name. -203 value: string, query parameter value. -204 -205 Returns: -206 Updated query parameter. Does not update the url if value is None. -207 """ -208 if value is None: -209 return url -210 else: -211 return update_query_params(url, {name: value}) -
212 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.channel-module.html b/docs/epy/googleapiclient.channel-module.html deleted file mode 100644 index cc6b3c7f18d..00000000000 --- a/docs/epy/googleapiclient.channel-module.html +++ /dev/null @@ -1,490 +0,0 @@ - - - - - googleapiclient.channel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module channel - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module channel

source code

-
-Channel notifications support.
-
-Classes and functions to support channel subscriptions and notifications
-on those channels.
-
-Notes:
-  - This code is based on experimental APIs and is subject to change.
-  - Notification does not do deduplication of notification ids, that's up to
-    the receiver.
-  - Storing the Channel between calls is up to the caller.
-
-
-Example setting up a channel:
-
-  # Create a new channel that gets notifications via webhook.
-  channel = new_webhook_channel("https://example.com/my_web_hook")
-
-  # Store the channel, keyed by 'channel.id'. Store it before calling the
-  # watch method because notifications may start arriving before the watch
-  # method returns.
-  ...
-
-  resp = service.objects().watchAll(
-    bucket="some_bucket_id", body=channel.body()).execute()
-  channel.update(resp)
-
-  # Store the channel, keyed by 'channel.id'. Store it after being updated
-  # since the resource_id value will now be correct, and that's needed to
-  # stop a subscription.
-  ...
-
-
-An example Webhook implementation using webapp2. Note that webapp2 puts
-headers in a case insensitive dictionary, as headers aren't guaranteed to
-always be upper case.
-
-  id = self.request.headers[X_GOOG_CHANNEL_ID]
-
-  # Retrieve the channel by id.
-  channel = ...
-
-  # Parse notification from the headers, including validating the id.
-  n = notification_from_headers(channel, self.request.headers)
-
-  # Do app specific stuff with the notification here.
-  if n.resource_state == 'sync':
-    # Code to handle sync state.
-  elif n.resource_state == 'exists':
-    # Code to handle the exists state.
-  elif n.resource_state == 'not_exists':
-    # Code to handle the not exists state.
-
-
-Example of unsubscribing.
-
-  service.channels().stop(channel.body()).execute()
-
-
- - - - - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - Notification
- A Notification from a Channel. -
-   - - Channel
- A Channel for notifications. -
- - - - - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
_upper_header_keys(headers) - source code - -
- -
-   - - - - - - -
notification_from_headers(channel, - headers)
- Parse a notification from the webhook request headers, validate - the notification, and return a Notification object.
- source code - -
- -
-   - - - - - - -
new_webhook_channel(*args, - **kwargs)
- Create a new webhook Channel.
- source code - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - EPOCH = datetime.datetime(1970, 1, 1, 0, 0) -
-   - - CHANNEL_PARAMS = {'address': 'address', 'expiration': 'expirat... -
-   - - X_GOOG_CHANNEL_ID = 'X-GOOG-CHANNEL-ID' -
-   - - X_GOOG_MESSAGE_NUMBER = 'X-GOOG-MESSAGE-NUMBER' -
-   - - X_GOOG_RESOURCE_STATE = 'X-GOOG-RESOURCE-STATE' -
-   - - X_GOOG_RESOURCE_URI = 'X-GOOG-RESOURCE-URI' -
-   - - X_GOOG_RESOURCE_ID = 'X-GOOG-RESOURCE-ID' -
-   - - __package__ = None -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

notification_from_headers(channel, - headers) -

-
source code  -
- -
-Parse a notification from the webhook request headers, validate
-  the notification, and return a Notification object.
-
-Args:
-  channel: Channel, The channel that the notification is associated with.
-  headers: dict, A dictionary like object that contains the request headers
-    from the webhook HTTP request.
-
-Returns:
-  A Notification object.
-
-Raises:
-  errors.InvalidNotificationError if the notification is invalid.
-  ValueError if the X-GOOG-MESSAGE-NUMBER can't be converted to an int.
-
-
-
-
-
-
- -
- -
- - -
-

new_webhook_channel(*args, - **kwargs) -

-
source code  -
- -
-Create a new webhook Channel.
-
-Args:
-  url: str, URL to post notifications to.
-  token: str, An arbitrary string associated with the channel that
-    is delivered to the target address with each notification delivered
-    over this channel.
-  expiration: datetime.datetime, A time in the future when the channel
-    should expire. Can also be None if the subscription should use the
-    default expiration. Note that different services may have different
-    limits on how long a subscription lasts. Check the response from the
-    watch() method to see the value the service has set for an expiration
-    time.
-  params: dict, Extra parameters to pass on channel creation. Currently
-    not used for webhook channels.
-
-
-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
-
-
-
- - - - - - -
- - - - - -
Variables Details[hide private]
-
- -
- -
-

CHANNEL_PARAMS

- -
-
-
-
Value:
-
-{'address': 'address',
- 'expiration': 'expiration',
- 'id': 'id',
- 'params': 'params',
- 'resourceId': 'resource_id',
- 'resourceUri': 'resource_uri',
- 'token': 'token',
- 'type': 'type'}
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.channel-pysrc.html b/docs/epy/googleapiclient.channel-pysrc.html deleted file mode 100644 index 16b07df5cb2..00000000000 --- a/docs/epy/googleapiclient.channel-pysrc.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - - googleapiclient.channel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module channel - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.channel

-
-  1  # Copyright 2014 Google Inc. All Rights Reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """Channel notifications support. 
- 16   
- 17  Classes and functions to support channel subscriptions and notifications 
- 18  on those channels. 
- 19   
- 20  Notes: 
- 21    - This code is based on experimental APIs and is subject to change. 
- 22    - Notification does not do deduplication of notification ids, that's up to 
- 23      the receiver. 
- 24    - Storing the Channel between calls is up to the caller. 
- 25   
- 26   
- 27  Example setting up a channel: 
- 28   
- 29    # Create a new channel that gets notifications via webhook. 
- 30    channel = new_webhook_channel("https://example.com/my_web_hook") 
- 31   
- 32    # Store the channel, keyed by 'channel.id'. Store it before calling the 
- 33    # watch method because notifications may start arriving before the watch 
- 34    # method returns. 
- 35    ... 
- 36   
- 37    resp = service.objects().watchAll( 
- 38      bucket="some_bucket_id", body=channel.body()).execute() 
- 39    channel.update(resp) 
- 40   
- 41    # Store the channel, keyed by 'channel.id'. Store it after being updated 
- 42    # since the resource_id value will now be correct, and that's needed to 
- 43    # stop a subscription. 
- 44    ... 
- 45   
- 46   
- 47  An example Webhook implementation using webapp2. Note that webapp2 puts 
- 48  headers in a case insensitive dictionary, as headers aren't guaranteed to 
- 49  always be upper case. 
- 50   
- 51    id = self.request.headers[X_GOOG_CHANNEL_ID] 
- 52   
- 53    # Retrieve the channel by id. 
- 54    channel = ... 
- 55   
- 56    # Parse notification from the headers, including validating the id. 
- 57    n = notification_from_headers(channel, self.request.headers) 
- 58   
- 59    # Do app specific stuff with the notification here. 
- 60    if n.resource_state == 'sync': 
- 61      # Code to handle sync state. 
- 62    elif n.resource_state == 'exists': 
- 63      # Code to handle the exists state. 
- 64    elif n.resource_state == 'not_exists': 
- 65      # Code to handle the not exists state. 
- 66   
- 67   
- 68  Example of unsubscribing. 
- 69   
- 70    service.channels().stop(channel.body()).execute() 
- 71  """ 
- 72  from __future__ import absolute_import 
- 73   
- 74  import datetime 
- 75  import uuid 
- 76   
- 77  from googleapiclient import errors 
- 78  from googleapiclient import _helpers as util 
- 79  import six 
- 80   
- 81   
- 82  # The unix time epoch starts at midnight 1970. 
- 83  EPOCH = datetime.datetime.utcfromtimestamp(0) 
- 84   
- 85  # Map the names of the parameters in the JSON channel description to 
- 86  # the parameter names we use in the Channel class. 
- 87  CHANNEL_PARAMS = { 
- 88      "address": "address", 
- 89      "id": "id", 
- 90      "expiration": "expiration", 
- 91      "params": "params", 
- 92      "resourceId": "resource_id", 
- 93      "resourceUri": "resource_uri", 
- 94      "type": "type", 
- 95      "token": "token", 
- 96  } 
- 97   
- 98  X_GOOG_CHANNEL_ID = "X-GOOG-CHANNEL-ID" 
- 99  X_GOOG_MESSAGE_NUMBER = "X-GOOG-MESSAGE-NUMBER" 
-100  X_GOOG_RESOURCE_STATE = "X-GOOG-RESOURCE-STATE" 
-101  X_GOOG_RESOURCE_URI = "X-GOOG-RESOURCE-URI" 
-102  X_GOOG_RESOURCE_ID = "X-GOOG-RESOURCE-ID" 
-
103 -104 -105 -def _upper_header_keys(headers): -
106 new_headers = {} -107 for k, v in six.iteritems(headers): -108 new_headers[k.upper()] = v -109 return new_headers -
110 -
111 -112 -class Notification(object): -
113 """A Notification from a Channel. -114 -115 Notifications are not usually constructed directly, but are returned -116 from functions like notification_from_headers(). -117 -118 Attributes: -119 message_number: int, The unique id number of this notification. -120 state: str, The state of the resource being monitored. -121 uri: str, The address of the resource being monitored. -122 resource_id: str, The unique identifier of the version of the resource at -123 this event. -124 """ -125 -126 @util.positional(5) -
127 - def __init__(self, message_number, state, resource_uri, resource_id): -
128 """Notification constructor. -129 -130 Args: -131 message_number: int, The unique id number of this notification. -132 state: str, The state of the resource being monitored. Can be one -133 of "exists", "not_exists", or "sync". -134 resource_uri: str, The address of the resource being monitored. -135 resource_id: str, The identifier of the watched resource. -136 """ -137 self.message_number = message_number -138 self.state = state -139 self.resource_uri = resource_uri -140 self.resource_id = resource_id -
141 -
142 -143 -class Channel(object): -
144 """A Channel for notifications. -145 -146 Usually not constructed directly, instead it is returned from helper -147 functions like new_webhook_channel(). -148 -149 Attributes: -150 type: str, The type of delivery mechanism used by this channel. For -151 example, 'web_hook'. -152 id: str, A UUID for the channel. -153 token: str, An arbitrary string associated with the channel that -154 is delivered to the target address with each event delivered -155 over this channel. -156 address: str, The address of the receiving entity where events are -157 delivered. Specific to the channel type. -158 expiration: int, The time, in milliseconds from the epoch, when this -159 channel will expire. -160 params: dict, A dictionary of string to string, with additional parameters -161 controlling delivery channel behavior. -162 resource_id: str, An opaque id that identifies the resource that is -163 being watched. Stable across different API versions. -164 resource_uri: str, The canonicalized ID of the watched resource. -165 """ -166 -167 @util.positional(5) -
168 - def __init__( -169 self, -170 type, -171 id, -172 token, -173 address, -174 expiration=None, -175 params=None, -176 resource_id="", -177 resource_uri="", -178 ): -
179 """Create a new Channel. -180 -181 In user code, this Channel constructor will not typically be called -182 manually since there are functions for creating channels for each specific -183 type with a more customized set of arguments to pass. -184 -185 Args: -186 type: str, The type of delivery mechanism used by this channel. For -187 example, 'web_hook'. -188 id: str, A UUID for the channel. -189 token: str, An arbitrary string associated with the channel that -190 is delivered to the target address with each event delivered -191 over this channel. -192 address: str, The address of the receiving entity where events are -193 delivered. Specific to the channel type. -194 expiration: int, The time, in milliseconds from the epoch, when this -195 channel will expire. -196 params: dict, A dictionary of string to string, with additional parameters -197 controlling delivery channel behavior. -198 resource_id: str, An opaque id that identifies the resource that is -199 being watched. Stable across different API versions. -200 resource_uri: str, The canonicalized ID of the watched resource. -201 """ -202 self.type = type -203 self.id = id -204 self.token = token -205 self.address = address -206 self.expiration = expiration -207 self.params = params -208 self.resource_id = resource_id -209 self.resource_uri = resource_uri -
210 -
211 - def body(self): -
212 """Build a body from the Channel. -213 -214 Constructs a dictionary that's appropriate for passing into watch() -215 methods as the value of body argument. -216 -217 Returns: -218 A dictionary representation of the channel. -219 """ -220 result = { -221 "id": self.id, -222 "token": self.token, -223 "type": self.type, -224 "address": self.address, -225 } -226 if self.params: -227 result["params"] = self.params -228 if self.resource_id: -229 result["resourceId"] = self.resource_id -230 if self.resource_uri: -231 result["resourceUri"] = self.resource_uri -232 if self.expiration: -233 result["expiration"] = self.expiration -234 -235 return result -
236 -
237 - def update(self, resp): -
238 """Update a channel with information from the response of watch(). -239 -240 When a request is sent to watch() a resource, the response returned -241 from the watch() request is a dictionary with updated channel information, -242 such as the resource_id, which is needed when stopping a subscription. -243 -244 Args: -245 resp: dict, The response from a watch() method. -246 """ -247 for json_name, param_name in six.iteritems(CHANNEL_PARAMS): -248 value = resp.get(json_name) -249 if value is not None: -250 setattr(self, param_name, value) -
251 -
252 -253 -def notification_from_headers(channel, headers): -
254 """Parse a notification from the webhook request headers, validate -255 the notification, and return a Notification object. -256 -257 Args: -258 channel: Channel, The channel that the notification is associated with. -259 headers: dict, A dictionary like object that contains the request headers -260 from the webhook HTTP request. -261 -262 Returns: -263 A Notification object. -264 -265 Raises: -266 errors.InvalidNotificationError if the notification is invalid. -267 ValueError if the X-GOOG-MESSAGE-NUMBER can't be converted to an int. -268 """ -269 headers = _upper_header_keys(headers) -270 channel_id = headers[X_GOOG_CHANNEL_ID] -271 if channel.id != channel_id: -272 raise errors.InvalidNotificationError( -273 "Channel id mismatch: %s != %s" % (channel.id, channel_id) -274 ) -275 else: -276 message_number = int(headers[X_GOOG_MESSAGE_NUMBER]) -277 state = headers[X_GOOG_RESOURCE_STATE] -278 resource_uri = headers[X_GOOG_RESOURCE_URI] -279 resource_id = headers[X_GOOG_RESOURCE_ID] -280 return Notification(message_number, state, resource_uri, resource_id) -
281 -
282 -283 @util.positional(2) -284 -def new_webhook_channel(url, token=None, expiration=None, params=None): -
285 """Create a new webhook Channel. -286 -287 Args: -288 url: str, URL to post notifications to. -289 token: str, An arbitrary string associated with the channel that -290 is delivered to the target address with each notification delivered -291 over this channel. -292 expiration: datetime.datetime, A time in the future when the channel -293 should expire. Can also be None if the subscription should use the -294 default expiration. Note that different services may have different -295 limits on how long a subscription lasts. Check the response from the -296 watch() method to see the value the service has set for an expiration -297 time. -298 params: dict, Extra parameters to pass on channel creation. Currently -299 not used for webhook channels. -300 """ -301 expiration_ms = 0 -302 if expiration: -303 delta = expiration - EPOCH -304 expiration_ms = ( -305 delta.microseconds / 1000 + (delta.seconds + delta.days * 24 * 3600) * 1000 -306 ) -307 if expiration_ms < 0: -308 expiration_ms = 0 -309 -310 return Channel( -311 "web_hook", -312 str(uuid.uuid4()), -313 token, -314 url, -315 expiration=expiration_ms, -316 params=params, -317 ) -
318 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.channel.Channel-class.html b/docs/epy/googleapiclient.channel.Channel-class.html deleted file mode 100644 index 5a15b5369f3..00000000000 --- a/docs/epy/googleapiclient.channel.Channel-class.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - googleapiclient.channel.Channel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module channel :: - Class Channel - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Channel

source code

-
-object --+
-         |
-        Channel
-
- -
-
-A Channel for notifications.
-
-Usually not constructed directly, instead it is returned from helper
-functions like new_webhook_channel().
-
-Attributes:
-  type: str, The type of delivery mechanism used by this channel. For
-    example, 'web_hook'.
-  id: str, A UUID for the channel.
-  token: str, An arbitrary string associated with the channel that
-    is delivered to the target address with each event delivered
-    over this channel.
-  address: str, The address of the receiving entity where events are
-    delivered. Specific to the channel type.
-  expiration: int, The time, in milliseconds from the epoch, when this
-    channel will expire.
-  params: dict, A dictionary of string to string, with additional parameters
-    controlling delivery channel behavior.
-  resource_id: str, An opaque id that identifies the resource that is
-    being watched. Stable across different API versions.
-  resource_uri: str, The canonicalized ID of the watched resource.
-
-
- - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Create a new Channel.
- source code - -
- -
-   - - - - - - -
body(self)
- Build a body from the Channel.
- source code - -
- -
-   - - - - - - -
update(self, - resp)
- Update a channel with information from the response of watch().
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Create a new Channel.
-
-In user code, this Channel constructor will not typically be called
-manually since there are functions for creating channels for each specific
-type with a more customized set of arguments to pass.
-
-Args:
-  type: str, The type of delivery mechanism used by this channel. For
-    example, 'web_hook'.
-  id: str, A UUID for the channel.
-  token: str, An arbitrary string associated with the channel that
-    is delivered to the target address with each event delivered
-    over this channel.
-  address: str,  The address of the receiving entity where events are
-    delivered. Specific to the channel type.
-  expiration: int, The time, in milliseconds from the epoch, when this
-    channel will expire.
-  params: dict, A dictionary of string to string, with additional parameters
-    controlling delivery channel behavior.
-  resource_id: str, An opaque id that identifies the resource that is
-    being watched. Stable across different API versions.
-  resource_uri: str, The canonicalized ID of the watched resource.
-
-
-
-
Decorators:
-
    -
  • @util.positional(5)
  • -
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

body(self) -

-
source code  -
- -
-Build a body from the Channel.
-
-Constructs a dictionary that's appropriate for passing into watch()
-methods as the value of body argument.
-
-Returns:
-  A dictionary representation of the channel.
-
-
-
-
-
-
- -
- -
- - -
-

update(self, - resp) -

-
source code  -
- -
-Update a channel with information from the response of watch().
-
-When a request is sent to watch() a resource, the response returned
-from the watch() request is a dictionary with updated channel information,
-such as the resource_id, which is needed when stopping a subscription.
-
-Args:
-  resp: dict, The response from a watch() method.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.channel.Notification-class.html b/docs/epy/googleapiclient.channel.Notification-class.html deleted file mode 100644 index 2960e086f3b..00000000000 --- a/docs/epy/googleapiclient.channel.Notification-class.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - googleapiclient.channel.Notification - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module channel :: - Class Notification - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Notification

source code

-
-object --+
-         |
-        Notification
-
- -
-
-A Notification from a Channel.
-
-Notifications are not usually constructed directly, but are returned
-from functions like notification_from_headers().
-
-Attributes:
-  message_number: int, The unique id number of this notification.
-  state: str, The state of the resource being monitored.
-  uri: str, The address of the resource being monitored.
-  resource_id: str, The unique identifier of the version of the resource at
-    this event.
-
-
- - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Notification constructor.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Notification constructor.
-
-Args:
-  message_number: int, The unique id number of this notification.
-  state: str, The state of the resource being monitored. Can be one
-    of "exists", "not_exists", or "sync".
-  resource_uri: str, The address of the resource being monitored.
-  resource_id: str, The identifier of the watched resource.
-
-
-
-
Decorators:
-
    -
  • @util.positional(5)
  • -
-
Overrides: - object.__init__ -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery-module.html b/docs/epy/googleapiclient.discovery-module.html deleted file mode 100644 index ecf85168715..00000000000 --- a/docs/epy/googleapiclient.discovery-module.html +++ /dev/null @@ -1,1564 +0,0 @@ - - - - - googleapiclient.discovery - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module discovery - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module discovery

source code

-

Client for discovery based APIs.

-

A client library for Google's discovery based APIs.

- -
-

Author: - jcgregorio@google.com (Joe Gregorio) -

-
- - - - - - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - _BytesGenerator -
-   - - ResourceMethodParameters
- Represents the parameters associated with a method. -
-   - - Resource
- A class for interacting with a resource. -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
fix_method_name(name)
- Fix method names to avoid '$' characters and reserved word conflicts.
- source code - -
- -
-   - - - - - - -
key2param(key)
- Converts key names into parameter names.
- source code - -
- -
-   - - - - - - -
build(serviceName, - version, - http=None, - discoveryServiceUrl=DISCOVERY_URI, - developerKey=None, - model=None, - requestBuilder=HttpRequest, - credentials=None, - cache_discovery=True, - cache=None, - client_options=None, - adc_cert_path=None, - adc_key_path=None, - num_retries=1)
- Construct a Resource for interacting with an API.
- source code - -
- -
-   - - - - - - -
_discovery_service_uri_options(discoveryServiceUrl, - version)
- Returns Discovery URIs to be used for attemnting to build the API Resource.
- source code - -
- -
-   - - - - - - -
_retrieve_discovery_doc(url, - http, - cache_discovery, - cache=None, - developerKey=None, - num_retries=1)
- Retrieves the discovery_doc from cache or the internet.
- source code - -
- -
-   - - - - - - -
build_from_document(service, - base=None, - future=None, - http=None, - developerKey=None, - model=None, - requestBuilder=HttpRequest, - credentials=None, - client_options=None, - adc_cert_path=None, - adc_key_path=None)
- Create a Resource for interacting with an API.
- source code - -
- -
-   - - - - - - -
_cast(value, - schema_type)
- Convert value to a string based on JSON Schema type.
- source code - -
- -
-   - - - - - - -
_media_size_to_long(maxSize)
- Convert a string media size, such as 10GB or 3TB into an integer.
- source code - -
- -
-   - - - - - - -
_media_path_url_from_info(root_desc, - path_url)
- Creates an absolute media path URL.
- source code - -
- -
-   - - - - - - -
_fix_up_parameters(method_desc, - root_desc, - http_method, - schema)
- Updates parameters of an API method with values specific to this library.
- source code - -
- -
-   - - - - - - -
_fix_up_media_upload(method_desc, - root_desc, - path_url, - parameters)
- Adds 'media_body' and 'media_mime_type' parameters if supported by method.
- source code - -
- -
-   - - - - - - -
_fix_up_method_description(method_desc, - root_desc, - schema)
- Updates a method description in a discovery document.
- source code - -
- -
-   - - - - - - -
_urljoin(base, - url)
- Custom urljoin replacement supporting : before / in url.
- source code - -
- -
-   - - - - - - -
createMethod(methodName, - methodDesc, - rootDesc, - schema)
- Creates a method for attaching to a Resource.
- source code - -
- -
-   - - - - - - -
createNextMethod(methodName, - pageTokenName="pageToken", - nextPageTokenName="nextPageToken", - isPageTokenParameter=True)
- Creates any _next methods for attaching to a Resource.
- source code - -
- -
-   - - - - - - -
_findPageTokenName(fields)
- Search field names for one like a page token.
- source code - -
- -
-   - - - - - - -
_methodProperties(methodDesc, - schema, - name)
- Get properties of a field in a method description.
- source code - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - google_auth_httplib2 = None -
-   - - logger = logging.getLogger(__name__) -
-   - - URITEMPLATE = re.compile("{[^}]*}") -
-   - - VARNAME = re.compile("[a-zA-Z0-9_-]+") -
-   - - DISCOVERY_URI = "https://www.googleapis.com/discovery/v1/apis/... -
-   - - V1_DISCOVERY_URI = "https://www.googleapis.com/discovery/v1/ap... -
-   - - V2_DISCOVERY_URI = "https://{api}.googleapis.com/$discovery/re... -
-   - - DEFAULT_METHOD_DOC = "A description of how to use this function" -
-   - - HTTP_PAYLOAD_METHODS = frozenset(["PUT", "POST", "PATCH"]) -
-   - - _MEDIA_SIZE_BIT_SHIFTS = {"KB": 10, "MB": 20, "GB": 30, "TB": 40} -
-   - - BODY_PARAMETER_DEFAULT_VALUE = {"description": "The request bo... -
-   - - MEDIA_BODY_PARAMETER_DEFAULT_VALUE = {"description":("The file... -
-   - - MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE = {"description":("The... -
-   - - _PAGE_TOKEN_NAMES = "pageToken", "nextPageToken" -
-   - - GOOGLE_API_USE_CLIENT_CERTIFICATE = "GOOGLE_API_USE_CLIENT_CER... -
-   - - GOOGLE_API_USE_MTLS_ENDPOINT = "GOOGLE_API_USE_MTLS_ENDPOINT" -
-   - - STACK_QUERY_PARAMETERS = frozenset(["trace", "pp", "userip", "... -
-   - - STACK_QUERY_PARAMETER_DEFAULT_VALUE = {"type": "string", "loca... -
-   - - RESERVED_WORDS = frozenset(["body"]) -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

fix_method_name(name) -

-
source code  -
- -
-Fix method names to avoid '$' characters and reserved word conflicts.
-
-Args:
-  name: string, method name.
-
-Returns:
-  The name with '_' appended if the name is a reserved word and '$' and '-'
-  replaced with '_'.
-
-
-
-
-
-
- -
- -
- - -
-

key2param(key) -

-
source code  -
- -
-Converts key names into parameter names.
-
-For example, converting "max-results" -> "max_results"
-
-Args:
-  key: string, the method key name.
-
-Returns:
-  A safe method name based on the key name.
-
-
-
-
-
-
- -
- -
- - -
-

build(serviceName, - version, - http=None, - discoveryServiceUrl=DISCOVERY_URI, - developerKey=None, - model=None, - requestBuilder=HttpRequest, - credentials=None, - cache_discovery=True, - cache=None, - client_options=None, - adc_cert_path=None, - adc_key_path=None, - num_retries=1) -

-
source code  -
- -
-Construct a Resource for interacting with an API.
-
-Construct a Resource object for interacting with an API. The serviceName and
-version are the names from the Discovery service.
-
-Args:
-  serviceName: string, name of the service.
-  version: string, the version of the service.
-  http: httplib2.Http, An instance of httplib2.Http or something that acts
-    like it that HTTP requests will be made through.
-  discoveryServiceUrl: string, a URI Template that points to the location of
-    the discovery service. It should have two parameters {api} and
-    {apiVersion} that when filled in produce an absolute URI to the discovery
-    document for that service.
-  developerKey: string, key obtained from
-    https://code.google.com/apis/console.
-  model: googleapiclient.Model, converts to and from the wire format.
-  requestBuilder: googleapiclient.http.HttpRequest, encapsulator for an HTTP
-    request.
-  credentials: oauth2client.Credentials or
-    google.auth.credentials.Credentials, credentials to be used for
-    authentication.
-  cache_discovery: Boolean, whether or not to cache the discovery doc.
-  cache: googleapiclient.discovery_cache.base.CacheBase, an optional
-    cache object for the discovery documents.
-  client_options: Mapping object or google.api_core.client_options, client
-    options to set user options on the client.
-    (1) The API endpoint should be set through client_options. If API endpoint
-    is not set, `GOOGLE_API_USE_MTLS_ENDPOINT` environment variable can be used
-    to control which endpoint to use.
-    (2) client_cert_source is not supported, client cert should be provided using
-    client_encrypted_cert_source instead. In order to use the provided client
-    cert, `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be
-    set to `true`.
-    More details on the environment variables are here:
-    https://google.aip.dev/auth/4114
-  adc_cert_path: str, client certificate file path to save the application
-    default client certificate for mTLS. This field is required if you want to
-    use the default client certificate. `GOOGLE_API_USE_CLIENT_CERTIFICATE`
-    environment variable must be set to `true` in order to use this field,
-    otherwise this field doesn't nothing.
-    More details on the environment variables are here:
-    https://google.aip.dev/auth/4114
-  adc_key_path: str, client encrypted private key file path to save the
-    application default client encrypted private key for mTLS. This field is
-    required if you want to use the default client certificate.
-    `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be set to
-    `true` in order to use this field, otherwise this field doesn't nothing.
-    More details on the environment variables are here:
-    https://google.aip.dev/auth/4114
-  num_retries: Integer, number of times to retry discovery with
-    randomized exponential backoff in case of intermittent/connection issues.
-
-Returns:
-  A Resource object with methods for interacting with the service.
-
-Raises:
-  google.auth.exceptions.MutualTLSChannelError: if there are any problems
-    setting up mutual TLS channel.
-
-
-
-
Decorators:
-
    -
  • @positional(2)
  • -
-
-
-
- -
- -
- - -
-

_discovery_service_uri_options(discoveryServiceUrl, - version) -

-
source code  -
- -
-
-  Returns Discovery URIs to be used for attemnting to build the API Resource.
-
-Args:
-  discoveryServiceUrl:
-      string, the Original Discovery Service URL preferred by the customer.
-  version:
-      string, API Version requested
-
-Returns:
-    A list of URIs to be tried for the Service Discovery, in order.
-  
-
-
-
-
-
-
- -
- -
- - -
-

_retrieve_discovery_doc(url, - http, - cache_discovery, - cache=None, - developerKey=None, - num_retries=1) -

-
source code  -
- -
-Retrieves the discovery_doc from cache or the internet.
-
-Args:
-  url: string, the URL of the discovery document.
-  http: httplib2.Http, An instance of httplib2.Http or something that acts
-    like it through which HTTP requests will be made.
-  cache_discovery: Boolean, whether or not to cache the discovery doc.
-  cache: googleapiclient.discovery_cache.base.Cache, an optional cache
-    object for the discovery documents.
-  developerKey: string, Key for controlling API usage, generated
-    from the API Console.
-  num_retries: Integer, number of times to retry discovery with
-    randomized exponential backoff in case of intermittent/connection issues.
-
-Returns:
-  A unicode string representation of the discovery document.
-
-
-
-
-
-
- -
- -
- - -
-

build_from_document(service, - base=None, - future=None, - http=None, - developerKey=None, - model=None, - requestBuilder=HttpRequest, - credentials=None, - client_options=None, - adc_cert_path=None, - adc_key_path=None) -

-
source code  -
- -
-Create a Resource for interacting with an API.
-
-Same as `build()`, but constructs the Resource object from a discovery
-document that is it given, as opposed to retrieving one over HTTP.
-
-Args:
-  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)
-  future: string, discovery document with future capabilities (deprecated).
-  http: httplib2.Http, An instance of httplib2.Http or something that acts
-    like it that HTTP requests will be made through.
-  developerKey: string, Key for controlling API usage, generated
-    from the API Console.
-  model: Model class instance that serializes and de-serializes requests and
-    responses.
-  requestBuilder: Takes an http request and packages it up to be executed.
-  credentials: oauth2client.Credentials or
-    google.auth.credentials.Credentials, credentials to be used for
-    authentication.
-  client_options: Mapping object or google.api_core.client_options, client
-    options to set user options on the client.
-    (1) The API endpoint should be set through client_options. If API endpoint
-    is not set, `GOOGLE_API_USE_MTLS_ENDPOINT` environment variable can be used
-    to control which endpoint to use.
-    (2) client_cert_source is not supported, client cert should be provided using
-    client_encrypted_cert_source instead. In order to use the provided client
-    cert, `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be
-    set to `true`.
-    More details on the environment variables are here:
-    https://google.aip.dev/auth/4114
-  adc_cert_path: str, client certificate file path to save the application
-    default client certificate for mTLS. This field is required if you want to
-    use the default client certificate. `GOOGLE_API_USE_CLIENT_CERTIFICATE`
-    environment variable must be set to `true` in order to use this field,
-    otherwise this field doesn't nothing.
-    More details on the environment variables are here:
-    https://google.aip.dev/auth/4114
-  adc_key_path: str, client encrypted private key file path to save the
-    application default client encrypted private key for mTLS. This field is
-    required if you want to use the default client certificate.
-    `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be set to
-    `true` in order to use this field, otherwise this field doesn't nothing.
-    More details on the environment variables are here:
-    https://google.aip.dev/auth/4114
-
-Returns:
-  A Resource object with methods for interacting with the service.
-
-Raises:
-  google.auth.exceptions.MutualTLSChannelError: if there are any problems
-    setting up mutual TLS channel.
-
-
-
-
Decorators:
-
    -
  • @positional(1)
  • -
-
-
-
- -
- -
- - -
-

_cast(value, - schema_type) -

-
source code  -
- -
-Convert value to a string based on JSON Schema type.
-
-See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on
-JSON Schema.
-
-Args:
-  value: any, the value to convert
-  schema_type: string, the type that value should be interpreted as
-
-Returns:
-  A string representation of 'value' based on the schema_type.
-
-
-
-
-
-
- -
- -
- - -
-

_media_size_to_long(maxSize) -

-
source code  -
- -
-Convert a string media size, such as 10GB or 3TB into an integer.
-
-Args:
-  maxSize: string, size as a string, such as 2MB or 7GB.
-
-Returns:
-  The size as an integer value.
-
-
-
-
-
-
- -
- -
- - -
-

_media_path_url_from_info(root_desc, - path_url) -

-
source code  -
- -
-Creates an absolute media path URL.
-
-Constructed using the API root URI and service path from the discovery
-document and the relative path for the API method.
-
-Args:
-  root_desc: Dictionary; the entire original deserialized discovery document.
-  path_url: String; the relative URL for the API method. Relative to the API
-      root, which is specified in the discovery document.
-
-Returns:
-  String; the absolute URI for media upload for the API method.
-
-
-
-
-
-
- -
- -
- - -
-

_fix_up_parameters(method_desc, - root_desc, - http_method, - schema) -

-
source code  -
- -
-Updates parameters of an API method with values specific to this library.
-
-Specifically, adds whatever global parameters are specified by the API to the
-parameters for the individual method. Also adds parameters which don't
-appear in the discovery document, but are available to all discovery based
-APIs (these are listed in STACK_QUERY_PARAMETERS).
-
-SIDE EFFECTS: This updates the parameters dictionary object in the method
-description.
-
-Args:
-  method_desc: Dictionary with metadata describing an API method. Value comes
-      from the dictionary of methods stored in the 'methods' key in the
-      deserialized discovery document.
-  root_desc: Dictionary; the entire original deserialized discovery document.
-  http_method: String; the HTTP method used to call the API method described
-      in method_desc.
-  schema: Object, mapping of schema names to schema descriptions.
-
-Returns:
-  The updated Dictionary stored in the 'parameters' key of the method
-      description dictionary.
-
-
-
-
-
-
- -
- -
- - -
-

_fix_up_media_upload(method_desc, - root_desc, - path_url, - parameters) -

-
source code  -
- -
-Adds 'media_body' and 'media_mime_type' parameters if supported by method.
-
-SIDE EFFECTS: If there is a 'mediaUpload' in the method description, adds
-'media_upload' key to parameters.
-
-Args:
-  method_desc: Dictionary with metadata describing an API method. Value comes
-      from the dictionary of methods stored in the 'methods' key in the
-      deserialized discovery document.
-  root_desc: Dictionary; the entire original deserialized discovery document.
-  path_url: String; the relative URL for the API method. Relative to the API
-      root, which is specified in the discovery document.
-  parameters: A dictionary describing method parameters for method described
-      in method_desc.
-
-Returns:
-  Triple (accept, max_size, media_path_url) where:
-    - accept is a list of strings representing what content types are
-      accepted for media upload. Defaults to empty list if not in the
-      discovery document.
-    - max_size is a long representing the max size in bytes allowed for a
-      media upload. Defaults to 0L if not in the discovery document.
-    - media_path_url is a String; the absolute URI for media upload for the
-      API method. Constructed using the API root URI and service path from
-      the discovery document and the relative path for the API method. If
-      media upload is not supported, this is None.
-
-
-
-
-
-
- -
- -
- - -
-

_fix_up_method_description(method_desc, - root_desc, - schema) -

-
source code  -
- -
-Updates a method description in a discovery document.
-
-SIDE EFFECTS: Changes the parameters dictionary in the method description with
-extra parameters which are used locally.
-
-Args:
-  method_desc: Dictionary with metadata describing an API method. Value comes
-      from the dictionary of methods stored in the 'methods' key in the
-      deserialized discovery document.
-  root_desc: Dictionary; the entire original deserialized discovery document.
-  schema: Object, mapping of schema names to schema descriptions.
-
-Returns:
-  Tuple (path_url, http_method, method_id, accept, max_size, media_path_url)
-  where:
-    - path_url is a String; the relative URL for the API method. Relative to
-      the API root, which is specified in the discovery document.
-    - http_method is a String; the HTTP method used to call the API method
-      described in the method description.
-    - method_id is a String; the name of the RPC method associated with the
-      API method, and is in the method description in the 'id' key.
-    - accept is a list of strings representing what content types are
-      accepted for media upload. Defaults to empty list if not in the
-      discovery document.
-    - max_size is a long representing the max size in bytes allowed for a
-      media upload. Defaults to 0L if not in the discovery document.
-    - media_path_url is a String; the absolute URI for media upload for the
-      API method. Constructed using the API root URI and service path from
-      the discovery document and the relative path for the API method. If
-      media upload is not supported, this is None.
-
-
-
-
-
-
- -
- -
- - -
-

createMethod(methodName, - methodDesc, - rootDesc, - schema) -

-
source code  -
- -
-Creates a method for attaching to a Resource.
-
-Args:
-  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.
-
-
-
-
-
-
- -
- -
- - -
-

createNextMethod(methodName, - pageTokenName="pageToken", - nextPageTokenName="nextPageToken", - isPageTokenParameter=True) -

-
source code  -
- -
-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.
-  pageTokenName: string, name of request page token field.
-  nextPageTokenName: string, name of response page token field.
-  isPageTokenParameter: Boolean, True if request page token is a query
-      parameter, False if request page token is a field of the request body.
-
-
-
-
-
-
- -
- -
- - -
-

_findPageTokenName(fields) -

-
source code  -
- -
-Search field names for one like a page token.
-
-Args:
-  fields: container of string, names of fields.
-
-Returns:
-  First name that is either 'pageToken' or 'nextPageToken' if one exists,
-  otherwise None.
-
-
-
-
-
-
- -
- -
- - -
-

_methodProperties(methodDesc, - schema, - name) -

-
source code  -
- -
-Get properties of a field in a method description.
-
-Args:
-  methodDesc: object, fragment of deserialized discovery document that
-    describes the method.
-  schema: object, mapping of schema names to schema descriptions.
-  name: string, name of top-level field in method description.
-
-Returns:
-  Object representing fragment of deserialized discovery document
-  corresponding to 'properties' field of object corresponding to named field
-  in method description, if it exists, otherwise empty dict.
-
-
-
-
-
-
-
- - - - - - -
- - - - - -
Variables Details[hide private]
-
- -
- -
-

DISCOVERY_URI

- -
-
-
-
Value:
-
-"https://www.googleapis.com/discovery/v1/apis/" "{api}/{apiVersion}/re\
-st"
-
-
-
-
-
- -
- -
-

V1_DISCOVERY_URI

- -
-
-
-
Value:
-
-"https://www.googleapis.com/discovery/v1/apis/" "{api}/{apiVersion}/re\
-st"
-
-
-
-
-
- -
- -
-

V2_DISCOVERY_URI

- -
-
-
-
Value:
-
-"https://{api}.googleapis.com/$discovery/rest?" "version={apiVersion}"
-
-
-
-
-
- -
- -
-

BODY_PARAMETER_DEFAULT_VALUE

- -
-
-
-
Value:
-
-{"description": "The request body.", "type": "object"}
-
-
-
-
-
- -
- -
-

MEDIA_BODY_PARAMETER_DEFAULT_VALUE

- -
-
-
-
Value:
-
-{"description":("The filename of the media request body, or an instanc\
-e " "of a MediaUpload object."), "type": "string", "required": False,}
-
-
-
-
-
- -
- -
-

MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE

- -
-
-
-
Value:
-
-{"description":("The MIME type of the media request body, or an instan\
-ce " "of a MediaUpload object."), "type": "string", "required": False,\
-}
-
-
-
-
-
- -
- -
-

GOOGLE_API_USE_CLIENT_CERTIFICATE

- -
-
-
-
Value:
-
-"GOOGLE_API_USE_CLIENT_CERTIFICATE"
-
-
-
-
-
- -
- -
-

STACK_QUERY_PARAMETERS

- -
-
-
-
Value:
-
-frozenset(["trace", "pp", "userip", "strict"])
-
-
-
-
-
- -
- -
-

STACK_QUERY_PARAMETER_DEFAULT_VALUE

- -
-
-
-
Value:
-
-{"type": "string", "location": "query"}
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery-pysrc.html b/docs/epy/googleapiclient.discovery-pysrc.html deleted file mode 100644 index d063c472d52..00000000000 --- a/docs/epy/googleapiclient.discovery-pysrc.html +++ /dev/null @@ -1,1806 +0,0 @@ - - - - - googleapiclient.discovery - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module discovery - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.discovery

-
-   1  # Copyright 2014 Google Inc. All Rights Reserved. 
-   2  # 
-   3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-   4  # you may not use this file except in compliance with the License. 
-   5  # You may obtain a copy of the License at 
-   6  # 
-   7  #      http://www.apache.org/licenses/LICENSE-2.0 
-   8  # 
-   9  # Unless required by applicable law or agreed to in writing, software 
-  10  # distributed under the License is distributed on an "AS IS" BASIS, 
-  11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-  12  # See the License for the specific language governing permissions and 
-  13  # limitations under the License. 
-  14   
-  15  """Client for discovery based APIs. 
-  16   
-  17  A client library for Google's discovery based APIs. 
-  18  """ 
-  19  from __future__ import absolute_import 
-  20  import six 
-  21  from six.moves import zip 
-  22   
-  23  __author__ = "jcgregorio@google.com (Joe Gregorio)" 
-  24  __all__ = ["build", "build_from_document", "fix_method_name", "key2param"] 
-  25   
-  26  from six import BytesIO 
-  27  from six.moves import http_client 
-  28  from six.moves.urllib.parse import urlencode, urlparse, urljoin, urlunparse, parse_qsl 
-  29   
-  30  # Standard library imports 
-  31  import copy 
-  32  from collections import OrderedDict 
-  33   
-  34  try: 
-  35      from email.generator import BytesGenerator 
-  36  except ImportError: 
-  37      from email.generator import Generator as BytesGenerator 
-  38  from email.mime.multipart import MIMEMultipart 
-  39  from email.mime.nonmultipart import MIMENonMultipart 
-  40  import json 
-  41  import keyword 
-  42  import logging 
-  43  import mimetypes 
-  44  import os 
-  45  import re 
-  46   
-  47  # Third-party imports 
-  48  import httplib2 
-  49  import uritemplate 
-  50  import google.api_core.client_options 
-  51  from google.auth.transport import mtls 
-  52  from google.auth.exceptions import MutualTLSChannelError 
-  53   
-  54  try: 
-  55      import google_auth_httplib2 
-  56  except ImportError:  # pragma: NO COVER 
-  57      google_auth_httplib2 = None 
-  58   
-  59  # Local imports 
-  60  from googleapiclient import _auth 
-  61  from googleapiclient import mimeparse 
-  62  from googleapiclient.errors import HttpError 
-  63  from googleapiclient.errors import InvalidJsonError 
-  64  from googleapiclient.errors import MediaUploadSizeError 
-  65  from googleapiclient.errors import UnacceptableMimeTypeError 
-  66  from googleapiclient.errors import UnknownApiNameOrVersion 
-  67  from googleapiclient.errors import UnknownFileType 
-  68  from googleapiclient.http import build_http 
-  69  from googleapiclient.http import BatchHttpRequest 
-  70  from googleapiclient.http import HttpMock 
-  71  from googleapiclient.http import HttpMockSequence 
-  72  from googleapiclient.http import HttpRequest 
-  73  from googleapiclient.http import MediaFileUpload 
-  74  from googleapiclient.http import MediaUpload 
-  75  from googleapiclient.model import JsonModel 
-  76  from googleapiclient.model import MediaModel 
-  77  from googleapiclient.model import RawModel 
-  78  from googleapiclient.schema import Schemas 
-  79   
-  80  from googleapiclient._helpers import _add_query_parameter 
-  81  from googleapiclient._helpers import positional 
-  82   
-  83   
-  84  # The client library requires a version of httplib2 that supports RETRIES. 
-  85  httplib2.RETRIES = 1 
-  86   
-  87  logger = logging.getLogger(__name__) 
-  88   
-  89  URITEMPLATE = re.compile("{[^}]*}") 
-  90  VARNAME = re.compile("[a-zA-Z0-9_-]+") 
-  91  DISCOVERY_URI = ( 
-  92      "https://www.googleapis.com/discovery/v1/apis/" "{api}/{apiVersion}/rest" 
-  93  ) 
-  94  V1_DISCOVERY_URI = DISCOVERY_URI 
-  95  V2_DISCOVERY_URI = ( 
-  96      "https://{api}.googleapis.com/$discovery/rest?" "version={apiVersion}" 
-  97  ) 
-  98  DEFAULT_METHOD_DOC = "A description of how to use this function" 
-  99  HTTP_PAYLOAD_METHODS = frozenset(["PUT", "POST", "PATCH"]) 
- 100   
- 101  _MEDIA_SIZE_BIT_SHIFTS = {"KB": 10, "MB": 20, "GB": 30, "TB": 40} 
- 102  BODY_PARAMETER_DEFAULT_VALUE = {"description": "The request body.", "type": "object"} 
- 103  MEDIA_BODY_PARAMETER_DEFAULT_VALUE = { 
- 104      "description": ( 
- 105          "The filename of the media request body, or an instance " 
- 106          "of a MediaUpload object." 
- 107      ), 
- 108      "type": "string", 
- 109      "required": False, 
- 110  } 
- 111  MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE = { 
- 112      "description": ( 
- 113          "The MIME type of the media request body, or an instance " 
- 114          "of a MediaUpload object." 
- 115      ), 
- 116      "type": "string", 
- 117      "required": False, 
- 118  } 
- 119  _PAGE_TOKEN_NAMES = ("pageToken", "nextPageToken") 
- 120   
- 121  # Parameters controlling mTLS behavior. See https://google.aip.dev/auth/4114. 
- 122  GOOGLE_API_USE_CLIENT_CERTIFICATE = "GOOGLE_API_USE_CLIENT_CERTIFICATE" 
- 123  GOOGLE_API_USE_MTLS_ENDPOINT = "GOOGLE_API_USE_MTLS_ENDPOINT" 
- 124   
- 125  # Parameters accepted by the stack, but not visible via discovery. 
- 126  # TODO(dhermes): Remove 'userip' in 'v2'. 
- 127  STACK_QUERY_PARAMETERS = frozenset(["trace", "pp", "userip", "strict"]) 
- 128  STACK_QUERY_PARAMETER_DEFAULT_VALUE = {"type": "string", "location": "query"} 
- 129   
- 130  # Library-specific reserved words beyond Python keywords. 
- 131  RESERVED_WORDS = frozenset(["body"]) 
-
132 - 133 # patch _write_lines to avoid munging '\r' into '\n' - 134 # ( https://bugs.python.org/issue18886 https://bugs.python.org/issue19003 ) - 135 -class _BytesGenerator(BytesGenerator): -
136 _write_lines = BytesGenerator.write -
137 -
138 - 139 -def fix_method_name(name): -
140 """Fix method names to avoid '$' characters and reserved word conflicts. - 141 - 142 Args: - 143 name: string, method name. - 144 - 145 Returns: - 146 The name with '_' appended if the name is a reserved word and '$' and '-' - 147 replaced with '_'. - 148 """ - 149 name = name.replace("$", "_").replace("-", "_") - 150 if keyword.iskeyword(name) or name in RESERVED_WORDS: - 151 return name + "_" - 152 else: - 153 return name -
154 -
155 - 156 -def key2param(key): -
157 """Converts key names into parameter names. - 158 - 159 For example, converting "max-results" -> "max_results" - 160 - 161 Args: - 162 key: string, the method key name. - 163 - 164 Returns: - 165 A safe method name based on the key name. - 166 """ - 167 result = [] - 168 key = list(key) - 169 if not key[0].isalpha(): - 170 result.append("x") - 171 for c in key: - 172 if c.isalnum(): - 173 result.append(c) - 174 else: - 175 result.append("_") - 176 - 177 return "".join(result) -
178 -
179 - 180 @positional(2) - 181 -def build( - 182 serviceName, - 183 version, - 184 http=None, - 185 discoveryServiceUrl=DISCOVERY_URI, - 186 developerKey=None, - 187 model=None, - 188 requestBuilder=HttpRequest, - 189 credentials=None, - 190 cache_discovery=True, - 191 cache=None, - 192 client_options=None, - 193 adc_cert_path=None, - 194 adc_key_path=None, - 195 num_retries=1, - 196 ): -
197 """Construct a Resource for interacting with an API. - 198 - 199 Construct a Resource object for interacting with an API. The serviceName and - 200 version are the names from the Discovery service. - 201 - 202 Args: - 203 serviceName: string, name of the service. - 204 version: string, the version of the service. - 205 http: httplib2.Http, An instance of httplib2.Http or something that acts - 206 like it that HTTP requests will be made through. - 207 discoveryServiceUrl: string, a URI Template that points to the location of - 208 the discovery service. It should have two parameters {api} and - 209 {apiVersion} that when filled in produce an absolute URI to the discovery - 210 document for that service. - 211 developerKey: string, key obtained from - 212 https://code.google.com/apis/console. - 213 model: googleapiclient.Model, converts to and from the wire format. - 214 requestBuilder: googleapiclient.http.HttpRequest, encapsulator for an HTTP - 215 request. - 216 credentials: oauth2client.Credentials or - 217 google.auth.credentials.Credentials, credentials to be used for - 218 authentication. - 219 cache_discovery: Boolean, whether or not to cache the discovery doc. - 220 cache: googleapiclient.discovery_cache.base.CacheBase, an optional - 221 cache object for the discovery documents. - 222 client_options: Mapping object or google.api_core.client_options, client - 223 options to set user options on the client. - 224 (1) The API endpoint should be set through client_options. If API endpoint - 225 is not set, `GOOGLE_API_USE_MTLS_ENDPOINT` environment variable can be used - 226 to control which endpoint to use. - 227 (2) client_cert_source is not supported, client cert should be provided using - 228 client_encrypted_cert_source instead. In order to use the provided client - 229 cert, `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be - 230 set to `true`. - 231 More details on the environment variables are here: - 232 https://google.aip.dev/auth/4114 - 233 adc_cert_path: str, client certificate file path to save the application - 234 default client certificate for mTLS. This field is required if you want to - 235 use the default client certificate. `GOOGLE_API_USE_CLIENT_CERTIFICATE` - 236 environment variable must be set to `true` in order to use this field, - 237 otherwise this field doesn't nothing. - 238 More details on the environment variables are here: - 239 https://google.aip.dev/auth/4114 - 240 adc_key_path: str, client encrypted private key file path to save the - 241 application default client encrypted private key for mTLS. This field is - 242 required if you want to use the default client certificate. - 243 `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be set to - 244 `true` in order to use this field, otherwise this field doesn't nothing. - 245 More details on the environment variables are here: - 246 https://google.aip.dev/auth/4114 - 247 num_retries: Integer, number of times to retry discovery with - 248 randomized exponential backoff in case of intermittent/connection issues. - 249 - 250 Returns: - 251 A Resource object with methods for interacting with the service. - 252 - 253 Raises: - 254 google.auth.exceptions.MutualTLSChannelError: if there are any problems - 255 setting up mutual TLS channel. - 256 """ - 257 params = {"api": serviceName, "apiVersion": version} - 258 - 259 if http is None: - 260 discovery_http = build_http() - 261 else: - 262 discovery_http = http - 263 - 264 service = None - 265 - 266 for discovery_url in _discovery_service_uri_options(discoveryServiceUrl, version): - 267 requested_url = uritemplate.expand(discovery_url, params) - 268 - 269 try: - 270 content = _retrieve_discovery_doc( - 271 requested_url, - 272 discovery_http, - 273 cache_discovery, - 274 cache, - 275 developerKey, - 276 num_retries=num_retries, - 277 ) - 278 service = build_from_document( - 279 content, - 280 base=discovery_url, - 281 http=http, - 282 developerKey=developerKey, - 283 model=model, - 284 requestBuilder=requestBuilder, - 285 credentials=credentials, - 286 client_options=client_options, - 287 adc_cert_path=adc_cert_path, - 288 adc_key_path=adc_key_path, - 289 ) - 290 break # exit if a service was created - 291 except HttpError as e: - 292 if e.resp.status == http_client.NOT_FOUND: - 293 continue - 294 else: - 295 raise e - 296 - 297 # If discovery_http was created by this function, we are done with it - 298 # and can safely close it - 299 if http is None: - 300 discovery_http.close() - 301 - 302 if service is None: - 303 raise UnknownApiNameOrVersion("name: %s version: %s" % (serviceName, version)) - 304 else: - 305 return service -
306 -
307 - 308 -def _discovery_service_uri_options(discoveryServiceUrl, version): -
309 """ - 310 Returns Discovery URIs to be used for attemnting to build the API Resource. - 311 - 312 Args: - 313 discoveryServiceUrl: - 314 string, the Original Discovery Service URL preferred by the customer. - 315 version: - 316 string, API Version requested - 317 - 318 Returns: - 319 A list of URIs to be tried for the Service Discovery, in order. - 320 """ - 321 - 322 urls = [discoveryServiceUrl, V2_DISCOVERY_URI] - 323 # V1 Discovery won't work if the requested version is None - 324 if discoveryServiceUrl == V1_DISCOVERY_URI and version is None: - 325 logger.warning( - 326 "Discovery V1 does not support empty versions. Defaulting to V2..." - 327 ) - 328 urls.pop(0) - 329 return list(OrderedDict.fromkeys(urls)) -
330 -
331 - 332 -def _retrieve_discovery_doc( - 333 url, http, cache_discovery, cache=None, developerKey=None, num_retries=1 - 334 ): -
335 """Retrieves the discovery_doc from cache or the internet. - 336 - 337 Args: - 338 url: string, the URL of the discovery document. - 339 http: httplib2.Http, An instance of httplib2.Http or something that acts - 340 like it through which HTTP requests will be made. - 341 cache_discovery: Boolean, whether or not to cache the discovery doc. - 342 cache: googleapiclient.discovery_cache.base.Cache, an optional cache - 343 object for the discovery documents. - 344 developerKey: string, Key for controlling API usage, generated - 345 from the API Console. - 346 num_retries: Integer, number of times to retry discovery with - 347 randomized exponential backoff in case of intermittent/connection issues. - 348 - 349 Returns: - 350 A unicode string representation of the discovery document. - 351 """ - 352 if cache_discovery: - 353 from . import discovery_cache - 354 - 355 if cache is None: - 356 cache = discovery_cache.autodetect() - 357 if cache: - 358 content = cache.get(url) - 359 if content: - 360 return content - 361 - 362 actual_url = url - 363 # REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment - 364 # variable that contains the network address of the client sending the - 365 # request. If it exists then add that to the request for the discovery - 366 # document to avoid exceeding the quota on discovery requests. - 367 if "REMOTE_ADDR" in os.environ: - 368 actual_url = _add_query_parameter(url, "userIp", os.environ["REMOTE_ADDR"]) - 369 if developerKey: - 370 actual_url = _add_query_parameter(url, "key", developerKey) - 371 logger.debug("URL being requested: GET %s", actual_url) - 372 - 373 # Execute this request with retries build into HttpRequest - 374 # Note that it will already raise an error if we don't get a 2xx response - 375 req = HttpRequest(http, HttpRequest.null_postproc, actual_url) - 376 resp, content = req.execute(num_retries=num_retries) - 377 - 378 try: - 379 content = content.decode("utf-8") - 380 except AttributeError: - 381 pass - 382 - 383 try: - 384 service = json.loads(content) - 385 except ValueError as e: - 386 logger.error("Failed to parse as JSON: " + content) - 387 raise InvalidJsonError() - 388 if cache_discovery and cache: - 389 cache.set(url, content) - 390 return content -
391 -
392 - 393 @positional(1) - 394 -def build_from_document( - 395 service, - 396 base=None, - 397 future=None, - 398 http=None, - 399 developerKey=None, - 400 model=None, - 401 requestBuilder=HttpRequest, - 402 credentials=None, - 403 client_options=None, - 404 adc_cert_path=None, - 405 adc_key_path=None, - 406 ): -
407 """Create a Resource for interacting with an API. - 408 - 409 Same as `build()`, but constructs the Resource object from a discovery - 410 document that is it given, as opposed to retrieving one over HTTP. - 411 - 412 Args: - 413 service: string or object, the JSON discovery document describing the API. - 414 The value passed in may either be the JSON string or the deserialized - 415 JSON. - 416 base: string, base URI for all HTTP requests, usually the discovery URI. - 417 This parameter is no longer used as rootUrl and servicePath are included - 418 within the discovery document. (deprecated) - 419 future: string, discovery document with future capabilities (deprecated). - 420 http: httplib2.Http, An instance of httplib2.Http or something that acts - 421 like it that HTTP requests will be made through. - 422 developerKey: string, Key for controlling API usage, generated - 423 from the API Console. - 424 model: Model class instance that serializes and de-serializes requests and - 425 responses. - 426 requestBuilder: Takes an http request and packages it up to be executed. - 427 credentials: oauth2client.Credentials or - 428 google.auth.credentials.Credentials, credentials to be used for - 429 authentication. - 430 client_options: Mapping object or google.api_core.client_options, client - 431 options to set user options on the client. - 432 (1) The API endpoint should be set through client_options. If API endpoint - 433 is not set, `GOOGLE_API_USE_MTLS_ENDPOINT` environment variable can be used - 434 to control which endpoint to use. - 435 (2) client_cert_source is not supported, client cert should be provided using - 436 client_encrypted_cert_source instead. In order to use the provided client - 437 cert, `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be - 438 set to `true`. - 439 More details on the environment variables are here: - 440 https://google.aip.dev/auth/4114 - 441 adc_cert_path: str, client certificate file path to save the application - 442 default client certificate for mTLS. This field is required if you want to - 443 use the default client certificate. `GOOGLE_API_USE_CLIENT_CERTIFICATE` - 444 environment variable must be set to `true` in order to use this field, - 445 otherwise this field doesn't nothing. - 446 More details on the environment variables are here: - 447 https://google.aip.dev/auth/4114 - 448 adc_key_path: str, client encrypted private key file path to save the - 449 application default client encrypted private key for mTLS. This field is - 450 required if you want to use the default client certificate. - 451 `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be set to - 452 `true` in order to use this field, otherwise this field doesn't nothing. - 453 More details on the environment variables are here: - 454 https://google.aip.dev/auth/4114 - 455 - 456 Returns: - 457 A Resource object with methods for interacting with the service. - 458 - 459 Raises: - 460 google.auth.exceptions.MutualTLSChannelError: if there are any problems - 461 setting up mutual TLS channel. - 462 """ - 463 - 464 if client_options is None: - 465 client_options = google.api_core.client_options.ClientOptions() - 466 if isinstance(client_options, six.moves.collections_abc.Mapping): - 467 client_options = google.api_core.client_options.from_dict(client_options) - 468 - 469 if http is not None: - 470 # if http is passed, the user cannot provide credentials - 471 banned_options = [ - 472 (credentials, "credentials"), - 473 (client_options.credentials_file, "client_options.credentials_file"), - 474 ] - 475 for option, name in banned_options: - 476 if option is not None: - 477 raise ValueError("Arguments http and {} are mutually exclusive".format(name)) - 478 - 479 if isinstance(service, six.string_types): - 480 service = json.loads(service) - 481 elif isinstance(service, six.binary_type): - 482 service = json.loads(service.decode("utf-8")) - 483 - 484 if "rootUrl" not in service and isinstance(http, (HttpMock, HttpMockSequence)): - 485 logger.error( - 486 "You are using HttpMock or HttpMockSequence without" - 487 + "having the service discovery doc in cache. Try calling " - 488 + "build() without mocking once first to populate the " - 489 + "cache." - 490 ) - 491 raise InvalidJsonError() - 492 - 493 # If an API Endpoint is provided on client options, use that as the base URL - 494 base = urljoin(service["rootUrl"], service["servicePath"]) - 495 if client_options.api_endpoint: - 496 base = client_options.api_endpoint - 497 - 498 schema = Schemas(service) - 499 - 500 # If the http client is not specified, then we must construct an http client - 501 # to make requests. If the service has scopes, then we also need to setup - 502 # authentication. - 503 if http is None: - 504 # Does the service require scopes? - 505 scopes = list( - 506 service.get("auth", {}).get("oauth2", {}).get("scopes", {}).keys() - 507 ) - 508 - 509 # If so, then the we need to setup authentication if no developerKey is - 510 # specified. - 511 if scopes and not developerKey: - 512 # Make sure the user didn't pass multiple credentials - 513 if client_options.credentials_file and credentials: - 514 raise google.api_core.exceptions.DuplicateCredentialArgs( - 515 "client_options.credentials_file and credentials are mutually exclusive." - 516 ) - 517 # Check for credentials file via client options - 518 if client_options.credentials_file: - 519 credentials = _auth.credentials_from_file( - 520 client_options.credentials_file, - 521 scopes=client_options.scopes, - 522 quota_project_id=client_options.quota_project_id, - 523 ) - 524 # If the user didn't pass in credentials, attempt to acquire application - 525 # default credentials. - 526 if credentials is None: - 527 credentials = _auth.default_credentials( - 528 scopes=client_options.scopes, - 529 quota_project_id=client_options.quota_project_id, - 530 ) - 531 - 532 # The credentials need to be scoped. - 533 # If the user provided scopes via client_options don't override them - 534 if not client_options.scopes: - 535 credentials = _auth.with_scopes(credentials, scopes) - 536 - 537 # If credentials are provided, create an authorized http instance; - 538 # otherwise, skip authentication. - 539 if credentials: - 540 http = _auth.authorized_http(credentials) - 541 - 542 # If the service doesn't require scopes then there is no need for - 543 # authentication. - 544 else: - 545 http = build_http() - 546 - 547 # Obtain client cert and create mTLS http channel if cert exists. - 548 client_cert_to_use = None - 549 use_client_cert = os.getenv(GOOGLE_API_USE_CLIENT_CERTIFICATE, "false") - 550 if not use_client_cert in ("true", "false"): - 551 raise MutualTLSChannelError( - 552 "Unsupported GOOGLE_API_USE_CLIENT_CERTIFICATE value. Accepted values: true, false" - 553 ) - 554 if client_options and client_options.client_cert_source: - 555 raise MutualTLSChannelError( - 556 "ClientOptions.client_cert_source is not supported, please use ClientOptions.client_encrypted_cert_source." - 557 ) - 558 if use_client_cert == "true": - 559 if ( - 560 client_options - 561 and hasattr(client_options, "client_encrypted_cert_source") - 562 and client_options.client_encrypted_cert_source - 563 ): - 564 client_cert_to_use = client_options.client_encrypted_cert_source - 565 elif ( - 566 adc_cert_path and adc_key_path and mtls.has_default_client_cert_source() - 567 ): - 568 client_cert_to_use = mtls.default_client_encrypted_cert_source( - 569 adc_cert_path, adc_key_path - 570 ) - 571 if client_cert_to_use: - 572 cert_path, key_path, passphrase = client_cert_to_use() - 573 - 574 # The http object we built could be google_auth_httplib2.AuthorizedHttp - 575 # or httplib2.Http. In the first case we need to extract the wrapped - 576 # httplib2.Http object from google_auth_httplib2.AuthorizedHttp. - 577 http_channel = ( - 578 http.http - 579 if google_auth_httplib2 - 580 and isinstance(http, google_auth_httplib2.AuthorizedHttp) - 581 else http - 582 ) - 583 http_channel.add_certificate(key_path, cert_path, "", passphrase) - 584 - 585 # If user doesn't provide api endpoint via client options, decide which - 586 # api endpoint to use. - 587 if "mtlsRootUrl" in service and ( - 588 not client_options or not client_options.api_endpoint - 589 ): - 590 mtls_endpoint = urljoin(service["mtlsRootUrl"], service["servicePath"]) - 591 use_mtls_endpoint = os.getenv(GOOGLE_API_USE_MTLS_ENDPOINT, "auto") - 592 - 593 if not use_mtls_endpoint in ("never", "auto", "always"): - 594 raise MutualTLSChannelError( - 595 "Unsupported GOOGLE_API_USE_MTLS_ENDPOINT value. Accepted values: never, auto, always" - 596 ) - 597 - 598 # Switch to mTLS endpoint, if environment variable is "always", or - 599 # environment varibable is "auto" and client cert exists. - 600 if use_mtls_endpoint == "always" or ( - 601 use_mtls_endpoint == "auto" and client_cert_to_use - 602 ): - 603 base = mtls_endpoint - 604 - 605 if model is None: - 606 features = service.get("features", []) - 607 model = JsonModel("dataWrapper" in features) - 608 - 609 return Resource( - 610 http=http, - 611 baseUrl=base, - 612 model=model, - 613 developerKey=developerKey, - 614 requestBuilder=requestBuilder, - 615 resourceDesc=service, - 616 rootDesc=service, - 617 schema=schema, - 618 ) -
619 -
620 - 621 -def _cast(value, schema_type): -
622 """Convert value to a string based on JSON Schema type. - 623 - 624 See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on - 625 JSON Schema. - 626 - 627 Args: - 628 value: any, the value to convert - 629 schema_type: string, the type that value should be interpreted as - 630 - 631 Returns: - 632 A string representation of 'value' based on the schema_type. - 633 """ - 634 if schema_type == "string": - 635 if type(value) == type("") or type(value) == type(u""): - 636 return value - 637 else: - 638 return str(value) - 639 elif schema_type == "integer": - 640 return str(int(value)) - 641 elif schema_type == "number": - 642 return str(float(value)) - 643 elif schema_type == "boolean": - 644 return str(bool(value)).lower() - 645 else: - 646 if type(value) == type("") or type(value) == type(u""): - 647 return value - 648 else: - 649 return str(value) -
650 -
651 - 652 -def _media_size_to_long(maxSize): -
653 """Convert a string media size, such as 10GB or 3TB into an integer. - 654 - 655 Args: - 656 maxSize: string, size as a string, such as 2MB or 7GB. - 657 - 658 Returns: - 659 The size as an integer value. - 660 """ - 661 if len(maxSize) < 2: - 662 return 0 - 663 units = maxSize[-2:].upper() - 664 bit_shift = _MEDIA_SIZE_BIT_SHIFTS.get(units) - 665 if bit_shift is not None: - 666 return int(maxSize[:-2]) << bit_shift - 667 else: - 668 return int(maxSize) -
669 -
670 - 671 -def _media_path_url_from_info(root_desc, path_url): -
672 """Creates an absolute media path URL. - 673 - 674 Constructed using the API root URI and service path from the discovery - 675 document and the relative path for the API method. - 676 - 677 Args: - 678 root_desc: Dictionary; the entire original deserialized discovery document. - 679 path_url: String; the relative URL for the API method. Relative to the API - 680 root, which is specified in the discovery document. - 681 - 682 Returns: - 683 String; the absolute URI for media upload for the API method. - 684 """ - 685 return "%(root)supload/%(service_path)s%(path)s" % { - 686 "root": root_desc["rootUrl"], - 687 "service_path": root_desc["servicePath"], - 688 "path": path_url, - 689 } -
690 -
691 - 692 -def _fix_up_parameters(method_desc, root_desc, http_method, schema): -
693 """Updates parameters of an API method with values specific to this library. - 694 - 695 Specifically, adds whatever global parameters are specified by the API to the - 696 parameters for the individual method. Also adds parameters which don't - 697 appear in the discovery document, but are available to all discovery based - 698 APIs (these are listed in STACK_QUERY_PARAMETERS). - 699 - 700 SIDE EFFECTS: This updates the parameters dictionary object in the method - 701 description. - 702 - 703 Args: - 704 method_desc: Dictionary with metadata describing an API method. Value comes - 705 from the dictionary of methods stored in the 'methods' key in the - 706 deserialized discovery document. - 707 root_desc: Dictionary; the entire original deserialized discovery document. - 708 http_method: String; the HTTP method used to call the API method described - 709 in method_desc. - 710 schema: Object, mapping of schema names to schema descriptions. - 711 - 712 Returns: - 713 The updated Dictionary stored in the 'parameters' key of the method - 714 description dictionary. - 715 """ - 716 parameters = method_desc.setdefault("parameters", {}) - 717 - 718 # Add in the parameters common to all methods. - 719 for name, description in six.iteritems(root_desc.get("parameters", {})): - 720 parameters[name] = description - 721 - 722 # Add in undocumented query parameters. - 723 for name in STACK_QUERY_PARAMETERS: - 724 parameters[name] = STACK_QUERY_PARAMETER_DEFAULT_VALUE.copy() - 725 - 726 # Add 'body' (our own reserved word) to parameters if the method supports - 727 # a request payload. - 728 if http_method in HTTP_PAYLOAD_METHODS and "request" in method_desc: - 729 body = BODY_PARAMETER_DEFAULT_VALUE.copy() - 730 body.update(method_desc["request"]) - 731 parameters["body"] = body - 732 - 733 return parameters -
734 -
735 - 736 -def _fix_up_media_upload(method_desc, root_desc, path_url, parameters): -
737 """Adds 'media_body' and 'media_mime_type' parameters if supported by method. - 738 - 739 SIDE EFFECTS: If there is a 'mediaUpload' in the method description, adds - 740 'media_upload' key to parameters. - 741 - 742 Args: - 743 method_desc: Dictionary with metadata describing an API method. Value comes - 744 from the dictionary of methods stored in the 'methods' key in the - 745 deserialized discovery document. - 746 root_desc: Dictionary; the entire original deserialized discovery document. - 747 path_url: String; the relative URL for the API method. Relative to the API - 748 root, which is specified in the discovery document. - 749 parameters: A dictionary describing method parameters for method described - 750 in method_desc. - 751 - 752 Returns: - 753 Triple (accept, max_size, media_path_url) where: - 754 - accept is a list of strings representing what content types are - 755 accepted for media upload. Defaults to empty list if not in the - 756 discovery document. - 757 - max_size is a long representing the max size in bytes allowed for a - 758 media upload. Defaults to 0L if not in the discovery document. - 759 - media_path_url is a String; the absolute URI for media upload for the - 760 API method. Constructed using the API root URI and service path from - 761 the discovery document and the relative path for the API method. If - 762 media upload is not supported, this is None. - 763 """ - 764 media_upload = method_desc.get("mediaUpload", {}) - 765 accept = media_upload.get("accept", []) - 766 max_size = _media_size_to_long(media_upload.get("maxSize", "")) - 767 media_path_url = None - 768 - 769 if media_upload: - 770 media_path_url = _media_path_url_from_info(root_desc, path_url) - 771 parameters["media_body"] = MEDIA_BODY_PARAMETER_DEFAULT_VALUE.copy() - 772 parameters["media_mime_type"] = MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE.copy() - 773 - 774 return accept, max_size, media_path_url -
775 -
776 - 777 -def _fix_up_method_description(method_desc, root_desc, schema): -
778 """Updates a method description in a discovery document. - 779 - 780 SIDE EFFECTS: Changes the parameters dictionary in the method description with - 781 extra parameters which are used locally. - 782 - 783 Args: - 784 method_desc: Dictionary with metadata describing an API method. Value comes - 785 from the dictionary of methods stored in the 'methods' key in the - 786 deserialized discovery document. - 787 root_desc: Dictionary; the entire original deserialized discovery document. - 788 schema: Object, mapping of schema names to schema descriptions. - 789 - 790 Returns: - 791 Tuple (path_url, http_method, method_id, accept, max_size, media_path_url) - 792 where: - 793 - path_url is a String; the relative URL for the API method. Relative to - 794 the API root, which is specified in the discovery document. - 795 - http_method is a String; the HTTP method used to call the API method - 796 described in the method description. - 797 - method_id is a String; the name of the RPC method associated with the - 798 API method, and is in the method description in the 'id' key. - 799 - accept is a list of strings representing what content types are - 800 accepted for media upload. Defaults to empty list if not in the - 801 discovery document. - 802 - max_size is a long representing the max size in bytes allowed for a - 803 media upload. Defaults to 0L if not in the discovery document. - 804 - media_path_url is a String; the absolute URI for media upload for the - 805 API method. Constructed using the API root URI and service path from - 806 the discovery document and the relative path for the API method. If - 807 media upload is not supported, this is None. - 808 """ - 809 path_url = method_desc["path"] - 810 http_method = method_desc["httpMethod"] - 811 method_id = method_desc["id"] - 812 - 813 parameters = _fix_up_parameters(method_desc, root_desc, http_method, schema) - 814 # Order is important. `_fix_up_media_upload` needs `method_desc` to have a - 815 # 'parameters' key and needs to know if there is a 'body' parameter because it - 816 # also sets a 'media_body' parameter. - 817 accept, max_size, media_path_url = _fix_up_media_upload( - 818 method_desc, root_desc, path_url, parameters - 819 ) - 820 - 821 return path_url, http_method, method_id, accept, max_size, media_path_url -
822 -
823 - 824 -def _urljoin(base, url): -
825 """Custom urljoin replacement supporting : before / in url.""" - 826 # In general, it's unsafe to simply join base and url. However, for - 827 # the case of discovery documents, we know: - 828 # * base will never contain params, query, or fragment - 829 # * url will never contain a scheme or net_loc. - 830 # In general, this means we can safely join on /; we just need to - 831 # ensure we end up with precisely one / joining base and url. The - 832 # exception here is the case of media uploads, where url will be an - 833 # absolute url. - 834 if url.startswith("http://") or url.startswith("https://"): - 835 return urljoin(base, url) - 836 new_base = base if base.endswith("/") else base + "/" - 837 new_url = url[1:] if url.startswith("/") else url - 838 return new_base + new_url -
839 -
840 - 841 # TODO(dhermes): Convert this class to ResourceMethod and make it callable - 842 -class ResourceMethodParameters(object): -
843 """Represents the parameters associated with a method. - 844 - 845 Attributes: - 846 argmap: Map from method parameter name (string) to query parameter name - 847 (string). - 848 required_params: List of required parameters (represented by parameter - 849 name as string). - 850 repeated_params: List of repeated parameters (represented by parameter - 851 name as string). - 852 pattern_params: Map from method parameter name (string) to regular - 853 expression (as a string). If the pattern is set for a parameter, the - 854 value for that parameter must match the regular expression. - 855 query_params: List of parameters (represented by parameter name as string) - 856 that will be used in the query string. - 857 path_params: Set of parameters (represented by parameter name as string) - 858 that will be used in the base URL path. - 859 param_types: Map from method parameter name (string) to parameter type. Type - 860 can be any valid JSON schema type; valid values are 'any', 'array', - 861 'boolean', 'integer', 'number', 'object', or 'string'. Reference: - 862 http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1 - 863 enum_params: Map from method parameter name (string) to list of strings, - 864 where each list of strings is the list of acceptable enum values. - 865 """ - 866 -
867 - def __init__(self, method_desc): -
868 """Constructor for ResourceMethodParameters. - 869 - 870 Sets default values and defers to set_parameters to populate. - 871 - 872 Args: - 873 method_desc: Dictionary with metadata describing an API method. Value - 874 comes from the dictionary of methods stored in the 'methods' key in - 875 the deserialized discovery document. - 876 """ - 877 self.argmap = {} - 878 self.required_params = [] - 879 self.repeated_params = [] - 880 self.pattern_params = {} - 881 self.query_params = [] - 882 # TODO(dhermes): Change path_params to a list if the extra URITEMPLATE - 883 # parsing is gotten rid of. - 884 self.path_params = set() - 885 self.param_types = {} - 886 self.enum_params = {} - 887 - 888 self.set_parameters(method_desc) -
889 -
890 - def set_parameters(self, method_desc): -
891 """Populates maps and lists based on method description. - 892 - 893 Iterates through each parameter for the method and parses the values from - 894 the parameter dictionary. - 895 - 896 Args: - 897 method_desc: Dictionary with metadata describing an API method. Value - 898 comes from the dictionary of methods stored in the 'methods' key in - 899 the deserialized discovery document. - 900 """ - 901 for arg, desc in six.iteritems(method_desc.get("parameters", {})): - 902 param = key2param(arg) - 903 self.argmap[param] = arg - 904 - 905 if desc.get("pattern"): - 906 self.pattern_params[param] = desc["pattern"] - 907 if desc.get("enum"): - 908 self.enum_params[param] = desc["enum"] - 909 if desc.get("required"): - 910 self.required_params.append(param) - 911 if desc.get("repeated"): - 912 self.repeated_params.append(param) - 913 if desc.get("location") == "query": - 914 self.query_params.append(param) - 915 if desc.get("location") == "path": - 916 self.path_params.add(param) - 917 self.param_types[param] = desc.get("type", "string") - 918 - 919 # TODO(dhermes): Determine if this is still necessary. Discovery based APIs - 920 # should have all path parameters already marked with - 921 # 'location: path'. - 922 for match in URITEMPLATE.finditer(method_desc["path"]): - 923 for namematch in VARNAME.finditer(match.group(0)): - 924 name = key2param(namematch.group(0)) - 925 self.path_params.add(name) - 926 if name in self.query_params: - 927 self.query_params.remove(name) -
928 -
929 - 930 -def createMethod(methodName, methodDesc, rootDesc, schema): -
931 """Creates a method for attaching to a Resource. - 932 - 933 Args: - 934 methodName: string, name of the method to use. - 935 methodDesc: object, fragment of deserialized discovery document that - 936 describes the method. - 937 rootDesc: object, the entire deserialized discovery document. - 938 schema: object, mapping of schema names to schema descriptions. - 939 """ - 940 methodName = fix_method_name(methodName) - 941 ( - 942 pathUrl, - 943 httpMethod, - 944 methodId, - 945 accept, - 946 maxSize, - 947 mediaPathUrl, - 948 ) = _fix_up_method_description(methodDesc, rootDesc, schema) - 949 - 950 parameters = ResourceMethodParameters(methodDesc) - 951 - 952 def method(self, **kwargs): - 953 # Don't bother with doc string, it will be over-written by createMethod. - 954 - 955 for name in six.iterkeys(kwargs): - 956 if name not in parameters.argmap: - 957 raise TypeError('Got an unexpected keyword argument "%s"' % name) - 958 - 959 # Remove args that have a value of None. - 960 keys = list(kwargs.keys()) - 961 for name in keys: - 962 if kwargs[name] is None: - 963 del kwargs[name] - 964 - 965 for name in parameters.required_params: - 966 if name not in kwargs: - 967 # temporary workaround for non-paging methods incorrectly requiring - 968 # page token parameter (cf. drive.changes.watch vs. drive.changes.list) - 969 if name not in _PAGE_TOKEN_NAMES or _findPageTokenName( - 970 _methodProperties(methodDesc, schema, "response") - 971 ): - 972 raise TypeError('Missing required parameter "%s"' % name) - 973 - 974 for name, regex in six.iteritems(parameters.pattern_params): - 975 if name in kwargs: - 976 if isinstance(kwargs[name], six.string_types): - 977 pvalues = [kwargs[name]] - 978 else: - 979 pvalues = kwargs[name] - 980 for pvalue in pvalues: - 981 if re.match(regex, pvalue) is None: - 982 raise TypeError( - 983 'Parameter "%s" value "%s" does not match the pattern "%s"' - 984 % (name, pvalue, regex) - 985 ) - 986 - 987 for name, enums in six.iteritems(parameters.enum_params): - 988 if name in kwargs: - 989 # We need to handle the case of a repeated enum - 990 # name differently, since we want to handle both - 991 # arg='value' and arg=['value1', 'value2'] - 992 if name in parameters.repeated_params and not isinstance( - 993 kwargs[name], six.string_types - 994 ): - 995 values = kwargs[name] - 996 else: - 997 values = [kwargs[name]] - 998 for value in values: - 999 if value not in enums: -1000 raise TypeError( -1001 'Parameter "%s" value "%s" is not an allowed value in "%s"' -1002 % (name, value, str(enums)) -1003 ) -1004 -1005 actual_query_params = {} -1006 actual_path_params = {} -1007 for key, value in six.iteritems(kwargs): -1008 to_type = parameters.param_types.get(key, "string") -1009 # For repeated parameters we cast each member of the list. -1010 if key in parameters.repeated_params and type(value) == type([]): -1011 cast_value = [_cast(x, to_type) for x in value] -1012 else: -1013 cast_value = _cast(value, to_type) -1014 if key in parameters.query_params: -1015 actual_query_params[parameters.argmap[key]] = cast_value -1016 if key in parameters.path_params: -1017 actual_path_params[parameters.argmap[key]] = cast_value -1018 body_value = kwargs.get("body", None) -1019 media_filename = kwargs.get("media_body", None) -1020 media_mime_type = kwargs.get("media_mime_type", None) -1021 -1022 if self._developerKey: -1023 actual_query_params["key"] = self._developerKey -1024 -1025 model = self._model -1026 if methodName.endswith("_media"): -1027 model = MediaModel() -1028 elif "response" not in methodDesc: -1029 model = RawModel() -1030 -1031 headers = {} -1032 headers, params, query, body = model.request( -1033 headers, actual_path_params, actual_query_params, body_value -1034 ) -1035 -1036 expanded_url = uritemplate.expand(pathUrl, params) -1037 url = _urljoin(self._baseUrl, expanded_url + query) -1038 -1039 resumable = None -1040 multipart_boundary = "" -1041 -1042 if media_filename: -1043 # Ensure we end up with a valid MediaUpload object. -1044 if isinstance(media_filename, six.string_types): -1045 if media_mime_type is None: -1046 logger.warning( -1047 "media_mime_type argument not specified: trying to auto-detect for %s", -1048 media_filename, -1049 ) -1050 media_mime_type, _ = mimetypes.guess_type(media_filename) -1051 if media_mime_type is None: -1052 raise UnknownFileType(media_filename) -1053 if not mimeparse.best_match([media_mime_type], ",".join(accept)): -1054 raise UnacceptableMimeTypeError(media_mime_type) -1055 media_upload = MediaFileUpload(media_filename, mimetype=media_mime_type) -1056 elif isinstance(media_filename, MediaUpload): -1057 media_upload = media_filename -1058 else: -1059 raise TypeError("media_filename must be str or MediaUpload.") -1060 -1061 # Check the maxSize -1062 if media_upload.size() is not None and media_upload.size() > maxSize > 0: -1063 raise MediaUploadSizeError("Media larger than: %s" % maxSize) -1064 -1065 # Use the media path uri for media uploads -1066 expanded_url = uritemplate.expand(mediaPathUrl, params) -1067 url = _urljoin(self._baseUrl, expanded_url + query) -1068 if media_upload.resumable(): -1069 url = _add_query_parameter(url, "uploadType", "resumable") -1070 -1071 if media_upload.resumable(): -1072 # This is all we need to do for resumable, if the body exists it gets -1073 # sent in the first request, otherwise an empty body is sent. -1074 resumable = media_upload -1075 else: -1076 # A non-resumable upload -1077 if body is None: -1078 # This is a simple media upload -1079 headers["content-type"] = media_upload.mimetype() -1080 body = media_upload.getbytes(0, media_upload.size()) -1081 url = _add_query_parameter(url, "uploadType", "media") -1082 else: -1083 # This is a multipart/related upload. -1084 msgRoot = MIMEMultipart("related") -1085 # msgRoot should not write out it's own headers -1086 setattr(msgRoot, "_write_headers", lambda self: None) -1087 -1088 # attach the body as one part -1089 msg = MIMENonMultipart(*headers["content-type"].split("/")) -1090 msg.set_payload(body) -1091 msgRoot.attach(msg) -1092 -1093 # attach the media as the second part -1094 msg = MIMENonMultipart(*media_upload.mimetype().split("/")) -1095 msg["Content-Transfer-Encoding"] = "binary" -1096 -1097 payload = media_upload.getbytes(0, media_upload.size()) -1098 msg.set_payload(payload) -1099 msgRoot.attach(msg) -1100 # encode the body: note that we can't use `as_string`, because -1101 # it plays games with `From ` lines. -1102 fp = BytesIO() -1103 g = _BytesGenerator(fp, mangle_from_=False) -1104 g.flatten(msgRoot, unixfrom=False) -1105 body = fp.getvalue() -1106 -1107 multipart_boundary = msgRoot.get_boundary() -1108 headers["content-type"] = ( -1109 "multipart/related; " 'boundary="%s"' -1110 ) % multipart_boundary -1111 url = _add_query_parameter(url, "uploadType", "multipart") -1112 -1113 logger.debug("URL being requested: %s %s" % (httpMethod, url)) -1114 return self._requestBuilder( -1115 self._http, -1116 model.response, -1117 url, -1118 method=httpMethod, -1119 body=body, -1120 headers=headers, -1121 methodId=methodId, -1122 resumable=resumable, -1123 ) -
1124 -1125 docs = [methodDesc.get("description", DEFAULT_METHOD_DOC), "\n\n"] -1126 if len(parameters.argmap) > 0: -1127 docs.append("Args:\n") -1128 -1129 # Skip undocumented params and params common to all methods. -1130 skip_parameters = list(rootDesc.get("parameters", {}).keys()) -1131 skip_parameters.extend(STACK_QUERY_PARAMETERS) -1132 -1133 all_args = list(parameters.argmap.keys()) -1134 args_ordered = [key2param(s) for s in methodDesc.get("parameterOrder", [])] -1135 -1136 # Move body to the front of the line. -1137 if "body" in all_args: -1138 args_ordered.append("body") -1139 -1140 for name in all_args: -1141 if name not in args_ordered: -1142 args_ordered.append(name) -1143 -1144 for arg in args_ordered: -1145 if arg in skip_parameters: -1146 continue -1147 -1148 repeated = "" -1149 if arg in parameters.repeated_params: -1150 repeated = " (repeated)" -1151 required = "" -1152 if arg in parameters.required_params: -1153 required = " (required)" -1154 paramdesc = methodDesc["parameters"][parameters.argmap[arg]] -1155 paramdoc = paramdesc.get("description", "A parameter") -1156 if "$ref" in paramdesc: -1157 docs.append( -1158 (" %s: object, %s%s%s\n The object takes the" " form of:\n\n%s\n\n") -1159 % ( -1160 arg, -1161 paramdoc, -1162 required, -1163 repeated, -1164 schema.prettyPrintByName(paramdesc["$ref"]), -1165 ) -1166 ) -1167 else: -1168 paramtype = paramdesc.get("type", "string") -1169 docs.append( -1170 " %s: %s, %s%s%s\n" % (arg, paramtype, paramdoc, required, repeated) -1171 ) -1172 enum = paramdesc.get("enum", []) -1173 enumDesc = paramdesc.get("enumDescriptions", []) -1174 if enum and enumDesc: -1175 docs.append(" Allowed values\n") -1176 for (name, desc) in zip(enum, enumDesc): -1177 docs.append(" %s - %s\n" % (name, desc)) -1178 if "response" in methodDesc: -1179 if methodName.endswith("_media"): -1180 docs.append("\nReturns:\n The media object as a string.\n\n ") -1181 else: -1182 docs.append("\nReturns:\n An object of the form:\n\n ") -1183 docs.append(schema.prettyPrintSchema(methodDesc["response"])) -1184 -1185 setattr(method, "__doc__", "".join(docs)) -1186 return (methodName, method) -1187 -
1188 -1189 -def createNextMethod( -1190 methodName, -1191 pageTokenName="pageToken", -1192 nextPageTokenName="nextPageToken", -1193 isPageTokenParameter=True, -1194 ): -
1195 """Creates any _next methods for attaching to a Resource. -1196 -1197 The _next methods allow for easy iteration through list() responses. -1198 -1199 Args: -1200 methodName: string, name of the method to use. -1201 pageTokenName: string, name of request page token field. -1202 nextPageTokenName: string, name of response page token field. -1203 isPageTokenParameter: Boolean, True if request page token is a query -1204 parameter, False if request page token is a field of the request body. -1205 """ -1206 methodName = fix_method_name(methodName) -1207 -1208 def methodNext(self, previous_request, previous_response): -1209 """Retrieves the next page of results. -1210 -1211 Args: -1212 previous_request: The request for the previous page. (required) -1213 previous_response: The response from the request for the previous page. (required) -1214 -1215 Returns: -1216 A request object that you can call 'execute()' on to request the next -1217 page. Returns None if there are no more items in the collection. -1218 """ -1219 # Retrieve nextPageToken from previous_response -1220 # Use as pageToken in previous_request to create new request. -1221 -1222 nextPageToken = previous_response.get(nextPageTokenName, None) -1223 if not nextPageToken: -1224 return None -1225 -1226 request = copy.copy(previous_request) -1227 -1228 if isPageTokenParameter: -1229 # Replace pageToken value in URI -1230 request.uri = _add_query_parameter( -1231 request.uri, pageTokenName, nextPageToken -1232 ) -1233 logger.debug("Next page request URL: %s %s" % (methodName, request.uri)) -1234 else: -1235 # Replace pageToken value in request body -1236 model = self._model -1237 body = model.deserialize(request.body) -1238 body[pageTokenName] = nextPageToken -1239 request.body = model.serialize(body) -1240 logger.debug("Next page request body: %s %s" % (methodName, body)) -1241 -1242 return request -
1243 -1244 return (methodName, methodNext) -1245 -
1246 -1247 -class Resource(object): -
1248 """A class for interacting with a resource.""" -1249 -
1250 - def __init__( -1251 self, -1252 http, -1253 baseUrl, -1254 model, -1255 requestBuilder, -1256 developerKey, -1257 resourceDesc, -1258 rootDesc, -1259 schema, -1260 ): -
1261 """Build a Resource from the API description. -1262 -1263 Args: -1264 http: httplib2.Http, Object to make http requests with. -1265 baseUrl: string, base URL for the API. All requests are relative to this -1266 URI. -1267 model: googleapiclient.Model, converts to and from the wire format. -1268 requestBuilder: class or callable that instantiates an -1269 googleapiclient.HttpRequest object. -1270 developerKey: string, key obtained from -1271 https://code.google.com/apis/console -1272 resourceDesc: object, section of deserialized discovery document that -1273 describes a resource. Note that the top level discovery document -1274 is considered a resource. -1275 rootDesc: object, the entire deserialized discovery document. -1276 schema: object, mapping of schema names to schema descriptions. -1277 """ -1278 self._dynamic_attrs = [] -1279 -1280 self._http = http -1281 self._baseUrl = baseUrl -1282 self._model = model -1283 self._developerKey = developerKey -1284 self._requestBuilder = requestBuilder -1285 self._resourceDesc = resourceDesc -1286 self._rootDesc = rootDesc -1287 self._schema = schema -1288 -1289 self._set_service_methods() -
1290 -
1291 - def _set_dynamic_attr(self, attr_name, value): -
1292 """Sets an instance attribute and tracks it in a list of dynamic attributes. -1293 -1294 Args: -1295 attr_name: string; The name of the attribute to be set -1296 value: The value being set on the object and tracked in the dynamic cache. -1297 """ -1298 self._dynamic_attrs.append(attr_name) -1299 self.__dict__[attr_name] = value -
1300 -
1301 - def __getstate__(self): -
1302 """Trim the state down to something that can be pickled. -1303 -1304 Uses the fact that the instance variable _dynamic_attrs holds attrs that -1305 will be wiped and restored on pickle serialization. -1306 """ -1307 state_dict = copy.copy(self.__dict__) -1308 for dynamic_attr in self._dynamic_attrs: -1309 del state_dict[dynamic_attr] -1310 del state_dict["_dynamic_attrs"] -1311 return state_dict -
1312 -
1313 - def __setstate__(self, state): -
1314 """Reconstitute the state of the object from being pickled. -1315 -1316 Uses the fact that the instance variable _dynamic_attrs holds attrs that -1317 will be wiped and restored on pickle serialization. -1318 """ -1319 self.__dict__.update(state) -1320 self._dynamic_attrs = [] -1321 self._set_service_methods() -
1322 -1323 -
1324 - def __enter__(self): -
1325 return self -
1326 -
1327 - def __exit__(self, exc_type, exc, exc_tb): -
1328 self.close() -
1329 -
1330 - def close(self): -
1331 """Close httplib2 connections.""" -1332 # httplib2 leaves sockets open by default. -1333 # Cleanup using the `close` method. -1334 # https://github.com/httplib2/httplib2/issues/148 -1335 self._http.http.close() -
1336 -
1337 - def _set_service_methods(self): -
1338 self._add_basic_methods(self._resourceDesc, self._rootDesc, self._schema) -1339 self._add_nested_resources(self._resourceDesc, self._rootDesc, self._schema) -1340 self._add_next_methods(self._resourceDesc, self._schema) -
1341 -
1342 - def _add_basic_methods(self, resourceDesc, rootDesc, schema): -
1343 # If this is the root Resource, add a new_batch_http_request() method. -1344 if resourceDesc == rootDesc: -1345 batch_uri = "%s%s" % ( -1346 rootDesc["rootUrl"], -1347 rootDesc.get("batchPath", "batch"), -1348 ) -1349 -1350 def new_batch_http_request(callback=None): -1351 """Create a BatchHttpRequest object based on the discovery document. -1352 -1353 Args: -1354 callback: callable, A callback to be called for each response, of the -1355 form callback(id, response, exception). The first parameter is the -1356 request id, and the second is the deserialized response object. The -1357 third is an apiclient.errors.HttpError exception object if an HTTP -1358 error occurred while processing the request, or None if no error -1359 occurred. -1360 -1361 Returns: -1362 A BatchHttpRequest object based on the discovery document. -1363 """ -1364 return BatchHttpRequest(callback=callback, batch_uri=batch_uri) -
1365 -1366 self._set_dynamic_attr("new_batch_http_request", new_batch_http_request) -1367 -1368 # Add basic methods to Resource -1369 if "methods" in resourceDesc: -1370 for methodName, methodDesc in six.iteritems(resourceDesc["methods"]): -1371 fixedMethodName, method = createMethod( -1372 methodName, methodDesc, rootDesc, schema -1373 ) -1374 self._set_dynamic_attr( -1375 fixedMethodName, method.__get__(self, self.__class__) -1376 ) -1377 # Add in _media methods. The functionality of the attached method will -1378 # change when it sees that the method name ends in _media. -1379 if methodDesc.get("supportsMediaDownload", False): -1380 fixedMethodName, method = createMethod( -1381 methodName + "_media", methodDesc, rootDesc, schema -1382 ) -1383 self._set_dynamic_attr( -1384 fixedMethodName, method.__get__(self, self.__class__) -1385 ) -
1386 -
1387 - def _add_nested_resources(self, resourceDesc, rootDesc, schema): -
1388 # Add in nested resources -1389 if "resources" in resourceDesc: -1390 -1391 def createResourceMethod(methodName, methodDesc): -1392 """Create a method on the Resource to access a nested Resource. -1393 -1394 Args: -1395 methodName: string, name of the method to use. -1396 methodDesc: object, fragment of deserialized discovery document that -1397 describes the method. -1398 """ -1399 methodName = fix_method_name(methodName) -1400 -1401 def methodResource(self): -1402 return Resource( -1403 http=self._http, -1404 baseUrl=self._baseUrl, -1405 model=self._model, -1406 developerKey=self._developerKey, -1407 requestBuilder=self._requestBuilder, -1408 resourceDesc=methodDesc, -1409 rootDesc=rootDesc, -1410 schema=schema, -1411 ) -
1412 -1413 setattr(methodResource, "__doc__", "A collection resource.") -1414 setattr(methodResource, "__is_resource__", True) -1415 -1416 return (methodName, methodResource) -1417 -1418 for methodName, methodDesc in six.iteritems(resourceDesc["resources"]): -1419 fixedMethodName, method = createResourceMethod(methodName, methodDesc) -1420 self._set_dynamic_attr( -1421 fixedMethodName, method.__get__(self, self.__class__) -1422 ) -1423 -
1424 - def _add_next_methods(self, resourceDesc, schema): -
1425 # Add _next() methods if and only if one of the names 'pageToken' or -1426 # 'nextPageToken' occurs among the fields of both the method's response -1427 # type either the method's request (query parameters) or request body. -1428 if "methods" not in resourceDesc: -1429 return -1430 for methodName, methodDesc in six.iteritems(resourceDesc["methods"]): -1431 nextPageTokenName = _findPageTokenName( -1432 _methodProperties(methodDesc, schema, "response") -1433 ) -1434 if not nextPageTokenName: -1435 continue -1436 isPageTokenParameter = True -1437 pageTokenName = _findPageTokenName(methodDesc.get("parameters", {})) -1438 if not pageTokenName: -1439 isPageTokenParameter = False -1440 pageTokenName = _findPageTokenName( -1441 _methodProperties(methodDesc, schema, "request") -1442 ) -1443 if not pageTokenName: -1444 continue -1445 fixedMethodName, method = createNextMethod( -1446 methodName + "_next", -1447 pageTokenName, -1448 nextPageTokenName, -1449 isPageTokenParameter, -1450 ) -1451 self._set_dynamic_attr( -1452 fixedMethodName, method.__get__(self, self.__class__) -1453 ) -
1454 -
1455 -1456 -def _findPageTokenName(fields): -
1457 """Search field names for one like a page token. -1458 -1459 Args: -1460 fields: container of string, names of fields. -1461 -1462 Returns: -1463 First name that is either 'pageToken' or 'nextPageToken' if one exists, -1464 otherwise None. -1465 """ -1466 return next( -1467 (tokenName for tokenName in _PAGE_TOKEN_NAMES if tokenName in fields), None -1468 ) -
1469 -
1470 -1471 -def _methodProperties(methodDesc, schema, name): -
1472 """Get properties of a field in a method description. -1473 -1474 Args: -1475 methodDesc: object, fragment of deserialized discovery document that -1476 describes the method. -1477 schema: object, mapping of schema names to schema descriptions. -1478 name: string, name of top-level field in method description. -1479 -1480 Returns: -1481 Object representing fragment of deserialized discovery document -1482 corresponding to 'properties' field of object corresponding to named field -1483 in method description, if it exists, otherwise empty dict. -1484 """ -1485 desc = methodDesc.get(name, {}) -1486 if "$ref" in desc: -1487 desc = schema.get(desc["$ref"], {}) -1488 return desc.get("properties", {}) -
1489 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery.Resource-class.html b/docs/epy/googleapiclient.discovery.Resource-class.html deleted file mode 100644 index 95f9f2120c8..00000000000 --- a/docs/epy/googleapiclient.discovery.Resource-class.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - - googleapiclient.discovery.Resource - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module discovery :: - Class Resource - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Resource

source code

-
-object --+
-         |
-        Resource
-
- -
-

A class for interacting with a resource.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - http, - baseUrl, - model, - requestBuilder, - developerKey, - resourceDesc, - rootDesc, - schema)
- Build a Resource from the API description.
- source code - -
- -
-   - - - - - - -
_set_dynamic_attr(self, - attr_name, - value)
- Sets an instance attribute and tracks it in a list of dynamic attributes.
- source code - -
- -
-   - - - - - - -
__getstate__(self)
- Trim the state down to something that can be pickled.
- source code - -
- -
-   - - - - - - -
__setstate__(self, - state)
- Reconstitute the state of the object from being pickled.
- source code - -
- -
-   - - - - - - -
__enter__(self) - source code - -
- -
-   - - - - - - -
__exit__(self, - exc_type, - exc, - exc_tb) - source code - -
- -
-   - - - - - - -
close(self)
- Close httplib2 connections.
- source code - -
- -
-   - - - - - - -
_set_service_methods(self) - source code - -
- -
-   - - - - - - -
_add_basic_methods(self, - resourceDesc, - rootDesc, - schema) - source code - -
- -
-   - - - - - - -
_add_nested_resources(self, - resourceDesc, - rootDesc, - schema) - source code - -
- -
-   - - - - - - -
_add_next_methods(self, - resourceDesc, - schema) - source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - http, - baseUrl, - model, - requestBuilder, - developerKey, - resourceDesc, - rootDesc, - schema) -
(Constructor) -

-
source code  -
- -
-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: googleapiclient.Model, converts to and from the wire format.
-  requestBuilder: class or callable that instantiates an
-      googleapiclient.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.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

_set_dynamic_attr(self, - attr_name, - value) -

-
source code  -
- -
-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.
-
-
-
-
-
-
- -
- -
- - -
-

__getstate__(self) -

-
source code  -
- -

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.

-
-
-
-
- -
- -
- - -
-

__setstate__(self, - state) -

-
source code  -
- -

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.

-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html b/docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html deleted file mode 100644 index c9955b71b78..00000000000 --- a/docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - googleapiclient.discovery.ResourceMethodParameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module discovery :: - Class ResourceMethodParameters - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class ResourceMethodParameters

source code

-
-object --+
-         |
-        ResourceMethodParameters
-
- -
-
-Represents the parameters associated with a method.
-
-Attributes:
-  argmap: Map from method parameter name (string) to query parameter name
-      (string).
-  required_params: List of required parameters (represented by parameter
-      name as string).
-  repeated_params: List of repeated parameters (represented by parameter
-      name as string).
-  pattern_params: Map from method parameter name (string) to regular
-      expression (as a string). If the pattern is set for a parameter, the
-      value for that parameter must match the regular expression.
-  query_params: List of parameters (represented by parameter name as string)
-      that will be used in the query string.
-  path_params: Set of parameters (represented by parameter name as string)
-      that will be used in the base URL path.
-  param_types: Map from method parameter name (string) to parameter type. Type
-      can be any valid JSON schema type; valid values are 'any', 'array',
-      'boolean', 'integer', 'number', 'object', or 'string'. Reference:
-      http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
-  enum_params: Map from method parameter name (string) to list of strings,
-     where each list of strings is the list of acceptable enum values.
-
-
- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - method_desc)
- Constructor for ResourceMethodParameters.
- source code - -
- -
-   - - - - - - -
set_parameters(self, - method_desc)
- Populates maps and lists based on method description.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - method_desc) -
(Constructor) -

-
source code  -
- -
-Constructor for ResourceMethodParameters.
-
-Sets default values and defers to set_parameters to populate.
-
-Args:
-  method_desc: Dictionary with metadata describing an API method. Value
-      comes from the dictionary of methods stored in the 'methods' key in
-      the deserialized discovery document.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

set_parameters(self, - method_desc) -

-
source code  -
- -
-Populates maps and lists based on method description.
-
-Iterates through each parameter for the method and parses the values from
-the parameter dictionary.
-
-Args:
-  method_desc: Dictionary with metadata describing an API method. Value
-      comes from the dictionary of methods stored in the 'methods' key in
-      the deserialized discovery document.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery._BytesGenerator-class.html b/docs/epy/googleapiclient.discovery._BytesGenerator-class.html deleted file mode 100644 index 3c6a1e9fdfb..00000000000 --- a/docs/epy/googleapiclient.discovery._BytesGenerator-class.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - googleapiclient.discovery._BytesGenerator - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module discovery :: - Class _BytesGenerator - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class _BytesGenerator

source code

-
-email.generator.Generator --+
-                            |
-                           _BytesGenerator
-
- -
- - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-   - - _write_lines = BytesGenerator.write -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache-module.html b/docs/epy/googleapiclient.discovery_cache-module.html deleted file mode 100644 index 4b9b3462e84..00000000000 --- a/docs/epy/googleapiclient.discovery_cache-module.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - googleapiclient.discovery_cache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Package discovery_cache

source code

-

Caching utility for the discovery document.

- - - - - - - - -
- - - - - -
Submodules[hide private]
-
-
- -
- - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
autodetect()
- Detects an appropriate cache module and returns it.
- source code - -
- -
- - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - LOGGER = logging.getLogger(__name__) -
-   - - DISCOVERY_DOC_MAX_AGE = 86400 -
-   - - __package__ = None -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

autodetect() -

-
source code  -
- -
-Detects an appropriate cache module and returns it.
-
-Returns:
-  googleapiclient.discovery_cache.base.Cache, a cache object which
-  is auto detected, or None if no cache object is available.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache-pysrc.html b/docs/epy/googleapiclient.discovery_cache-pysrc.html deleted file mode 100644 index 361cc180588..00000000000 --- a/docs/epy/googleapiclient.discovery_cache-pysrc.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - googleapiclient.discovery_cache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Package googleapiclient.discovery_cache

-
- 1  # Copyright 2014 Google Inc. All Rights Reserved. 
- 2  # 
- 3  # Licensed under the Apache License, Version 2.0 (the "License"); 
- 4  # you may not use this file except in compliance with the License. 
- 5  # You may obtain a copy of the License at 
- 6  # 
- 7  #      http://www.apache.org/licenses/LICENSE-2.0 
- 8  # 
- 9  # Unless required by applicable law or agreed to in writing, software 
-10  # distributed under the License is distributed on an "AS IS" BASIS, 
-11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-12  # See the License for the specific language governing permissions and 
-13  # limitations under the License. 
-14   
-15  """Caching utility for the discovery document.""" 
-16   
-17  from __future__ import absolute_import 
-18   
-19  import logging 
-20  import datetime 
-21  import os 
-22   
-23  LOGGER = logging.getLogger(__name__) 
-24   
-25  DISCOVERY_DOC_MAX_AGE = 60 * 60 * 24  # 1 day 
-26   
-27   
-
28 -def autodetect(): -
29 """Detects an appropriate cache module and returns it. -30 -31 Returns: -32 googleapiclient.discovery_cache.base.Cache, a cache object which -33 is auto detected, or None if no cache object is available. -34 """ -35 if 'APPENGINE_RUNTIME' in os.environ: -36 try: -37 from google.appengine.api import memcache -38 from . import appengine_memcache -39 -40 return appengine_memcache.cache -41 except Exception: -42 pass -43 try: -44 from . import file_cache -45 -46 return file_cache.cache -47 except Exception as e: -48 LOGGER.warning(e, exc_info=True) -49 return None -
50 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html b/docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html deleted file mode 100644 index 39b24ca20f0..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - googleapiclient.discovery_cache.appengine_memcache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module appengine_memcache - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module appengine_memcache

source code

-

App Engine memcache based cache for the discovery document.

- - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - Cache
- A cache with app engine memcache API. -
- - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - LOGGER = logging.getLogger(__name__) -
-   - - NAMESPACE = "google-api-client" -
-   - - cache = Cache(max_age= DISCOVERY_DOC_MAX_AGE) -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html b/docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html deleted file mode 100644 index bb284303f59..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - googleapiclient.discovery_cache.appengine_memcache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module appengine_memcache - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.discovery_cache.appengine_memcache

-
- 1  # Copyright 2014 Google Inc. All Rights Reserved. 
- 2  # 
- 3  # Licensed under the Apache License, Version 2.0 (the "License"); 
- 4  # you may not use this file except in compliance with the License. 
- 5  # You may obtain a copy of the License at 
- 6  # 
- 7  #      http://www.apache.org/licenses/LICENSE-2.0 
- 8  # 
- 9  # Unless required by applicable law or agreed to in writing, software 
-10  # distributed under the License is distributed on an "AS IS" BASIS, 
-11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-12  # See the License for the specific language governing permissions and 
-13  # limitations under the License. 
-14   
-15  """App Engine memcache based cache for the discovery document.""" 
-16   
-17  import logging 
-18   
-19  # This is only an optional dependency because we only import this 
-20  # module when google.appengine.api.memcache is available. 
-21  from google.appengine.api import memcache 
-22   
-23  from . import base 
-24  from ..discovery_cache import DISCOVERY_DOC_MAX_AGE 
-25   
-26   
-27  LOGGER = logging.getLogger(__name__) 
-28   
-29  NAMESPACE = "google-api-client" 
-30   
-31   
-
32 -class Cache(base.Cache): -
33 """A cache with app engine memcache API.""" -34 -
35 - def __init__(self, max_age): -
36 """Constructor. -37 -38 Args: -39 max_age: Cache expiration in seconds. -40 """ -41 self._max_age = max_age -
42 -
43 - def get(self, url): -
44 try: -45 return memcache.get(url, namespace=NAMESPACE) -46 except Exception as e: -47 LOGGER.warning(e, exc_info=True) -
48 -
49 - def set(self, url, content): -
50 try: -51 memcache.set(url, content, time=int(self._max_age), namespace=NAMESPACE) -52 except Exception as e: -53 LOGGER.warning(e, exc_info=True) -
54 -55 -56 cache = Cache(max_age=DISCOVERY_DOC_MAX_AGE) -57 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html b/docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html deleted file mode 100644 index 625c4ee1a9b..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - - googleapiclient.discovery_cache.appengine_memcache.Cache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module appengine_memcache :: - Class Cache - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Cache

source code

-
-object --+    
-         |    
-base.Cache --+
-             |
-            Cache
-
- -
-

A cache with app engine memcache API.

- - - - - - - - - - -
- - - - - -
Nested Classes[hide private]
-
-

Inherited from base.Cache: - __metaclass__ -

-
- - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - max_age)
- Constructor.
- source code - -
- -
-   - - - - - - -
get(self, - url)
- Gets the content from the memcache with a given key.
- source code - -
- -
-   - - - - - - -
set(self, - url, - content)
- Sets the given key and content in the cache.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-

Inherited from base.Cache: - __abstractmethods__ -

- -
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - max_age) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  max_age: Cache expiration in seconds.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

get(self, - url) -

-
source code  -
- -
-Gets the content from the memcache with a given key.
-
-Args:
-  url: string, the key for the cache.
-
-Returns:
-  object, the value in the cache for the given key, or None if the key is
-  not in the cache.
-
-
-
-
Overrides: - base.Cache.get -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

set(self, - url, - content) -

-
source code  -
- -
-Sets the given key and content in the cache.
-
-Args:
-  url: string, the key for the cache.
-  content: string, the discovery document.
-
-
-
-
Overrides: - base.Cache.set -
(inherited documentation)
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.base-module.html b/docs/epy/googleapiclient.discovery_cache.base-module.html deleted file mode 100644 index 027251a1374..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.base-module.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - googleapiclient.discovery_cache.base - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module base - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module base

source code

-

An abstract class for caching the discovery document.

- - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - Cache
- A base abstract cache class. -
- - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - __package__ = 'googleapiclient.discovery_cache' -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.base-pysrc.html b/docs/epy/googleapiclient.discovery_cache.base-pysrc.html deleted file mode 100644 index 9abf76f0422..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.base-pysrc.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - googleapiclient.discovery_cache.base - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module base - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.discovery_cache.base

-
- 1  # Copyright 2014 Google Inc. All Rights Reserved. 
- 2  # 
- 3  # Licensed under the Apache License, Version 2.0 (the "License"); 
- 4  # you may not use this file except in compliance with the License. 
- 5  # You may obtain a copy of the License at 
- 6  # 
- 7  #      http://www.apache.org/licenses/LICENSE-2.0 
- 8  # 
- 9  # Unless required by applicable law or agreed to in writing, software 
-10  # distributed under the License is distributed on an "AS IS" BASIS, 
-11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-12  # See the License for the specific language governing permissions and 
-13  # limitations under the License. 
-14   
-15  """An abstract class for caching the discovery document.""" 
-16   
-17  import abc 
-
18 -19 -20 -class Cache(object): -
21 """A base abstract cache class.""" -22 -23 __metaclass__ = abc.ABCMeta -24 -25 @abc.abstractmethod -
26 - def get(self, url): -
27 """Gets the content from the memcache with a given key. -28 -29 Args: -30 url: string, the key for the cache. -31 -32 Returns: -33 object, the value in the cache for the given key, or None if the key is -34 not in the cache. -35 """ -36 raise NotImplementedError() -
37 -38 @abc.abstractmethod -
39 - def set(self, url, content): -
40 """Sets the given key and content in the cache. -41 -42 Args: -43 url: string, the key for the cache. -44 content: string, the discovery document. -45 """ -46 raise NotImplementedError() -
47 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.base.Cache-class.html b/docs/epy/googleapiclient.discovery_cache.base.Cache-class.html deleted file mode 100644 index a604c954655..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.base.Cache-class.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - - googleapiclient.discovery_cache.base.Cache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module base :: - Class Cache - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Cache

source code

-
-object --+
-         |
-        Cache
-
- -
-

A base abstract cache class.

- - - - - - - - - - -
- - - - - -
Nested Classes[hide private]
-
-   - - __metaclass__
- Metaclass for defining Abstract Base Classes (ABCs). -
- - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
get(self, - url)
- Gets the content from the memcache with a given key.
- source code - -
- -
-   - - - - - - -
set(self, - url, - content)
- Sets the given key and content in the cache.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __init__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-   - - __abstractmethods__ = frozenset(['get', 'set']) -
-   - - _abc_cache = <_weakrefset.WeakSet object at 0x7fb69e350450> -
-   - - _abc_negative_cache = <_weakrefset.WeakSet object at 0x7fb69e3... -
-   - - _abc_negative_cache_version = 22 -
-   - - _abc_registry = <_weakrefset.WeakSet object at 0x7fb69e350490> -
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

get(self, - url) -

-
source code  -
- -
-Gets the content from the memcache with a given key.
-
-Args:
-  url: string, the key for the cache.
-
-Returns:
-  object, the value in the cache for the given key, or None if the key is
-  not in the cache.
-
-
-
-
Decorators:
-
    -
  • @abc.abstractmethod
  • -
-
-
-
- -
- -
- - -
-

set(self, - url, - content) -

-
source code  -
- -
-Sets the given key and content in the cache.
-
-Args:
-  url: string, the key for the cache.
-  content: string, the discovery document.
-
-
-
-
Decorators:
-
    -
  • @abc.abstractmethod
  • -
-
-
-
-
- - - - - - -
- - - - - -
Class Variable Details[hide private]
-
- -
- -
-

_abc_negative_cache

- -
-
-
-
Value:
-
-<_weakrefset.WeakSet object at 0x7fb69e350510>
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.file_cache-module.html b/docs/epy/googleapiclient.discovery_cache.file_cache-module.html deleted file mode 100644 index 503a269fe58..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.file_cache-module.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - googleapiclient.discovery_cache.file_cache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module file_cache - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module file_cache

source code

-

File based cache for the discovery document.

-

The cache is stored in a single file so that multiple processes can - share the same cache. It locks the file whenever accesing to the file. - When the cache content is corrupted, it will be initialized with an empty - cache.

- - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - Cache
- A file based cache for the discovery documents. -
- - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
_to_timestamp(date) - source code - -
- -
-   - - - - - - -
_read_or_initialize_cache(f) - source code - -
- -
- - - - - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - LOGGER = logging.getLogger(__name__) -
-   - - FILENAME = "google-api-python-client-discovery-doc.cache" -
-   - - EPOCH = datetime.datetime.utcfromtimestamp(0) -
-   - - cache = Cache(max_age= DISCOVERY_DOC_MAX_AGE) -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html b/docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html deleted file mode 100644 index 824a0b092cf..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - googleapiclient.discovery_cache.file_cache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module file_cache - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.discovery_cache.file_cache

-
-  1  # Copyright 2014 Google Inc. All Rights Reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """File based cache for the discovery document. 
- 16   
- 17  The cache is stored in a single file so that multiple processes can 
- 18  share the same cache. It locks the file whenever accesing to the 
- 19  file. When the cache content is corrupted, it will be initialized with 
- 20  an empty cache. 
- 21  """ 
- 22   
- 23  from __future__ import division 
- 24   
- 25  import datetime 
- 26  import json 
- 27  import logging 
- 28  import os 
- 29  import tempfile 
- 30  import threading 
- 31   
- 32  try: 
- 33      from oauth2client.contrib.locked_file import LockedFile 
- 34  except ImportError: 
- 35      # oauth2client < 2.0.0 
- 36      try: 
- 37          from oauth2client.locked_file import LockedFile 
- 38      except ImportError: 
- 39          # oauth2client > 4.0.0 or google-auth 
- 40          raise ImportError( 
- 41              "file_cache is unavailable when using oauth2client >= 4.0.0 or google-auth" 
- 42          ) 
- 43   
- 44  from . import base 
- 45  from ..discovery_cache import DISCOVERY_DOC_MAX_AGE 
- 46   
- 47  LOGGER = logging.getLogger(__name__) 
- 48   
- 49  FILENAME = "google-api-python-client-discovery-doc.cache" 
- 50  EPOCH = datetime.datetime.utcfromtimestamp(0) 
- 51   
- 52   
-
53 -def _to_timestamp(date): -
54 try: - 55 return (date - EPOCH).total_seconds() - 56 except AttributeError: - 57 # The following is the equivalent of total_seconds() in Python2.6. - 58 # See also: https://docs.python.org/2/library/datetime.html - 59 delta = date - EPOCH - 60 return ( - 61 delta.microseconds + (delta.seconds + delta.days * 24 * 3600) * 10 ** 6 - 62 ) / 10 ** 6 -
63 - 64 -
66 f.file_handle().seek(0) - 67 try: - 68 cache = json.load(f.file_handle()) - 69 except Exception: - 70 # This means it opens the file for the first time, or the cache is - 71 # corrupted, so initializing the file with an empty dict. - 72 cache = {} - 73 f.file_handle().truncate(0) - 74 f.file_handle().seek(0) - 75 json.dump(cache, f.file_handle()) - 76 return cache -
77 - 78 -
79 -class Cache(base.Cache): -
80 """A file based cache for the discovery documents.""" - 81 -
82 - def __init__(self, max_age): -
83 """Constructor. - 84 - 85 Args: - 86 max_age: Cache expiration in seconds. - 87 """ - 88 self._max_age = max_age - 89 self._file = os.path.join(tempfile.gettempdir(), FILENAME) - 90 f = LockedFile(self._file, "a+", "r") - 91 try: - 92 f.open_and_lock() - 93 if f.is_locked(): - 94 _read_or_initialize_cache(f) - 95 # If we can not obtain the lock, other process or thread must - 96 # have initialized the file. - 97 except Exception as e: - 98 LOGGER.warning(e, exc_info=True) - 99 finally: -100 f.unlock_and_close() -
101 -
102 - def get(self, url): -
103 f = LockedFile(self._file, "r+", "r") -104 try: -105 f.open_and_lock() -106 if f.is_locked(): -107 cache = _read_or_initialize_cache(f) -108 if url in cache: -109 content, t = cache.get(url, (None, 0)) -110 if _to_timestamp(datetime.datetime.now()) < t + self._max_age: -111 return content -112 return None -113 else: -114 LOGGER.debug("Could not obtain a lock for the cache file.") -115 return None -116 except Exception as e: -117 LOGGER.warning(e, exc_info=True) -118 finally: -119 f.unlock_and_close() -
120 -
121 - def set(self, url, content): -
122 f = LockedFile(self._file, "r+", "r") -123 try: -124 f.open_and_lock() -125 if f.is_locked(): -126 cache = _read_or_initialize_cache(f) -127 cache[url] = (content, _to_timestamp(datetime.datetime.now())) -128 # Remove stale cache. -129 for k, (_, timestamp) in list(cache.items()): -130 if ( -131 _to_timestamp(datetime.datetime.now()) -132 >= timestamp + self._max_age -133 ): -134 del cache[k] -135 f.file_handle().truncate(0) -136 f.file_handle().seek(0) -137 json.dump(cache, f.file_handle()) -138 else: -139 LOGGER.debug("Could not obtain a lock for the cache file.") -140 except Exception as e: -141 LOGGER.warning(e, exc_info=True) -142 finally: -143 f.unlock_and_close() -
144 -145 -146 cache = Cache(max_age=DISCOVERY_DOC_MAX_AGE) -147 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html b/docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html deleted file mode 100644 index 56483f623ad..00000000000 --- a/docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - - googleapiclient.discovery_cache.file_cache.Cache - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Package discovery_cache :: - Module file_cache :: - Class Cache - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Cache

source code

-
-object --+    
-         |    
-base.Cache --+
-             |
-            Cache
-
- -
-

A file based cache for the discovery documents.

- - - - - - - - - - -
- - - - - -
Nested Classes[hide private]
-
-

Inherited from base.Cache: - __metaclass__ -

-
- - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - max_age)
- Constructor.
- source code - -
- -
-   - - - - - - -
get(self, - url)
- Gets the content from the memcache with a given key.
- source code - -
- -
-   - - - - - - -
set(self, - url, - content)
- Sets the given key and content in the cache.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-

Inherited from base.Cache: - __abstractmethods__ -

- -
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - max_age) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  max_age: Cache expiration in seconds.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

get(self, - url) -

-
source code  -
- -
-Gets the content from the memcache with a given key.
-
-Args:
-  url: string, the key for the cache.
-
-Returns:
-  object, the value in the cache for the given key, or None if the key is
-  not in the cache.
-
-
-
-
Overrides: - base.Cache.get -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

set(self, - url, - content) -

-
source code  -
- -
-Sets the given key and content in the cache.
-
-Args:
-  url: string, the key for the cache.
-  content: string, the discovery document.
-
-
-
-
Overrides: - base.Cache.set -
(inherited documentation)
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors-module.html b/docs/epy/googleapiclient.errors-module.html deleted file mode 100644 index dbca37f9754..00000000000 --- a/docs/epy/googleapiclient.errors-module.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - googleapiclient.errors - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module errors

source code

-

Errors for the library.

-

All exceptions defined by the library should be defined in this - file.

- -
-

Author: - jcgregorio@google.com (Joe Gregorio) -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - Error
- Base error for this module. -
-   - - HttpError
- HTTP data was invalid or unexpected. -
-   - - InvalidJsonError
- The JSON returned could not be parsed. -
-   - - UnknownFileType
- File type unknown or unexpected. -
-   - - UnknownLinkType
- Link type unknown or unexpected. -
-   - - UnknownApiNameOrVersion
- No API with that name and version exists. -
-   - - UnacceptableMimeTypeError
- That is an unacceptable mimetype for this operation. -
-   - - MediaUploadSizeError
- Media is larger than the method can accept. -
-   - - ResumableUploadError
- Error occurred during resumable upload. -
-   - - InvalidChunkSizeError
- The given chunksize is not valid. -
-   - - InvalidNotificationError
- The channel Notification is invalid. -
-   - - BatchError
- Error occurred during batch operations. -
-   - - UnexpectedMethodError
- Exception raised by RequestMockBuilder on unexpected calls. -
-   - - UnexpectedBodyError
- Exception raised by RequestMockBuilder on unexpected bodies. -
- - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - __package__ = None -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors-pysrc.html b/docs/epy/googleapiclient.errors-pysrc.html deleted file mode 100644 index 7e6d8110c12..00000000000 --- a/docs/epy/googleapiclient.errors-pysrc.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - googleapiclient.errors - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.errors

-
-  1  # Copyright 2014 Google Inc. All Rights Reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """Errors for the library. 
- 16   
- 17  All exceptions defined by the library 
- 18  should be defined in this file. 
- 19  """ 
- 20  from __future__ import absolute_import 
- 21   
- 22  __author__ = "jcgregorio@google.com (Joe Gregorio)" 
- 23   
- 24  import json 
- 25   
- 26  from googleapiclient import _helpers as util 
-
27 - 28 - 29 -class Error(Exception): -
30 """Base error for this module.""" - 31 - 32 pass -
33 -
34 - 35 -class HttpError(Error): -
36 """HTTP data was invalid or unexpected.""" - 37 - 38 @util.positional(3) -
39 - def __init__(self, resp, content, uri=None): -
40 self.resp = resp - 41 if not isinstance(content, bytes): - 42 raise TypeError("HTTP content should be bytes") - 43 self.content = content - 44 self.uri = uri - 45 self.error_details = "" -
46 -
47 - def _get_reason(self): -
48 """Calculate the reason for the error from the response content.""" - 49 reason = self.resp.reason - 50 try: - 51 data = json.loads(self.content.decode("utf-8")) - 52 if isinstance(data, dict): - 53 reason = data["error"]["message"] - 54 if "details" in data["error"]: - 55 self.error_details = data["error"]["details"] - 56 elif "detail" in data["error"]: - 57 self.error_details = data["error"]["detail"] - 58 elif isinstance(data, list) and len(data) > 0: - 59 first_error = data[0] - 60 reason = first_error["error"]["message"] - 61 if "details" in first_error["error"]: - 62 self.error_details = first_error["error"]["details"] - 63 except (ValueError, KeyError, TypeError): - 64 pass - 65 if reason is None: - 66 reason = "" - 67 return reason -
68 -
69 - def __repr__(self): -
70 reason = self._get_reason() - 71 if self.error_details: - 72 return '<HttpError %s when requesting %s returned "%s". Details: "%s">' % ( - 73 self.resp.status, - 74 self.uri, - 75 reason.strip(), - 76 self.error_details, - 77 ) - 78 elif self.uri: - 79 return '<HttpError %s when requesting %s returned "%s">' % ( - 80 self.resp.status, - 81 self.uri, - 82 self._get_reason().strip(), - 83 ) - 84 else: - 85 return '<HttpError %s "%s">' % (self.resp.status, self._get_reason()) -
86 - 87 __str__ = __repr__ -
88 -
89 - 90 -class InvalidJsonError(Error): -
91 """The JSON returned could not be parsed.""" - 92 - 93 pass -
94 -
95 - 96 -class UnknownFileType(Error): -
97 """File type unknown or unexpected.""" - 98 - 99 pass -
100 -
101 -102 -class UnknownLinkType(Error): -
103 """Link type unknown or unexpected.""" -104 -105 pass -
106 -
107 -108 -class UnknownApiNameOrVersion(Error): -
109 """No API with that name and version exists.""" -110 -111 pass -
112 -
113 -114 -class UnacceptableMimeTypeError(Error): -
115 """That is an unacceptable mimetype for this operation.""" -116 -117 pass -
118 -
119 -120 -class MediaUploadSizeError(Error): -
121 """Media is larger than the method can accept.""" -122 -123 pass -
124 -
125 -126 -class ResumableUploadError(HttpError): -
127 """Error occurred during resumable upload.""" -128 -129 pass -
130 -
131 -132 -class InvalidChunkSizeError(Error): -
133 """The given chunksize is not valid.""" -134 -135 pass -
136 -
137 -138 -class InvalidNotificationError(Error): -
139 """The channel Notification is invalid.""" -140 -141 pass -
142 -
143 -144 -class BatchError(HttpError): -
145 """Error occurred during batch operations.""" -146 -147 @util.positional(2) -
148 - def __init__(self, reason, resp=None, content=None): -
149 self.resp = resp -150 self.content = content -151 self.reason = reason -
152 -
153 - def __repr__(self): -
154 if getattr(self.resp, "status", None) is None: -155 return '<BatchError "%s">' % (self.reason) -156 else: -157 return '<BatchError %s "%s">' % (self.resp.status, self.reason) -
158 -159 __str__ = __repr__ -
160 -
161 -162 -class UnexpectedMethodError(Error): -
163 """Exception raised by RequestMockBuilder on unexpected calls.""" -164 -165 @util.positional(1) -
166 - def __init__(self, methodId=None): -
167 """Constructor for an UnexpectedMethodError.""" -168 super(UnexpectedMethodError, self).__init__( -169 "Received unexpected call %s" % methodId -170 ) -
171 -
172 -173 -class UnexpectedBodyError(Error): -
174 """Exception raised by RequestMockBuilder on unexpected bodies.""" -175 -
176 - def __init__(self, expected, provided): -
177 """Constructor for an UnexpectedMethodError.""" -178 super(UnexpectedBodyError, self).__init__( -179 "Expected: [%s] - Provided: [%s]" % (expected, provided) -180 ) -
181 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.BatchError-class.html b/docs/epy/googleapiclient.errors.BatchError-class.html deleted file mode 100644 index a2c838e6333..00000000000 --- a/docs/epy/googleapiclient.errors.BatchError-class.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - googleapiclient.errors.BatchError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class BatchError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class BatchError

source code

-
-              object --+                
-                       |                
-exceptions.BaseException --+            
-                           |            
-        exceptions.Exception --+        
-                               |        
-                           Error --+    
-                                   |    
-                           HttpError --+
-                                       |
-                                      BatchError
-
- -
-

Error occurred during batch operations.

- - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- x.__init__(...) initializes x; see help(type(x)) for signature
- source code - -
- -
-   - - - - - - -
__repr__(self)
- str(x)
- source code - -
- -
-   - - - - - - -
__str__(self)
- str(x)
- source code - -
- -
-

Inherited from HttpError (private): - _get_reason -

-

Inherited from exceptions.Exception: - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __setattr__, - __setstate__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -

x.__init__(...) initializes x; see help(type(x)) for signature

-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
Overrides: - object.__init__ -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

__repr__(self) -
(Representation operator) -

-
source code  -
- -

str(x)

-
-
Overrides: - object.__repr__ -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

__str__(self) -
(Informal representation operator) -

-
source code  -
- -

str(x)

-
-
Overrides: - object.__str__ -
(inherited documentation)
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.Error-class.html b/docs/epy/googleapiclient.errors.Error-class.html deleted file mode 100644 index 2aca9c6b918..00000000000 --- a/docs/epy/googleapiclient.errors.Error-class.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - googleapiclient.errors.Error - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class Error - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Error

source code

-
-              object --+        
-                       |        
-exceptions.BaseException --+    
-                           |    
-        exceptions.Exception --+
-                               |
-                              Error
-
- -
Known Subclasses:
-
- -
- -
-

Base error for this module.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.HttpError-class.html b/docs/epy/googleapiclient.errors.HttpError-class.html deleted file mode 100644 index 876bff07b7a..00000000000 --- a/docs/epy/googleapiclient.errors.HttpError-class.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - googleapiclient.errors.HttpError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class HttpError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class HttpError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  HttpError
-
- -
Known Subclasses:
-
- -
- -
-

HTTP data was invalid or unexpected.

- - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- x.__init__(...) initializes x; see help(type(x)) for signature
- source code - -
- -
-   - - - - - - -
_get_reason(self)
- Calculate the reason for the error from the response content.
- source code - -
- -
-   - - - - - - -
__repr__(self)
- str(x)
- source code - -
- -
-   - - - - - - -
__str__(self)
- str(x)
- source code - -
- -
-

Inherited from exceptions.Exception: - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __setattr__, - __setstate__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -

x.__init__(...) initializes x; see help(type(x)) for signature

-
-
Decorators:
-
    -
  • @util.positional(3)
  • -
-
Overrides: - object.__init__ -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

__repr__(self) -
(Representation operator) -

-
source code  -
- -

str(x)

-
-
Overrides: - object.__repr__ -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

__str__(self) -
(Informal representation operator) -

-
source code  -
- -

str(x)

-
-
Overrides: - object.__str__ -
(inherited documentation)
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html b/docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html deleted file mode 100644 index d15621e96bc..00000000000 --- a/docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.InvalidChunkSizeError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class InvalidChunkSizeError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class InvalidChunkSizeError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  InvalidChunkSizeError
-
- -
-

The given chunksize is not valid.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.InvalidJsonError-class.html b/docs/epy/googleapiclient.errors.InvalidJsonError-class.html deleted file mode 100644 index 1d2f7aa5194..00000000000 --- a/docs/epy/googleapiclient.errors.InvalidJsonError-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.InvalidJsonError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class InvalidJsonError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class InvalidJsonError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  InvalidJsonError
-
- -
-

The JSON returned could not be parsed.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.InvalidNotificationError-class.html b/docs/epy/googleapiclient.errors.InvalidNotificationError-class.html deleted file mode 100644 index c818fe45f65..00000000000 --- a/docs/epy/googleapiclient.errors.InvalidNotificationError-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.InvalidNotificationError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class InvalidNotificationError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class InvalidNotificationError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  InvalidNotificationError
-
- -
-

The channel Notification is invalid.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html b/docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html deleted file mode 100644 index 4887e12d2ed..00000000000 --- a/docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.MediaUploadSizeError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class MediaUploadSizeError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaUploadSizeError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  MediaUploadSizeError
-
- -
-

Media is larger than the method can accept.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.ResumableUploadError-class.html b/docs/epy/googleapiclient.errors.ResumableUploadError-class.html deleted file mode 100644 index 09c5dfadf5b..00000000000 --- a/docs/epy/googleapiclient.errors.ResumableUploadError-class.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - googleapiclient.errors.ResumableUploadError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class ResumableUploadError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class ResumableUploadError

source code

-
-              object --+                
-                       |                
-exceptions.BaseException --+            
-                           |            
-        exceptions.Exception --+        
-                               |        
-                           Error --+    
-                                   |    
-                           HttpError --+
-                                       |
-                                      ResumableUploadError
-
- -
-

Error occurred during resumable upload.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from HttpError: - __init__, - __repr__, - __str__ -

-

Inherited from HttpError (private): - _get_reason -

-

Inherited from exceptions.Exception: - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __setattr__, - __setstate__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html b/docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html deleted file mode 100644 index 503edad2340..00000000000 --- a/docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.UnacceptableMimeTypeError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class UnacceptableMimeTypeError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class UnacceptableMimeTypeError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  UnacceptableMimeTypeError
-
- -
-

That is an unacceptable mimetype for this operation.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html b/docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html deleted file mode 100644 index eb6267c3ee3..00000000000 --- a/docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - googleapiclient.errors.UnexpectedBodyError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class UnexpectedBodyError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class UnexpectedBodyError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  UnexpectedBodyError
-
- -
-

Exception raised by RequestMockBuilder on unexpected bodies.

- - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - expected, - provided)
- Constructor for an UnexpectedMethodError.
- source code - -
- -
-

Inherited from exceptions.Exception: - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - expected, - provided) -
(Constructor) -

-
source code  -
- -

Constructor for an UnexpectedMethodError.

-
-
Overrides: - object.__init__ -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html b/docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html deleted file mode 100644 index 8a87d9917c7..00000000000 --- a/docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - googleapiclient.errors.UnexpectedMethodError - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class UnexpectedMethodError - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class UnexpectedMethodError

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  UnexpectedMethodError
-
- -
-

Exception raised by RequestMockBuilder on unexpected calls.

- - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Constructor for an UnexpectedMethodError.
- source code - -
- -
-

Inherited from exceptions.Exception: - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -

Constructor for an UnexpectedMethodError.

-
-
Decorators:
-
    -
  • @util.positional(1)
  • -
-
Overrides: - object.__init__ -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html b/docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html deleted file mode 100644 index b076c559034..00000000000 --- a/docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.UnknownApiNameOrVersion - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class UnknownApiNameOrVersion - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class UnknownApiNameOrVersion

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  UnknownApiNameOrVersion
-
- -
-

No API with that name and version exists.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.UnknownFileType-class.html b/docs/epy/googleapiclient.errors.UnknownFileType-class.html deleted file mode 100644 index 14ccd08bcfb..00000000000 --- a/docs/epy/googleapiclient.errors.UnknownFileType-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.UnknownFileType - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class UnknownFileType - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class UnknownFileType

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  UnknownFileType
-
- -
-

File type unknown or unexpected.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.errors.UnknownLinkType-class.html b/docs/epy/googleapiclient.errors.UnknownLinkType-class.html deleted file mode 100644 index e0d8eb3e85a..00000000000 --- a/docs/epy/googleapiclient.errors.UnknownLinkType-class.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - googleapiclient.errors.UnknownLinkType - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module errors :: - Class UnknownLinkType - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class UnknownLinkType

source code

-
-              object --+            
-                       |            
-exceptions.BaseException --+        
-                           |        
-        exceptions.Exception --+    
-                               |    
-                           Error --+
-                                   |
-                                  UnknownLinkType
-
- -
-

Link type unknown or unexpected.

- - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-

Inherited from exceptions.Exception: - __init__, - __new__ -

-

Inherited from exceptions.BaseException: - __delattr__, - __getattribute__, - __getitem__, - __getslice__, - __reduce__, - __repr__, - __setattr__, - __setstate__, - __str__, - __unicode__ -

-

Inherited from object: - __format__, - __hash__, - __reduce_ex__, - __sizeof__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from exceptions.BaseException: - args, - message -

-

Inherited from object: - __class__ -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http-module.html b/docs/epy/googleapiclient.http-module.html deleted file mode 100644 index 7533cd999fe..00000000000 --- a/docs/epy/googleapiclient.http-module.html +++ /dev/null @@ -1,636 +0,0 @@ - - - - - googleapiclient.http - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module http

source code

-

Classes to encapsulate a single HTTP request.

-

The classes implement a command pattern, with every object supporting - an execute() method that does the actual HTTP request.

- -
-

Author: - jcgregorio@google.com (Joe Gregorio) -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - MediaUploadProgress
- Status of a resumable upload. -
-   - - MediaDownloadProgress
- Status of a resumable download. -
-   - - MediaUpload
- Describes a media object to upload. -
-   - - MediaIoBaseUpload
- A MediaUpload for a io.Base objects. -
-   - - MediaFileUpload
- A MediaUpload for a file. -
-   - - MediaInMemoryUpload
- MediaUpload for a chunk of bytes. -
-   - - MediaIoBaseDownload
- "Download media resources. -
-   - - _StreamSlice
- Truncated stream. -
-   - - HttpRequest
- Encapsulates a single HTTP request. -
-   - - BatchHttpRequest
- Batches multiple HttpRequest objects into a single HTTP request. -
-   - - HttpRequestMock
- Mock of HttpRequest. -
-   - - RequestMockBuilder
- A simple mock of HttpRequest -
-   - - HttpMock
- Mock of httplib2.Http -
-   - - HttpMockSequence
- Mock of httplib2.Http -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
_should_retry_response(resp_status, - content)
- Determines whether a response should be retried.
- source code - -
- -
-   - - - - - - -
_retry_request(http, - num_retries, - req_type, - sleep, - rand, - uri, - method, - *args, - **kwargs)
- Retries an HTTP request multiple times while handling errors.
- source code - -
- -
-   - - - - - - -
set_user_agent(http, - user_agent)
- Set the user-agent on every request.
- source code - -
- -
-   - - - - - - -
tunnel_patch(http)
- Tunnel PATCH requests over POST.
- source code - -
- -
-   - - - - - - -
build_http()
- Builds httplib2.Http object
- source code - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - LOGGER = logging.getLogger(__name__) -
-   - - DEFAULT_CHUNK_SIZE = 104857600 -
-   - - MAX_URI_LENGTH = 2048 -
-   - - MAX_BATCH_LIMIT = 1000 -
-   - - _TOO_MANY_REQUESTS = 429 -
-   - - DEFAULT_HTTP_TIMEOUT_SEC = 60 -
-   - - _LEGACY_BATCH_URI = 'https://www.googleapis.com/batch' -
-   - - ConnectionError = None -
-   - - __package__ = None -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

_should_retry_response(resp_status, - content) -

-
source code  -
- -
-Determines whether a response should be retried.
-
-Args:
-  resp_status: The response status received.
-  content: The response content body.
-
-Returns:
-  True if the response should be retried, otherwise False.
-
-
-
-
-
-
- -
- -
- - -
-

_retry_request(http, - num_retries, - req_type, - sleep, - rand, - uri, - method, - *args, - **kwargs) -

-
source code  -
- -
-Retries an HTTP request multiple times while handling errors.
-
-If after all retries the request still fails, last error is either returned as
-return value (for HTTP 5xx errors) or thrown (for ssl.SSLError).
-
-Args:
-  http: Http object to be used to execute request.
-  num_retries: Maximum number of retries.
-  req_type: Type of the request (used for logging retries).
-  sleep, rand: Functions to sleep for random time between retries.
-  uri: URI to be requested.
-  method: HTTP method to be used.
-  args, kwargs: Additional arguments passed to http.request.
-
-Returns:
-  resp, content - Response from the http request (may be HTTP 5xx).
-
-
-
-
-
-
- -
- -
- - -
-

set_user_agent(http, - user_agent) -

-
source code  -
- -
-Set the user-agent on every request.
-
-Args:
-   http - An instance of httplib2.Http
-       or something that acts like it.
-   user_agent: string, the value for the user-agent header.
-
-Returns:
-   A modified instance of http that was passed in.
-
-Example:
-
-  h = httplib2.Http()
-  h = set_user_agent(h, "my-app-name/6.0")
-
-Most of the time the user-agent will be set doing auth, this is for the rare
-cases where you are accessing an unauthenticated endpoint.
-
-
-
-
-
-
- -
- -
- - -
-

tunnel_patch(http) -

-
source code  -
- -
-Tunnel PATCH requests over POST.
-Args:
-   http - An instance of httplib2.Http
-       or something that acts like it.
-
-Returns:
-   A modified instance of http that was passed in.
-
-Example:
-
-  h = httplib2.Http()
-  h = tunnel_patch(h, "my-app-name/6.0")
-
-Useful if you are running on a platform that doesn't support PATCH.
-Apply this last if you are using OAuth 1.0, as changing the method
-will result in a different signature.
-
-
-
-
-
-
- -
- -
- - -
-

build_http() -

-
source code  -
- -
-Builds httplib2.Http object
-
-Returns:
-A httplib2.Http object, which is used to make http requests, and which has timeout set by default.
-To override default timeout call
-
-  socket.setdefaulttimeout(timeout_in_sec)
-
-before interacting with this method.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http-pysrc.html b/docs/epy/googleapiclient.http-pysrc.html deleted file mode 100644 index 3dfa21e889f..00000000000 --- a/docs/epy/googleapiclient.http-pysrc.html +++ /dev/null @@ -1,2349 +0,0 @@ - - - - - googleapiclient.http - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.http

-
-   1  # Copyright 2014 Google Inc. All Rights Reserved. 
-   2  # 
-   3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-   4  # you may not use this file except in compliance with the License. 
-   5  # You may obtain a copy of the License at 
-   6  # 
-   7  #      http://www.apache.org/licenses/LICENSE-2.0 
-   8  # 
-   9  # Unless required by applicable law or agreed to in writing, software 
-  10  # distributed under the License is distributed on an "AS IS" BASIS, 
-  11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-  12  # See the License for the specific language governing permissions and 
-  13  # limitations under the License. 
-  14   
-  15  """Classes to encapsulate a single HTTP request. 
-  16   
-  17  The classes implement a command pattern, with every 
-  18  object supporting an execute() method that does the 
-  19  actual HTTP request. 
-  20  """ 
-  21  from __future__ import absolute_import 
-  22  import six 
-  23  from six.moves import http_client 
-  24  from six.moves import range 
-  25   
-  26  __author__ = "jcgregorio@google.com (Joe Gregorio)" 
-  27   
-  28  from six import BytesIO, StringIO 
-  29  from six.moves.urllib.parse import urlparse, urlunparse, quote, unquote 
-  30   
-  31  import base64 
-  32  import copy 
-  33  import gzip 
-  34  import httplib2 
-  35  import json 
-  36  import logging 
-  37  import mimetypes 
-  38  import os 
-  39  import random 
-  40  import socket 
-  41  import sys 
-  42  import time 
-  43  import uuid 
-  44   
-  45  # TODO(issue 221): Remove this conditional import jibbajabba. 
-  46  try: 
-  47      import ssl 
-  48  except ImportError: 
-  49      _ssl_SSLError = object() 
-  50  else: 
-  51      _ssl_SSLError = ssl.SSLError 
-  52   
-  53  from email.generator import Generator 
-  54  from email.mime.multipart import MIMEMultipart 
-  55  from email.mime.nonmultipart import MIMENonMultipart 
-  56  from email.parser import FeedParser 
-  57   
-  58  from googleapiclient import _helpers as util 
-  59   
-  60  from googleapiclient import _auth 
-  61  from googleapiclient.errors import BatchError 
-  62  from googleapiclient.errors import HttpError 
-  63  from googleapiclient.errors import InvalidChunkSizeError 
-  64  from googleapiclient.errors import ResumableUploadError 
-  65  from googleapiclient.errors import UnexpectedBodyError 
-  66  from googleapiclient.errors import UnexpectedMethodError 
-  67  from googleapiclient.model import JsonModel 
-  68   
-  69   
-  70  LOGGER = logging.getLogger(__name__) 
-  71   
-  72  DEFAULT_CHUNK_SIZE = 100 * 1024 * 1024 
-  73   
-  74  MAX_URI_LENGTH = 2048 
-  75   
-  76  MAX_BATCH_LIMIT = 1000 
-  77   
-  78  _TOO_MANY_REQUESTS = 429 
-  79   
-  80  DEFAULT_HTTP_TIMEOUT_SEC = 60 
-  81   
-  82  _LEGACY_BATCH_URI = "https://www.googleapis.com/batch" 
-  83   
-  84  if six.PY2: 
-  85      # That's a builtin python3 exception, nonexistent in python2. 
-  86      # Defined to None to avoid NameError while trying to catch it 
-  87      ConnectionError = None 
-
88 - 89 - 90 -def _should_retry_response(resp_status, content): -
91 """Determines whether a response should be retried. - 92 - 93 Args: - 94 resp_status: The response status received. - 95 content: The response content body. - 96 - 97 Returns: - 98 True if the response should be retried, otherwise False. - 99 """ - 100 # Retry on 5xx errors. - 101 if resp_status >= 500: - 102 return True - 103 - 104 # Retry on 429 errors. - 105 if resp_status == _TOO_MANY_REQUESTS: - 106 return True - 107 - 108 # For 403 errors, we have to check for the `reason` in the response to - 109 # determine if we should retry. - 110 if resp_status == six.moves.http_client.FORBIDDEN: - 111 # If there's no details about the 403 type, don't retry. - 112 if not content: - 113 return False - 114 - 115 # Content is in JSON format. - 116 try: - 117 data = json.loads(content.decode("utf-8")) - 118 if isinstance(data, dict): - 119 reason = data["error"]["errors"][0]["reason"] - 120 else: - 121 reason = data[0]["error"]["errors"]["reason"] - 122 except (UnicodeDecodeError, ValueError, KeyError): - 123 LOGGER.warning("Invalid JSON content from response: %s", content) - 124 return False - 125 - 126 LOGGER.warning('Encountered 403 Forbidden with reason "%s"', reason) - 127 - 128 # Only retry on rate limit related failures. - 129 if reason in ("userRateLimitExceeded", "rateLimitExceeded"): - 130 return True - 131 - 132 # Everything else is a success or non-retriable so break. - 133 return False -
134 -
135 - 136 -def _retry_request( - 137 http, num_retries, req_type, sleep, rand, uri, method, *args, **kwargs - 138 ): -
139 """Retries an HTTP request multiple times while handling errors. - 140 - 141 If after all retries the request still fails, last error is either returned as - 142 return value (for HTTP 5xx errors) or thrown (for ssl.SSLError). - 143 - 144 Args: - 145 http: Http object to be used to execute request. - 146 num_retries: Maximum number of retries. - 147 req_type: Type of the request (used for logging retries). - 148 sleep, rand: Functions to sleep for random time between retries. - 149 uri: URI to be requested. - 150 method: HTTP method to be used. - 151 args, kwargs: Additional arguments passed to http.request. - 152 - 153 Returns: - 154 resp, content - Response from the http request (may be HTTP 5xx). - 155 """ - 156 resp = None - 157 content = None - 158 exception = None - 159 for retry_num in range(num_retries + 1): - 160 if retry_num > 0: - 161 # Sleep before retrying. - 162 sleep_time = rand() * 2 ** retry_num - 163 LOGGER.warning( - 164 "Sleeping %.2f seconds before retry %d of %d for %s: %s %s, after %s", - 165 sleep_time, - 166 retry_num, - 167 num_retries, - 168 req_type, - 169 method, - 170 uri, - 171 resp.status if resp else exception, - 172 ) - 173 sleep(sleep_time) - 174 - 175 try: - 176 exception = None - 177 resp, content = http.request(uri, method, *args, **kwargs) - 178 # Retry on SSL errors and socket timeout errors. - 179 except _ssl_SSLError as ssl_error: - 180 exception = ssl_error - 181 except socket.timeout as socket_timeout: - 182 # It's important that this be before socket.error as it's a subclass - 183 # socket.timeout has no errorcode - 184 exception = socket_timeout - 185 except ConnectionError as connection_error: - 186 # Needs to be before socket.error as it's a subclass of - 187 # OSError (socket.error) - 188 exception = connection_error - 189 except socket.error as socket_error: - 190 # errno's contents differ by platform, so we have to match by name. - 191 if socket.errno.errorcode.get(socket_error.errno) not in { - 192 "WSAETIMEDOUT", - 193 "ETIMEDOUT", - 194 "EPIPE", - 195 "ECONNABORTED", - 196 }: - 197 raise - 198 exception = socket_error - 199 except httplib2.ServerNotFoundError as server_not_found_error: - 200 exception = server_not_found_error - 201 - 202 if exception: - 203 if retry_num == num_retries: - 204 raise exception - 205 else: - 206 continue - 207 - 208 if not _should_retry_response(resp.status, content): - 209 break - 210 - 211 return resp, content -
212 -
213 - 214 -class MediaUploadProgress(object): -
215 """Status of a resumable upload.""" - 216 -
217 - def __init__(self, resumable_progress, total_size): -
218 """Constructor. - 219 - 220 Args: - 221 resumable_progress: int, bytes sent so far. - 222 total_size: int, total bytes in complete upload, or None if the total - 223 upload size isn't known ahead of time. - 224 """ - 225 self.resumable_progress = resumable_progress - 226 self.total_size = total_size -
227 -
228 - def progress(self): -
229 """Percent of upload completed, as a float. - 230 - 231 Returns: - 232 the percentage complete as a float, returning 0.0 if the total size of - 233 the upload is unknown. - 234 """ - 235 if self.total_size is not None and self.total_size != 0: - 236 return float(self.resumable_progress) / float(self.total_size) - 237 else: - 238 return 0.0 -
239 -
240 - 241 -class MediaDownloadProgress(object): -
242 """Status of a resumable download.""" - 243 -
244 - def __init__(self, resumable_progress, total_size): -
245 """Constructor. - 246 - 247 Args: - 248 resumable_progress: int, bytes received so far. - 249 total_size: int, total bytes in complete download. - 250 """ - 251 self.resumable_progress = resumable_progress - 252 self.total_size = total_size -
253 -
254 - def progress(self): -
255 """Percent of download completed, as a float. - 256 - 257 Returns: - 258 the percentage complete as a float, returning 0.0 if the total size of - 259 the download is unknown. - 260 """ - 261 if self.total_size is not None and self.total_size != 0: - 262 return float(self.resumable_progress) / float(self.total_size) - 263 else: - 264 return 0.0 -
265 -
266 - 267 -class MediaUpload(object): -
268 """Describes a media object to upload. - 269 - 270 Base class that defines the interface of MediaUpload subclasses. - 271 - 272 Note that subclasses of MediaUpload may allow you to control the chunksize - 273 when uploading a media object. It is important to keep the size of the chunk - 274 as large as possible to keep the upload efficient. Other factors may influence - 275 the size of the chunk you use, particularly if you are working in an - 276 environment where individual HTTP requests may have a hardcoded time limit, - 277 such as under certain classes of requests under Google App Engine. - 278 - 279 Streams are io.Base compatible objects that support seek(). Some MediaUpload - 280 subclasses support using streams directly to upload data. Support for - 281 streaming may be indicated by a MediaUpload sub-class and if appropriate for a - 282 platform that stream will be used for uploading the media object. The support - 283 for streaming is indicated by has_stream() returning True. The stream() method - 284 should return an io.Base object that supports seek(). On platforms where the - 285 underlying httplib module supports streaming, for example Python 2.6 and - 286 later, the stream will be passed into the http library which will result in - 287 less memory being used and possibly faster uploads. - 288 - 289 If you need to upload media that can't be uploaded using any of the existing - 290 MediaUpload sub-class then you can sub-class MediaUpload for your particular - 291 needs. - 292 """ - 293 -
294 - def chunksize(self): -
295 """Chunk size for resumable uploads. - 296 - 297 Returns: - 298 Chunk size in bytes. - 299 """ - 300 raise NotImplementedError() -
301 -
302 - def mimetype(self): -
303 """Mime type of the body. - 304 - 305 Returns: - 306 Mime type. - 307 """ - 308 return "application/octet-stream" -
309 -
310 - def size(self): -
311 """Size of upload. - 312 - 313 Returns: - 314 Size of the body, or None of the size is unknown. - 315 """ - 316 return None -
317 -
318 - def resumable(self): -
319 """Whether this upload is resumable. - 320 - 321 Returns: - 322 True if resumable upload or False. - 323 """ - 324 return False -
325 -
326 - def getbytes(self, begin, end): -
327 """Get bytes from the media. - 328 - 329 Args: - 330 begin: int, offset from beginning of file. - 331 length: int, number of bytes to read, starting at begin. - 332 - 333 Returns: - 334 A string of bytes read. May be shorter than length if EOF was reached - 335 first. - 336 """ - 337 raise NotImplementedError() -
338 -
339 - def has_stream(self): -
340 """Does the underlying upload support a streaming interface. - 341 - 342 Streaming means it is an io.IOBase subclass that supports seek, i.e. - 343 seekable() returns True. - 344 - 345 Returns: - 346 True if the call to stream() will return an instance of a seekable io.Base - 347 subclass. - 348 """ - 349 return False -
350 -
351 - def stream(self): -
352 """A stream interface to the data being uploaded. - 353 - 354 Returns: - 355 The returned value is an io.IOBase subclass that supports seek, i.e. - 356 seekable() returns True. - 357 """ - 358 raise NotImplementedError() -
359 - 360 @util.positional(1) -
361 - def _to_json(self, strip=None): -
362 """Utility function for creating a JSON representation of a MediaUpload. - 363 - 364 Args: - 365 strip: array, An array of names of members to not include in the JSON. - 366 - 367 Returns: - 368 string, a JSON representation of this instance, suitable to pass to - 369 from_json(). - 370 """ - 371 t = type(self) - 372 d = copy.copy(self.__dict__) - 373 if strip is not None: - 374 for member in strip: - 375 del d[member] - 376 d["_class"] = t.__name__ - 377 d["_module"] = t.__module__ - 378 return json.dumps(d) -
379 -
380 - def to_json(self): -
381 """Create a JSON representation of an instance of MediaUpload. - 382 - 383 Returns: - 384 string, a JSON representation of this instance, suitable to pass to - 385 from_json(). - 386 """ - 387 return self._to_json() -
388 - 389 @classmethod -
390 - def new_from_json(cls, s): -
391 """Utility class method to instantiate a MediaUpload subclass from a JSON - 392 representation produced by to_json(). - 393 - 394 Args: - 395 s: string, JSON from to_json(). - 396 - 397 Returns: - 398 An instance of the subclass of MediaUpload that was serialized with - 399 to_json(). - 400 """ - 401 data = json.loads(s) - 402 # Find and call the right classmethod from_json() to restore the object. - 403 module = data["_module"] - 404 m = __import__(module, fromlist=module.split(".")[:-1]) - 405 kls = getattr(m, data["_class"]) - 406 from_json = getattr(kls, "from_json") - 407 return from_json(s) -
408 -
409 - 410 -class MediaIoBaseUpload(MediaUpload): -
411 """A MediaUpload for a io.Base objects. - 412 - 413 Note that the Python file object is compatible with io.Base and can be used - 414 with this class also. - 415 - 416 fh = BytesIO('...Some data to upload...') - 417 media = MediaIoBaseUpload(fh, mimetype='image/png', - 418 chunksize=1024*1024, resumable=True) - 419 farm.animals().insert( - 420 id='cow', - 421 name='cow.png', - 422 media_body=media).execute() - 423 - 424 Depending on the platform you are working on, you may pass -1 as the - 425 chunksize, which indicates that the entire file should be uploaded in a single - 426 request. If the underlying platform supports streams, such as Python 2.6 or - 427 later, then this can be very efficient as it avoids multiple connections, and - 428 also avoids loading the entire file into memory before sending it. Note that - 429 Google App Engine has a 5MB limit on request size, so you should never set - 430 your chunksize larger than 5MB, or to -1. - 431 """ - 432 - 433 @util.positional(3) -
434 - def __init__(self, fd, mimetype, chunksize=DEFAULT_CHUNK_SIZE, resumable=False): -
435 """Constructor. - 436 - 437 Args: - 438 fd: io.Base or file object, The source of the bytes to upload. MUST be - 439 opened in blocking mode, do not use streams opened in non-blocking mode. - 440 The given stream must be seekable, that is, it must be able to call - 441 seek() on fd. - 442 mimetype: string, Mime-type of the file. - 443 chunksize: int, File will be uploaded in chunks of this many bytes. Only - 444 used if resumable=True. Pass in a value of -1 if the file is to be - 445 uploaded as a single chunk. Note that Google App Engine has a 5MB limit - 446 on request size, so you should never set your chunksize larger than 5MB, - 447 or to -1. - 448 resumable: bool, True if this is a resumable upload. False means upload - 449 in a single request. - 450 """ - 451 super(MediaIoBaseUpload, self).__init__() - 452 self._fd = fd - 453 self._mimetype = mimetype - 454 if not (chunksize == -1 or chunksize > 0): - 455 raise InvalidChunkSizeError() - 456 self._chunksize = chunksize - 457 self._resumable = resumable - 458 - 459 self._fd.seek(0, os.SEEK_END) - 460 self._size = self._fd.tell() -
461 -
462 - def chunksize(self): -
463 """Chunk size for resumable uploads. - 464 - 465 Returns: - 466 Chunk size in bytes. - 467 """ - 468 return self._chunksize -
469 -
470 - def mimetype(self): -
471 """Mime type of the body. - 472 - 473 Returns: - 474 Mime type. - 475 """ - 476 return self._mimetype -
477 -
478 - def size(self): -
479 """Size of upload. - 480 - 481 Returns: - 482 Size of the body, or None of the size is unknown. - 483 """ - 484 return self._size -
485 -
486 - def resumable(self): -
487 """Whether this upload is resumable. - 488 - 489 Returns: - 490 True if resumable upload or False. - 491 """ - 492 return self._resumable -
493 -
494 - def getbytes(self, begin, length): -
495 """Get bytes from the media. - 496 - 497 Args: - 498 begin: int, offset from beginning of file. - 499 length: int, number of bytes to read, starting at begin. - 500 - 501 Returns: - 502 A string of bytes read. May be shorted than length if EOF was reached - 503 first. - 504 """ - 505 self._fd.seek(begin) - 506 return self._fd.read(length) -
507 -
508 - def has_stream(self): -
509 """Does the underlying upload support a streaming interface. - 510 - 511 Streaming means it is an io.IOBase subclass that supports seek, i.e. - 512 seekable() returns True. - 513 - 514 Returns: - 515 True if the call to stream() will return an instance of a seekable io.Base - 516 subclass. - 517 """ - 518 return True -
519 -
520 - def stream(self): -
521 """A stream interface to the data being uploaded. - 522 - 523 Returns: - 524 The returned value is an io.IOBase subclass that supports seek, i.e. - 525 seekable() returns True. - 526 """ - 527 return self._fd -
528 -
529 - def to_json(self): -
530 """This upload type is not serializable.""" - 531 raise NotImplementedError("MediaIoBaseUpload is not serializable.") -
532 -
533 - 534 -class MediaFileUpload(MediaIoBaseUpload): -
535 """A MediaUpload for a file. - 536 - 537 Construct a MediaFileUpload and pass as the media_body parameter of the - 538 method. For example, if we had a service that allowed uploading images: - 539 - 540 media = MediaFileUpload('cow.png', mimetype='image/png', - 541 chunksize=1024*1024, resumable=True) - 542 farm.animals().insert( - 543 id='cow', - 544 name='cow.png', - 545 media_body=media).execute() - 546 - 547 Depending on the platform you are working on, you may pass -1 as the - 548 chunksize, which indicates that the entire file should be uploaded in a single - 549 request. If the underlying platform supports streams, such as Python 2.6 or - 550 later, then this can be very efficient as it avoids multiple connections, and - 551 also avoids loading the entire file into memory before sending it. Note that - 552 Google App Engine has a 5MB limit on request size, so you should never set - 553 your chunksize larger than 5MB, or to -1. - 554 """ - 555 - 556 @util.positional(2) -
557 - def __init__( - 558 self, filename, mimetype=None, chunksize=DEFAULT_CHUNK_SIZE, resumable=False - 559 ): -
560 """Constructor. - 561 - 562 Args: - 563 filename: string, Name of the file. - 564 mimetype: string, Mime-type of the file. If None then a mime-type will be - 565 guessed from the file extension. - 566 chunksize: int, File will be uploaded in chunks of this many bytes. Only - 567 used if resumable=True. Pass in a value of -1 if the file is to be - 568 uploaded in a single chunk. Note that Google App Engine has a 5MB limit - 569 on request size, so you should never set your chunksize larger than 5MB, - 570 or to -1. - 571 resumable: bool, True if this is a resumable upload. False means upload - 572 in a single request. - 573 """ - 574 self._filename = filename - 575 fd = open(self._filename, "rb") - 576 if mimetype is None: - 577 # No mimetype provided, make a guess. - 578 mimetype, _ = mimetypes.guess_type(filename) - 579 if mimetype is None: - 580 # Guess failed, use octet-stream. - 581 mimetype = "application/octet-stream" - 582 super(MediaFileUpload, self).__init__( - 583 fd, mimetype, chunksize=chunksize, resumable=resumable - 584 ) -
585 -
586 - def __del__(self): -
587 self._fd.close() -
588 -
589 - def to_json(self): -
590 """Creating a JSON representation of an instance of MediaFileUpload. - 591 - 592 Returns: - 593 string, a JSON representation of this instance, suitable to pass to - 594 from_json(). - 595 """ - 596 return self._to_json(strip=["_fd"]) -
597 - 598 @staticmethod -
599 - def from_json(s): -
600 d = json.loads(s) - 601 return MediaFileUpload( - 602 d["_filename"], - 603 mimetype=d["_mimetype"], - 604 chunksize=d["_chunksize"], - 605 resumable=d["_resumable"], - 606 ) -
607 -
608 - 609 -class MediaInMemoryUpload(MediaIoBaseUpload): -
610 """MediaUpload for a chunk of bytes. - 611 - 612 DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or StringIO for - 613 the stream. - 614 """ - 615 - 616 @util.positional(2) -
617 - def __init__( - 618 self, - 619 body, - 620 mimetype="application/octet-stream", - 621 chunksize=DEFAULT_CHUNK_SIZE, - 622 resumable=False, - 623 ): -
624 """Create a new MediaInMemoryUpload. - 625 - 626 DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or StringIO for - 627 the stream. - 628 - 629 Args: - 630 body: string, Bytes of body content. - 631 mimetype: string, Mime-type of the file or default of - 632 'application/octet-stream'. - 633 chunksize: int, File will be uploaded in chunks of this many bytes. Only - 634 used if resumable=True. - 635 resumable: bool, True if this is a resumable upload. False means upload - 636 in a single request. - 637 """ - 638 fd = BytesIO(body) - 639 super(MediaInMemoryUpload, self).__init__( - 640 fd, mimetype, chunksize=chunksize, resumable=resumable - 641 ) -
642 -
643 - 644 -class MediaIoBaseDownload(object): -
645 """"Download media resources. - 646 - 647 Note that the Python file object is compatible with io.Base and can be used - 648 with this class also. - 649 - 650 - 651 Example: - 652 request = farms.animals().get_media(id='cow') - 653 fh = io.FileIO('cow.png', mode='wb') - 654 downloader = MediaIoBaseDownload(fh, request, chunksize=1024*1024) - 655 - 656 done = False - 657 while done is False: - 658 status, done = downloader.next_chunk() - 659 if status: - 660 print "Download %d%%." % int(status.progress() * 100) - 661 print "Download Complete!" - 662 """ - 663 - 664 @util.positional(3) -
665 - def __init__(self, fd, request, chunksize=DEFAULT_CHUNK_SIZE): -
666 """Constructor. - 667 - 668 Args: - 669 fd: io.Base or file object, The stream in which to write the downloaded - 670 bytes. - 671 request: googleapiclient.http.HttpRequest, the media request to perform in - 672 chunks. - 673 chunksize: int, File will be downloaded in chunks of this many bytes. - 674 """ - 675 self._fd = fd - 676 self._request = request - 677 self._uri = request.uri - 678 self._chunksize = chunksize - 679 self._progress = 0 - 680 self._total_size = None - 681 self._done = False - 682 - 683 # Stubs for testing. - 684 self._sleep = time.sleep - 685 self._rand = random.random - 686 - 687 self._headers = {} - 688 for k, v in six.iteritems(request.headers): - 689 # allow users to supply custom headers by setting them on the request - 690 # but strip out the ones that are set by default on requests generated by - 691 # API methods like Drive's files().get(fileId=...) - 692 if not k.lower() in ("accept", "accept-encoding", "user-agent"): - 693 self._headers[k] = v -
694 - 695 @util.positional(1) -
696 - def next_chunk(self, num_retries=0): -
697 """Get the next chunk of the download. - 698 - 699 Args: - 700 num_retries: Integer, number of times to retry with randomized - 701 exponential backoff. If all retries fail, the raised HttpError - 702 represents the last request. If zero (default), we attempt the - 703 request only once. - 704 - 705 Returns: - 706 (status, done): (MediaDownloadProgress, boolean) - 707 The value of 'done' will be True when the media has been fully - 708 downloaded or the total size of the media is unknown. - 709 - 710 Raises: - 711 googleapiclient.errors.HttpError if the response was not a 2xx. - 712 httplib2.HttpLib2Error if a transport error has occurred. - 713 """ - 714 headers = self._headers.copy() - 715 headers["range"] = "bytes=%d-%d" % ( - 716 self._progress, - 717 self._progress + self._chunksize, - 718 ) - 719 http = self._request.http - 720 - 721 resp, content = _retry_request( - 722 http, - 723 num_retries, - 724 "media download", - 725 self._sleep, - 726 self._rand, - 727 self._uri, - 728 "GET", - 729 headers=headers, - 730 ) - 731 - 732 if resp.status in [200, 206]: - 733 if "content-location" in resp and resp["content-location"] != self._uri: - 734 self._uri = resp["content-location"] - 735 self._progress += len(content) - 736 self._fd.write(content) - 737 - 738 if "content-range" in resp: - 739 content_range = resp["content-range"] - 740 length = content_range.rsplit("/", 1)[1] - 741 self._total_size = int(length) - 742 elif "content-length" in resp: - 743 self._total_size = int(resp["content-length"]) - 744 - 745 if self._total_size is None or self._progress == self._total_size: - 746 self._done = True - 747 return MediaDownloadProgress(self._progress, self._total_size), self._done - 748 else: - 749 raise HttpError(resp, content, uri=self._uri) -
750 -
751 - 752 -class _StreamSlice(object): -
753 """Truncated stream. - 754 - 755 Takes a stream and presents a stream that is a slice of the original stream. - 756 This is used when uploading media in chunks. In later versions of Python a - 757 stream can be passed to httplib in place of the string of data to send. The - 758 problem is that httplib just blindly reads to the end of the stream. This - 759 wrapper presents a virtual stream that only reads to the end of the chunk. - 760 """ - 761 -
762 - def __init__(self, stream, begin, chunksize): -
763 """Constructor. - 764 - 765 Args: - 766 stream: (io.Base, file object), the stream to wrap. - 767 begin: int, the seek position the chunk begins at. - 768 chunksize: int, the size of the chunk. - 769 """ - 770 self._stream = stream - 771 self._begin = begin - 772 self._chunksize = chunksize - 773 self._stream.seek(begin) -
774 -
775 - def read(self, n=-1): -
776 """Read n bytes. - 777 - 778 Args: - 779 n, int, the number of bytes to read. - 780 - 781 Returns: - 782 A string of length 'n', or less if EOF is reached. - 783 """ - 784 # The data left available to read sits in [cur, end) - 785 cur = self._stream.tell() - 786 end = self._begin + self._chunksize - 787 if n == -1 or cur + n > end: - 788 n = end - cur - 789 return self._stream.read(n) -
790 -
791 - 792 -class HttpRequest(object): -
793 """Encapsulates a single HTTP request.""" - 794 - 795 @util.positional(4) -
796 - def __init__( - 797 self, - 798 http, - 799 postproc, - 800 uri, - 801 method="GET", - 802 body=None, - 803 headers=None, - 804 methodId=None, - 805 resumable=None, - 806 ): -
807 """Constructor for an HttpRequest. - 808 - 809 Args: - 810 http: httplib2.Http, the transport object to use to make a request - 811 postproc: callable, called on the HTTP response and content to transform - 812 it into a data object before returning, or raising an exception - 813 on an error. - 814 uri: string, the absolute URI to send the request to - 815 method: string, the HTTP method to use - 816 body: string, the request body of the HTTP request, - 817 headers: dict, the HTTP request headers - 818 methodId: string, a unique identifier for the API method being called. - 819 resumable: MediaUpload, None if this is not a resumbale request. - 820 """ - 821 self.uri = uri - 822 self.method = method - 823 self.body = body - 824 self.headers = headers or {} - 825 self.methodId = methodId - 826 self.http = http - 827 self.postproc = postproc - 828 self.resumable = resumable - 829 self.response_callbacks = [] - 830 self._in_error_state = False - 831 - 832 # The size of the non-media part of the request. - 833 self.body_size = len(self.body or "") - 834 - 835 # The resumable URI to send chunks to. - 836 self.resumable_uri = None - 837 - 838 # The bytes that have been uploaded. - 839 self.resumable_progress = 0 - 840 - 841 # Stubs for testing. - 842 self._rand = random.random - 843 self._sleep = time.sleep -
844 - 845 @util.positional(1) -
846 - def execute(self, http=None, num_retries=0): -
847 """Execute the request. - 848 - 849 Args: - 850 http: httplib2.Http, an http object to be used in place of the - 851 one the HttpRequest request object was constructed with. - 852 num_retries: Integer, number of times to retry with randomized - 853 exponential backoff. If all retries fail, the raised HttpError - 854 represents the last request. If zero (default), we attempt the - 855 request only once. - 856 - 857 Returns: - 858 A deserialized object model of the response body as determined - 859 by the postproc. - 860 - 861 Raises: - 862 googleapiclient.errors.HttpError if the response was not a 2xx. - 863 httplib2.HttpLib2Error if a transport error has occurred. - 864 """ - 865 if http is None: - 866 http = self.http - 867 - 868 if self.resumable: - 869 body = None - 870 while body is None: - 871 _, body = self.next_chunk(http=http, num_retries=num_retries) - 872 return body - 873 - 874 # Non-resumable case. - 875 - 876 if "content-length" not in self.headers: - 877 self.headers["content-length"] = str(self.body_size) - 878 # If the request URI is too long then turn it into a POST request. - 879 # Assume that a GET request never contains a request body. - 880 if len(self.uri) > MAX_URI_LENGTH and self.method == "GET": - 881 self.method = "POST" - 882 self.headers["x-http-method-override"] = "GET" - 883 self.headers["content-type"] = "application/x-www-form-urlencoded" - 884 parsed = urlparse(self.uri) - 885 self.uri = urlunparse( - 886 (parsed.scheme, parsed.netloc, parsed.path, parsed.params, None, None) - 887 ) - 888 self.body = parsed.query - 889 self.headers["content-length"] = str(len(self.body)) - 890 - 891 # Handle retries for server-side errors. - 892 resp, content = _retry_request( - 893 http, - 894 num_retries, - 895 "request", - 896 self._sleep, - 897 self._rand, - 898 str(self.uri), - 899 method=str(self.method), - 900 body=self.body, - 901 headers=self.headers, - 902 ) - 903 - 904 for callback in self.response_callbacks: - 905 callback(resp) - 906 if resp.status >= 300: - 907 raise HttpError(resp, content, uri=self.uri) - 908 return self.postproc(resp, content) -
909 - 910 @util.positional(2) -
911 - def add_response_callback(self, cb): -
912 """add_response_headers_callback - 913 - 914 Args: - 915 cb: Callback to be called on receiving the response headers, of signature: - 916 - 917 def cb(resp): - 918 # Where resp is an instance of httplib2.Response - 919 """ - 920 self.response_callbacks.append(cb) -
921 - 922 @util.positional(1) -
923 - def next_chunk(self, http=None, num_retries=0): -
924 """Execute the next step of a resumable upload. - 925 - 926 Can only be used if the method being executed supports media uploads and - 927 the MediaUpload object passed in was flagged as using resumable upload. - 928 - 929 Example: - 930 - 931 media = MediaFileUpload('cow.png', mimetype='image/png', - 932 chunksize=1000, resumable=True) - 933 request = farm.animals().insert( - 934 id='cow', - 935 name='cow.png', - 936 media_body=media) - 937 - 938 response = None - 939 while response is None: - 940 status, response = request.next_chunk() - 941 if status: - 942 print "Upload %d%% complete." % int(status.progress() * 100) - 943 - 944 - 945 Args: - 946 http: httplib2.Http, an http object to be used in place of the - 947 one the HttpRequest request object was constructed with. - 948 num_retries: Integer, number of times to retry with randomized - 949 exponential backoff. If all retries fail, the raised HttpError - 950 represents the last request. If zero (default), we attempt the - 951 request only once. - 952 - 953 Returns: - 954 (status, body): (ResumableMediaStatus, object) - 955 The body will be None until the resumable media is fully uploaded. - 956 - 957 Raises: - 958 googleapiclient.errors.HttpError if the response was not a 2xx. - 959 httplib2.HttpLib2Error if a transport error has occurred. - 960 """ - 961 if http is None: - 962 http = self.http - 963 - 964 if self.resumable.size() is None: - 965 size = "*" - 966 else: - 967 size = str(self.resumable.size()) - 968 - 969 if self.resumable_uri is None: - 970 start_headers = copy.copy(self.headers) - 971 start_headers["X-Upload-Content-Type"] = self.resumable.mimetype() - 972 if size != "*": - 973 start_headers["X-Upload-Content-Length"] = size - 974 start_headers["content-length"] = str(self.body_size) - 975 - 976 resp, content = _retry_request( - 977 http, - 978 num_retries, - 979 "resumable URI request", - 980 self._sleep, - 981 self._rand, - 982 self.uri, - 983 method=self.method, - 984 body=self.body, - 985 headers=start_headers, - 986 ) - 987 - 988 if resp.status == 200 and "location" in resp: - 989 self.resumable_uri = resp["location"] - 990 else: - 991 raise ResumableUploadError(resp, content) - 992 elif self._in_error_state: - 993 # If we are in an error state then query the server for current state of - 994 # the upload by sending an empty PUT and reading the 'range' header in - 995 # the response. - 996 headers = {"Content-Range": "bytes */%s" % size, "content-length": "0"} - 997 resp, content = http.request(self.resumable_uri, "PUT", headers=headers) - 998 status, body = self._process_response(resp, content) - 999 if body: -1000 # The upload was complete. -1001 return (status, body) -1002 -1003 if self.resumable.has_stream(): -1004 data = self.resumable.stream() -1005 if self.resumable.chunksize() == -1: -1006 data.seek(self.resumable_progress) -1007 chunk_end = self.resumable.size() - self.resumable_progress - 1 -1008 else: -1009 # Doing chunking with a stream, so wrap a slice of the stream. -1010 data = _StreamSlice( -1011 data, self.resumable_progress, self.resumable.chunksize() -1012 ) -1013 chunk_end = min( -1014 self.resumable_progress + self.resumable.chunksize() - 1, -1015 self.resumable.size() - 1, -1016 ) -1017 else: -1018 data = self.resumable.getbytes( -1019 self.resumable_progress, self.resumable.chunksize() -1020 ) -1021 -1022 # A short read implies that we are at EOF, so finish the upload. -1023 if len(data) < self.resumable.chunksize(): -1024 size = str(self.resumable_progress + len(data)) -1025 -1026 chunk_end = self.resumable_progress + len(data) - 1 -1027 -1028 headers = { -1029 "Content-Range": "bytes %d-%d/%s" -1030 % (self.resumable_progress, chunk_end, size), -1031 # Must set the content-length header here because httplib can't -1032 # calculate the size when working with _StreamSlice. -1033 "Content-Length": str(chunk_end - self.resumable_progress + 1), -1034 } -1035 -1036 for retry_num in range(num_retries + 1): -1037 if retry_num > 0: -1038 self._sleep(self._rand() * 2 ** retry_num) -1039 LOGGER.warning( -1040 "Retry #%d for media upload: %s %s, following status: %d" -1041 % (retry_num, self.method, self.uri, resp.status) -1042 ) -1043 -1044 try: -1045 resp, content = http.request( -1046 self.resumable_uri, method="PUT", body=data, headers=headers -1047 ) -1048 except: -1049 self._in_error_state = True -1050 raise -1051 if not _should_retry_response(resp.status, content): -1052 break -1053 -1054 return self._process_response(resp, content) -
1055 -
1056 - def _process_response(self, resp, content): -
1057 """Process the response from a single chunk upload. -1058 -1059 Args: -1060 resp: httplib2.Response, the response object. -1061 content: string, the content of the response. -1062 -1063 Returns: -1064 (status, body): (ResumableMediaStatus, object) -1065 The body will be None until the resumable media is fully uploaded. -1066 -1067 Raises: -1068 googleapiclient.errors.HttpError if the response was not a 2xx or a 308. -1069 """ -1070 if resp.status in [200, 201]: -1071 self._in_error_state = False -1072 return None, self.postproc(resp, content) -1073 elif resp.status == 308: -1074 self._in_error_state = False -1075 # A "308 Resume Incomplete" indicates we are not done. -1076 try: -1077 self.resumable_progress = int(resp["range"].split("-")[1]) + 1 -1078 except KeyError: -1079 # If resp doesn't contain range header, resumable progress is 0 -1080 self.resumable_progress = 0 -1081 if "location" in resp: -1082 self.resumable_uri = resp["location"] -1083 else: -1084 self._in_error_state = True -1085 raise HttpError(resp, content, uri=self.uri) -1086 -1087 return ( -1088 MediaUploadProgress(self.resumable_progress, self.resumable.size()), -1089 None, -1090 ) -
1091 -
1092 - def to_json(self): -
1093 """Returns a JSON representation of the HttpRequest.""" -1094 d = copy.copy(self.__dict__) -1095 if d["resumable"] is not None: -1096 d["resumable"] = self.resumable.to_json() -1097 del d["http"] -1098 del d["postproc"] -1099 del d["_sleep"] -1100 del d["_rand"] -1101 -1102 return json.dumps(d) -
1103 -1104 @staticmethod -
1105 - def from_json(s, http, postproc): -
1106 """Returns an HttpRequest populated with info from a JSON object.""" -1107 d = json.loads(s) -1108 if d["resumable"] is not None: -1109 d["resumable"] = MediaUpload.new_from_json(d["resumable"]) -1110 return HttpRequest( -1111 http, -1112 postproc, -1113 uri=d["uri"], -1114 method=d["method"], -1115 body=d["body"], -1116 headers=d["headers"], -1117 methodId=d["methodId"], -1118 resumable=d["resumable"], -1119 ) -
1120 -1121 @staticmethod -
1122 - def null_postproc(resp, contents): -
1123 return resp, contents -
1124 -
1125 -1126 -class BatchHttpRequest(object): -
1127 """Batches multiple HttpRequest objects into a single HTTP request. -1128 -1129 Example: -1130 from googleapiclient.http import BatchHttpRequest -1131 -1132 def list_animals(request_id, response, exception): -1133 \"\"\"Do something with the animals list response.\"\"\" -1134 if exception is not None: -1135 # Do something with the exception. -1136 pass -1137 else: -1138 # Do something with the response. -1139 pass -1140 -1141 def list_farmers(request_id, response, exception): -1142 \"\"\"Do something with the farmers list response.\"\"\" -1143 if exception is not None: -1144 # Do something with the exception. -1145 pass -1146 else: -1147 # Do something with the response. -1148 pass -1149 -1150 service = build('farm', 'v2') -1151 -1152 batch = BatchHttpRequest() -1153 -1154 batch.add(service.animals().list(), list_animals) -1155 batch.add(service.farmers().list(), list_farmers) -1156 batch.execute(http=http) -1157 """ -1158 -1159 @util.positional(1) -
1160 - def __init__(self, callback=None, batch_uri=None): -
1161 """Constructor for a BatchHttpRequest. -1162 -1163 Args: -1164 callback: callable, A callback to be called for each response, of the -1165 form callback(id, response, exception). The first parameter is the -1166 request id, and the second is the deserialized response object. The -1167 third is an googleapiclient.errors.HttpError exception object if an HTTP error -1168 occurred while processing the request, or None if no error occurred. -1169 batch_uri: string, URI to send batch requests to. -1170 """ -1171 if batch_uri is None: -1172 batch_uri = _LEGACY_BATCH_URI -1173 -1174 if batch_uri == _LEGACY_BATCH_URI: -1175 LOGGER.warning( -1176 "You have constructed a BatchHttpRequest using the legacy batch " -1177 "endpoint %s. This endpoint will be turned down on August 12, 2020. " -1178 "Please provide the API-specific endpoint or use " -1179 "service.new_batch_http_request(). For more details see " -1180 "https://developers.googleblog.com/2018/03/discontinuing-support-for-json-rpc-and.html" -1181 "and https://developers.google.com/api-client-library/python/guide/batch.", -1182 _LEGACY_BATCH_URI, -1183 ) -1184 self._batch_uri = batch_uri -1185 -1186 # Global callback to be called for each individual response in the batch. -1187 self._callback = callback -1188 -1189 # A map from id to request. -1190 self._requests = {} -1191 -1192 # A map from id to callback. -1193 self._callbacks = {} -1194 -1195 # List of request ids, in the order in which they were added. -1196 self._order = [] -1197 -1198 # The last auto generated id. -1199 self._last_auto_id = 0 -1200 -1201 # Unique ID on which to base the Content-ID headers. -1202 self._base_id = None -1203 -1204 # A map from request id to (httplib2.Response, content) response pairs -1205 self._responses = {} -1206 -1207 # A map of id(Credentials) that have been refreshed. -1208 self._refreshed_credentials = {} -
1209 -
1210 - def _refresh_and_apply_credentials(self, request, http): -
1211 """Refresh the credentials and apply to the request. -1212 -1213 Args: -1214 request: HttpRequest, the request. -1215 http: httplib2.Http, the global http object for the batch. -1216 """ -1217 # For the credentials to refresh, but only once per refresh_token -1218 # If there is no http per the request then refresh the http passed in -1219 # via execute() -1220 creds = None -1221 request_credentials = False -1222 -1223 if request.http is not None: -1224 creds = _auth.get_credentials_from_http(request.http) -1225 request_credentials = True -1226 -1227 if creds is None and http is not None: -1228 creds = _auth.get_credentials_from_http(http) -1229 -1230 if creds is not None: -1231 if id(creds) not in self._refreshed_credentials: -1232 _auth.refresh_credentials(creds) -1233 self._refreshed_credentials[id(creds)] = 1 -1234 -1235 # Only apply the credentials if we are using the http object passed in, -1236 # otherwise apply() will get called during _serialize_request(). -1237 if request.http is None or not request_credentials: -1238 _auth.apply_credentials(creds, request.headers) -
1239 -
1240 - def _id_to_header(self, id_): -
1241 """Convert an id to a Content-ID header value. -1242 -1243 Args: -1244 id_: string, identifier of individual request. -1245 -1246 Returns: -1247 A Content-ID header with the id_ encoded into it. A UUID is prepended to -1248 the value because Content-ID headers are supposed to be universally -1249 unique. -1250 """ -1251 if self._base_id is None: -1252 self._base_id = uuid.uuid4() -1253 -1254 # NB: we intentionally leave whitespace between base/id and '+', so RFC2822 -1255 # line folding works properly on Python 3; see -1256 # https://github.com/googleapis/google-api-python-client/issues/164 -1257 return "<%s + %s>" % (self._base_id, quote(id_)) -
1258 -
1259 - def _header_to_id(self, header): -
1260 """Convert a Content-ID header value to an id. -1261 -1262 Presumes the Content-ID header conforms to the format that _id_to_header() -1263 returns. -1264 -1265 Args: -1266 header: string, Content-ID header value. -1267 -1268 Returns: -1269 The extracted id value. -1270 -1271 Raises: -1272 BatchError if the header is not in the expected format. -1273 """ -1274 if header[0] != "<" or header[-1] != ">": -1275 raise BatchError("Invalid value for Content-ID: %s" % header) -1276 if "+" not in header: -1277 raise BatchError("Invalid value for Content-ID: %s" % header) -1278 base, id_ = header[1:-1].split(" + ", 1) -1279 -1280 return unquote(id_) -
1281 -
1282 - def _serialize_request(self, request): -
1283 """Convert an HttpRequest object into a string. -1284 -1285 Args: -1286 request: HttpRequest, the request to serialize. -1287 -1288 Returns: -1289 The request as a string in application/http format. -1290 """ -1291 # Construct status line -1292 parsed = urlparse(request.uri) -1293 request_line = urlunparse( -1294 ("", "", parsed.path, parsed.params, parsed.query, "") -1295 ) -1296 status_line = request.method + " " + request_line + " HTTP/1.1\n" -1297 major, minor = request.headers.get("content-type", "application/json").split( -1298 "/" -1299 ) -1300 msg = MIMENonMultipart(major, minor) -1301 headers = request.headers.copy() -1302 -1303 if request.http is not None: -1304 credentials = _auth.get_credentials_from_http(request.http) -1305 if credentials is not None: -1306 _auth.apply_credentials(credentials, headers) -1307 -1308 # MIMENonMultipart adds its own Content-Type header. -1309 if "content-type" in headers: -1310 del headers["content-type"] -1311 -1312 for key, value in six.iteritems(headers): -1313 msg[key] = value -1314 msg["Host"] = parsed.netloc -1315 msg.set_unixfrom(None) -1316 -1317 if request.body is not None: -1318 msg.set_payload(request.body) -1319 msg["content-length"] = str(len(request.body)) -1320 -1321 # Serialize the mime message. -1322 fp = StringIO() -1323 # maxheaderlen=0 means don't line wrap headers. -1324 g = Generator(fp, maxheaderlen=0) -1325 g.flatten(msg, unixfrom=False) -1326 body = fp.getvalue() -1327 -1328 return status_line + body -
1329 -
1330 - def _deserialize_response(self, payload): -
1331 """Convert string into httplib2 response and content. -1332 -1333 Args: -1334 payload: string, headers and body as a string. -1335 -1336 Returns: -1337 A pair (resp, content), such as would be returned from httplib2.request. -1338 """ -1339 # Strip off the status line -1340 status_line, payload = payload.split("\n", 1) -1341 protocol, status, reason = status_line.split(" ", 2) -1342 -1343 # Parse the rest of the response -1344 parser = FeedParser() -1345 parser.feed(payload) -1346 msg = parser.close() -1347 msg["status"] = status -1348 -1349 # Create httplib2.Response from the parsed headers. -1350 resp = httplib2.Response(msg) -1351 resp.reason = reason -1352 resp.version = int(protocol.split("/", 1)[1].replace(".", "")) -1353 -1354 content = payload.split("\r\n\r\n", 1)[1] -1355 -1356 return resp, content -
1357 -
1358 - def _new_id(self): -
1359 """Create a new id. -1360 -1361 Auto incrementing number that avoids conflicts with ids already used. -1362 -1363 Returns: -1364 string, a new unique id. -1365 """ -1366 self._last_auto_id += 1 -1367 while str(self._last_auto_id) in self._requests: -1368 self._last_auto_id += 1 -1369 return str(self._last_auto_id) -
1370 -1371 @util.positional(2) -
1372 - def add(self, request, callback=None, request_id=None): -
1373 """Add a new request. -1374 -1375 Every callback added will be paired with a unique id, the request_id. That -1376 unique id will be passed back to the callback when the response comes back -1377 from the server. The default behavior is to have the library generate it's -1378 own unique id. If the caller passes in a request_id then they must ensure -1379 uniqueness for each request_id, and if they are not an exception is -1380 raised. Callers should either supply all request_ids or never supply a -1381 request id, to avoid such an error. -1382 -1383 Args: -1384 request: HttpRequest, Request to add to the batch. -1385 callback: callable, A callback to be called for this response, of the -1386 form callback(id, response, exception). The first parameter is the -1387 request id, and the second is the deserialized response object. The -1388 third is an googleapiclient.errors.HttpError exception object if an HTTP error -1389 occurred while processing the request, or None if no errors occurred. -1390 request_id: string, A unique id for the request. The id will be passed -1391 to the callback with the response. -1392 -1393 Returns: -1394 None -1395 -1396 Raises: -1397 BatchError if a media request is added to a batch. -1398 KeyError is the request_id is not unique. -1399 """ -1400 -1401 if len(self._order) >= MAX_BATCH_LIMIT: -1402 raise BatchError( -1403 "Exceeded the maximum calls(%d) in a single batch request." -1404 % MAX_BATCH_LIMIT -1405 ) -1406 if request_id is None: -1407 request_id = self._new_id() -1408 if request.resumable is not None: -1409 raise BatchError("Media requests cannot be used in a batch request.") -1410 if request_id in self._requests: -1411 raise KeyError("A request with this ID already exists: %s" % request_id) -1412 self._requests[request_id] = request -1413 self._callbacks[request_id] = callback -1414 self._order.append(request_id) -
1415 -
1416 - def _execute(self, http, order, requests): -
1417 """Serialize batch request, send to server, process response. -1418 -1419 Args: -1420 http: httplib2.Http, an http object to be used to make the request with. -1421 order: list, list of request ids in the order they were added to the -1422 batch. -1423 requests: list, list of request objects to send. -1424 -1425 Raises: -1426 httplib2.HttpLib2Error if a transport error has occurred. -1427 googleapiclient.errors.BatchError if the response is the wrong format. -1428 """ -1429 message = MIMEMultipart("mixed") -1430 # Message should not write out it's own headers. -1431 setattr(message, "_write_headers", lambda self: None) -1432 -1433 # Add all the individual requests. -1434 for request_id in order: -1435 request = requests[request_id] -1436 -1437 msg = MIMENonMultipart("application", "http") -1438 msg["Content-Transfer-Encoding"] = "binary" -1439 msg["Content-ID"] = self._id_to_header(request_id) -1440 -1441 body = self._serialize_request(request) -1442 msg.set_payload(body) -1443 message.attach(msg) -1444 -1445 # encode the body: note that we can't use `as_string`, because -1446 # it plays games with `From ` lines. -1447 fp = StringIO() -1448 g = Generator(fp, mangle_from_=False) -1449 g.flatten(message, unixfrom=False) -1450 body = fp.getvalue() -1451 -1452 headers = {} -1453 headers["content-type"] = ( -1454 "multipart/mixed; " 'boundary="%s"' -1455 ) % message.get_boundary() -1456 -1457 resp, content = http.request( -1458 self._batch_uri, method="POST", body=body, headers=headers -1459 ) -1460 -1461 if resp.status >= 300: -1462 raise HttpError(resp, content, uri=self._batch_uri) -1463 -1464 # Prepend with a content-type header so FeedParser can handle it. -1465 header = "content-type: %s\r\n\r\n" % resp["content-type"] -1466 # PY3's FeedParser only accepts unicode. So we should decode content -1467 # here, and encode each payload again. -1468 if six.PY3: -1469 content = content.decode("utf-8") -1470 for_parser = header + content -1471 -1472 parser = FeedParser() -1473 parser.feed(for_parser) -1474 mime_response = parser.close() -1475 -1476 if not mime_response.is_multipart(): -1477 raise BatchError( -1478 "Response not in multipart/mixed format.", resp=resp, content=content -1479 ) -1480 -1481 for part in mime_response.get_payload(): -1482 request_id = self._header_to_id(part["Content-ID"]) -1483 response, content = self._deserialize_response(part.get_payload()) -1484 # We encode content here to emulate normal http response. -1485 if isinstance(content, six.text_type): -1486 content = content.encode("utf-8") -1487 self._responses[request_id] = (response, content) -
1488 -1489 @util.positional(1) -
1490 - def execute(self, http=None): -
1491 """Execute all the requests as a single batched HTTP request. -1492 -1493 Args: -1494 http: httplib2.Http, an http object to be used in place of the one the -1495 HttpRequest request object was constructed with. If one isn't supplied -1496 then use a http object from the requests in this batch. -1497 -1498 Returns: -1499 None -1500 -1501 Raises: -1502 httplib2.HttpLib2Error if a transport error has occurred. -1503 googleapiclient.errors.BatchError if the response is the wrong format. -1504 """ -1505 # If we have no requests return -1506 if len(self._order) == 0: -1507 return None -1508 -1509 # If http is not supplied use the first valid one given in the requests. -1510 if http is None: -1511 for request_id in self._order: -1512 request = self._requests[request_id] -1513 if request is not None: -1514 http = request.http -1515 break -1516 -1517 if http is None: -1518 raise ValueError("Missing a valid http object.") -1519 -1520 # Special case for OAuth2Credentials-style objects which have not yet been -1521 # refreshed with an initial access_token. -1522 creds = _auth.get_credentials_from_http(http) -1523 if creds is not None: -1524 if not _auth.is_valid(creds): -1525 LOGGER.info("Attempting refresh to obtain initial access_token") -1526 _auth.refresh_credentials(creds) -1527 -1528 self._execute(http, self._order, self._requests) -1529 -1530 # Loop over all the requests and check for 401s. For each 401 request the -1531 # credentials should be refreshed and then sent again in a separate batch. -1532 redo_requests = {} -1533 redo_order = [] -1534 -1535 for request_id in self._order: -1536 resp, content = self._responses[request_id] -1537 if resp["status"] == "401": -1538 redo_order.append(request_id) -1539 request = self._requests[request_id] -1540 self._refresh_and_apply_credentials(request, http) -1541 redo_requests[request_id] = request -1542 -1543 if redo_requests: -1544 self._execute(http, redo_order, redo_requests) -1545 -1546 # Now process all callbacks that are erroring, and raise an exception for -1547 # ones that return a non-2xx response? Or add extra parameter to callback -1548 # that contains an HttpError? -1549 -1550 for request_id in self._order: -1551 resp, content = self._responses[request_id] -1552 -1553 request = self._requests[request_id] -1554 callback = self._callbacks[request_id] -1555 -1556 response = None -1557 exception = None -1558 try: -1559 if resp.status >= 300: -1560 raise HttpError(resp, content, uri=request.uri) -1561 response = request.postproc(resp, content) -1562 except HttpError as e: -1563 exception = e -1564 -1565 if callback is not None: -1566 callback(request_id, response, exception) -1567 if self._callback is not None: -1568 self._callback(request_id, response, exception) -
1569 -
1570 -1571 -class HttpRequestMock(object): -
1572 """Mock of HttpRequest. -1573 -1574 Do not construct directly, instead use RequestMockBuilder. -1575 """ -1576 -
1577 - def __init__(self, resp, content, postproc): -
1578 """Constructor for HttpRequestMock -1579 -1580 Args: -1581 resp: httplib2.Response, the response to emulate coming from the request -1582 content: string, the response body -1583 postproc: callable, the post processing function usually supplied by -1584 the model class. See model.JsonModel.response() as an example. -1585 """ -1586 self.resp = resp -1587 self.content = content -1588 self.postproc = postproc -1589 if resp is None: -1590 self.resp = httplib2.Response({"status": 200, "reason": "OK"}) -1591 if "reason" in self.resp: -1592 self.resp.reason = self.resp["reason"] -
1593 -
1594 - def execute(self, http=None): -
1595 """Execute the request. -1596 -1597 Same behavior as HttpRequest.execute(), but the response is -1598 mocked and not really from an HTTP request/response. -1599 """ -1600 return self.postproc(self.resp, self.content) -
1601 -
1602 -1603 -class RequestMockBuilder(object): -
1604 """A simple mock of HttpRequest -1605 -1606 Pass in a dictionary to the constructor that maps request methodIds to -1607 tuples of (httplib2.Response, content, opt_expected_body) that should be -1608 returned when that method is called. None may also be passed in for the -1609 httplib2.Response, in which case a 200 OK response will be generated. -1610 If an opt_expected_body (str or dict) is provided, it will be compared to -1611 the body and UnexpectedBodyError will be raised on inequality. -1612 -1613 Example: -1614 response = '{"data": {"id": "tag:google.c...' -1615 requestBuilder = RequestMockBuilder( -1616 { -1617 'plus.activities.get': (None, response), -1618 } -1619 ) -1620 googleapiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder) -1621 -1622 Methods that you do not supply a response for will return a -1623 200 OK with an empty string as the response content or raise an excpetion -1624 if check_unexpected is set to True. The methodId is taken from the rpcName -1625 in the discovery document. -1626 -1627 For more details see the project wiki. -1628 """ -1629 -
1630 - def __init__(self, responses, check_unexpected=False): -
1631 """Constructor for RequestMockBuilder -1632 -1633 The constructed object should be a callable object -1634 that can replace the class HttpResponse. -1635 -1636 responses - A dictionary that maps methodIds into tuples -1637 of (httplib2.Response, content). The methodId -1638 comes from the 'rpcName' field in the discovery -1639 document. -1640 check_unexpected - A boolean setting whether or not UnexpectedMethodError -1641 should be raised on unsupplied method. -1642 """ -1643 self.responses = responses -1644 self.check_unexpected = check_unexpected -
1645 -
1646 - def __call__( -1647 self, -1648 http, -1649 postproc, -1650 uri, -1651 method="GET", -1652 body=None, -1653 headers=None, -1654 methodId=None, -1655 resumable=None, -1656 ): -
1657 """Implements the callable interface that discovery.build() expects -1658 of requestBuilder, which is to build an object compatible with -1659 HttpRequest.execute(). See that method for the description of the -1660 parameters and the expected response. -1661 """ -1662 if methodId in self.responses: -1663 response = self.responses[methodId] -1664 resp, content = response[:2] -1665 if len(response) > 2: -1666 # Test the body against the supplied expected_body. -1667 expected_body = response[2] -1668 if bool(expected_body) != bool(body): -1669 # Not expecting a body and provided one -1670 # or expecting a body and not provided one. -1671 raise UnexpectedBodyError(expected_body, body) -1672 if isinstance(expected_body, str): -1673 expected_body = json.loads(expected_body) -1674 body = json.loads(body) -1675 if body != expected_body: -1676 raise UnexpectedBodyError(expected_body, body) -1677 return HttpRequestMock(resp, content, postproc) -1678 elif self.check_unexpected: -1679 raise UnexpectedMethodError(methodId=methodId) -1680 else: -1681 model = JsonModel(False) -1682 return HttpRequestMock(None, "{}", model.response) -
1683 -
1684 -1685 -class HttpMock(object): -
1686 """Mock of httplib2.Http""" -1687 -
1688 - def __init__(self, filename=None, headers=None): -
1689 """ -1690 Args: -1691 filename: string, absolute filename to read response from -1692 headers: dict, header to return with response -1693 """ -1694 if headers is None: -1695 headers = {"status": "200"} -1696 if filename: -1697 with open(filename, "rb") as f: -1698 self.data = f.read() -1699 else: -1700 self.data = None -1701 self.response_headers = headers -1702 self.headers = None -1703 self.uri = None -1704 self.method = None -1705 self.body = None -1706 self.headers = None -
1707 -
1708 - def request( -1709 self, -1710 uri, -1711 method="GET", -1712 body=None, -1713 headers=None, -1714 redirections=1, -1715 connection_type=None, -1716 ): -
1717 self.uri = uri -1718 self.method = method -1719 self.body = body -1720 self.headers = headers -1721 return httplib2.Response(self.response_headers), self.data -
1722 -
1723 - def close(self): -
1724 return None -
1725 -
1726 -class HttpMockSequence(object): -
1727 """Mock of httplib2.Http -1728 -1729 Mocks a sequence of calls to request returning different responses for each -1730 call. Create an instance initialized with the desired response headers -1731 and content and then use as if an httplib2.Http instance. -1732 -1733 http = HttpMockSequence([ -1734 ({'status': '401'}, ''), -1735 ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'), -1736 ({'status': '200'}, 'echo_request_headers'), -1737 ]) -1738 resp, content = http.request("http://examples.com") -1739 -1740 There are special values you can pass in for content to trigger -1741 behavours that are helpful in testing. -1742 -1743 'echo_request_headers' means return the request headers in the response body -1744 'echo_request_headers_as_json' means return the request headers in -1745 the response body -1746 'echo_request_body' means return the request body in the response body -1747 'echo_request_uri' means return the request uri in the response body -1748 """ -1749 -
1750 - def __init__(self, iterable): -
1751 """ -1752 Args: -1753 iterable: iterable, a sequence of pairs of (headers, body) -1754 """ -1755 self._iterable = iterable -1756 self.follow_redirects = True -1757 self.request_sequence = list() -
1758 -
1759 - def request( -1760 self, -1761 uri, -1762 method="GET", -1763 body=None, -1764 headers=None, -1765 redirections=1, -1766 connection_type=None, -1767 ): -
1768 # Remember the request so after the fact this mock can be examined -1769 self.request_sequence.append((uri, method, body, headers)) -1770 resp, content = self._iterable.pop(0) -1771 content = six.ensure_binary(content) -1772 -1773 if content == b"echo_request_headers": -1774 content = headers -1775 elif content == b"echo_request_headers_as_json": -1776 content = json.dumps(headers) -1777 elif content == b"echo_request_body": -1778 if hasattr(body, "read"): -1779 content = body.read() -1780 else: -1781 content = body -1782 elif content == b"echo_request_uri": -1783 content = uri -1784 if isinstance(content, six.text_type): -1785 content = content.encode("utf-8") -1786 return httplib2.Response(resp), content -
1787 -
1788 -1789 -def set_user_agent(http, user_agent): -
1790 """Set the user-agent on every request. -1791 -1792 Args: -1793 http - An instance of httplib2.Http -1794 or something that acts like it. -1795 user_agent: string, the value for the user-agent header. -1796 -1797 Returns: -1798 A modified instance of http that was passed in. -1799 -1800 Example: -1801 -1802 h = httplib2.Http() -1803 h = set_user_agent(h, "my-app-name/6.0") -1804 -1805 Most of the time the user-agent will be set doing auth, this is for the rare -1806 cases where you are accessing an unauthenticated endpoint. -1807 """ -1808 request_orig = http.request -1809 -1810 # The closure that will replace 'httplib2.Http.request'. -1811 def new_request( -1812 uri, -1813 method="GET", -1814 body=None, -1815 headers=None, -1816 redirections=httplib2.DEFAULT_MAX_REDIRECTS, -1817 connection_type=None, -1818 ): -1819 """Modify the request headers to add the user-agent.""" -1820 if headers is None: -1821 headers = {} -1822 if "user-agent" in headers: -1823 headers["user-agent"] = user_agent + " " + headers["user-agent"] -1824 else: -1825 headers["user-agent"] = user_agent -1826 resp, content = request_orig( -1827 uri, -1828 method=method, -1829 body=body, -1830 headers=headers, -1831 redirections=redirections, -1832 connection_type=connection_type, -1833 ) -1834 return resp, content -
1835 -1836 http.request = new_request -1837 return http -1838 -
1839 -1840 -def tunnel_patch(http): -
1841 """Tunnel PATCH requests over POST. -1842 Args: -1843 http - An instance of httplib2.Http -1844 or something that acts like it. -1845 -1846 Returns: -1847 A modified instance of http that was passed in. -1848 -1849 Example: -1850 -1851 h = httplib2.Http() -1852 h = tunnel_patch(h, "my-app-name/6.0") -1853 -1854 Useful if you are running on a platform that doesn't support PATCH. -1855 Apply this last if you are using OAuth 1.0, as changing the method -1856 will result in a different signature. -1857 """ -1858 request_orig = http.request -1859 -1860 # The closure that will replace 'httplib2.Http.request'. -1861 def new_request( -1862 uri, -1863 method="GET", -1864 body=None, -1865 headers=None, -1866 redirections=httplib2.DEFAULT_MAX_REDIRECTS, -1867 connection_type=None, -1868 ): -1869 """Modify the request headers to add the user-agent.""" -1870 if headers is None: -1871 headers = {} -1872 if method == "PATCH": -1873 if "oauth_token" in headers.get("authorization", ""): -1874 LOGGER.warning( -1875 "OAuth 1.0 request made with Credentials after tunnel_patch." -1876 ) -1877 headers["x-http-method-override"] = "PATCH" -1878 method = "POST" -1879 resp, content = request_orig( -1880 uri, -1881 method=method, -1882 body=body, -1883 headers=headers, -1884 redirections=redirections, -1885 connection_type=connection_type, -1886 ) -1887 return resp, content -
1888 -1889 http.request = new_request -1890 return http -1891 -
1892 -1893 -def build_http(): -
1894 """Builds httplib2.Http object -1895 -1896 Returns: -1897 A httplib2.Http object, which is used to make http requests, and which has timeout set by default. -1898 To override default timeout call -1899 -1900 socket.setdefaulttimeout(timeout_in_sec) -1901 -1902 before interacting with this method. -1903 """ -1904 if socket.getdefaulttimeout() is not None: -1905 http_timeout = socket.getdefaulttimeout() -1906 else: -1907 http_timeout = DEFAULT_HTTP_TIMEOUT_SEC -1908 http = httplib2.Http(timeout=http_timeout) -1909 # 308's are used by several Google APIs (Drive, YouTube) -1910 # for Resumable Uploads rather than Permanent Redirects. -1911 # This asks httplib2 to exclude 308s from the status codes -1912 # it treats as redirects -1913 try: -1914 http.redirect_codes = http.redirect_codes - {308} -1915 except AttributeError: -1916 # Apache Beam tests depend on this library and cannot -1917 # currently upgrade their httplib2 version -1918 # http.redirect_codes does not exist in previous versions -1919 # of httplib2, so pass -1920 pass -1921 -1922 return http -
1923 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.BatchHttpRequest-class.html b/docs/epy/googleapiclient.http.BatchHttpRequest-class.html deleted file mode 100644 index 965e376c832..00000000000 --- a/docs/epy/googleapiclient.http.BatchHttpRequest-class.html +++ /dev/null @@ -1,752 +0,0 @@ - - - - - googleapiclient.http.BatchHttpRequest - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class BatchHttpRequest - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class BatchHttpRequest

source code

-
-object --+
-         |
-        BatchHttpRequest
-
- -
-
-Batches multiple HttpRequest objects into a single HTTP request.
-
-Example:
-  from googleapiclient.http import BatchHttpRequest
-
-  def list_animals(request_id, response, exception):
-    """Do something with the animals list response."""
-    if exception is not None:
-      # Do something with the exception.
-      pass
-    else:
-      # Do something with the response.
-      pass
-
-  def list_farmers(request_id, response, exception):
-    """Do something with the farmers list response."""
-    if exception is not None:
-      # Do something with the exception.
-      pass
-    else:
-      # Do something with the response.
-      pass
-
-  service = build('farm', 'v2')
-
-  batch = BatchHttpRequest()
-
-  batch.add(service.animals().list(), list_animals)
-  batch.add(service.farmers().list(), list_farmers)
-  batch.execute(http=http)
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Constructor for a BatchHttpRequest.
- source code - -
- -
-   - - - - - - -
_refresh_and_apply_credentials(self, - request, - http)
- Refresh the credentials and apply to the request.
- source code - -
- -
-   - - - - - - -
_id_to_header(self, - id_)
- Convert an id to a Content-ID header value.
- source code - -
- -
-   - - - - - - -
_header_to_id(self, - header)
- Convert a Content-ID header value to an id.
- source code - -
- -
-   - - - - - - -
_serialize_request(self, - request)
- Convert an HttpRequest object into a string.
- source code - -
- -
-   - - - - - - -
_deserialize_response(self, - payload)
- Convert string into httplib2 response and content.
- source code - -
- -
-   - - - - - - -
_new_id(self)
- Create a new id.
- source code - -
- -
-   - - - - - - -
add(*args, - **kwargs)
- Add a new request.
- source code - -
- -
-   - - - - - - -
_execute(self, - http, - order, - requests)
- Serialize batch request, send to server, process response.
- source code - -
- -
-   - - - - - - -
execute(*args, - **kwargs)
- Execute all the requests as a single batched HTTP request.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Constructor for a BatchHttpRequest.
-
-Args:
-  callback: callable, A callback to be called for each response, of the
-    form callback(id, response, exception). The first parameter is the
-    request id, and the second is the deserialized response object. The
-    third is an googleapiclient.errors.HttpError exception object if an HTTP error
-    occurred while processing the request, or None if no error occurred.
-  batch_uri: string, URI to send batch requests to.
-
-
-
-
Decorators:
-
    -
  • @util.positional(1)
  • -
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

_refresh_and_apply_credentials(self, - request, - http) -

-
source code  -
- -
-Refresh the credentials and apply to the request.
-
-Args:
-  request: HttpRequest, the request.
-  http: httplib2.Http, the global http object for the batch.
-
-
-
-
-
-
- -
- -
- - -
-

_id_to_header(self, - id_) -

-
source code  -
- -
-Convert an id to a Content-ID header value.
-
-Args:
-  id_: string, identifier of individual request.
-
-Returns:
-  A Content-ID header with the id_ encoded into it. A UUID is prepended to
-  the value because Content-ID headers are supposed to be universally
-  unique.
-
-
-
-
-
-
- -
- -
- - -
-

_header_to_id(self, - header) -

-
source code  -
- -
-Convert a Content-ID header value to an id.
-
-Presumes the Content-ID header conforms to the format that _id_to_header()
-returns.
-
-Args:
-  header: string, Content-ID header value.
-
-Returns:
-  The extracted id value.
-
-Raises:
-  BatchError if the header is not in the expected format.
-
-
-
-
-
-
- -
- -
- - -
-

_serialize_request(self, - request) -

-
source code  -
- -
-Convert an HttpRequest object into a string.
-
-Args:
-  request: HttpRequest, the request to serialize.
-
-Returns:
-  The request as a string in application/http format.
-
-
-
-
-
-
- -
- -
- - -
-

_deserialize_response(self, - payload) -

-
source code  -
- -
-Convert string into httplib2 response and content.
-
-Args:
-  payload: string, headers and body as a string.
-
-Returns:
-  A pair (resp, content), such as would be returned from httplib2.request.
-
-
-
-
-
-
- -
- -
- - -
-

_new_id(self) -

-
source code  -
- -
-Create a new id.
-
-Auto incrementing number that avoids conflicts with ids already used.
-
-Returns:
-   string, a new unique id.
-
-
-
-
-
-
- -
- -
- - -
-

add(*args, - **kwargs) -

-
source code  -
- -
-Add a new request.
-
-Every callback added will be paired with a unique id, the request_id. That
-unique id will be passed back to the callback when the response comes back
-from the server. The default behavior is to have the library generate it's
-own unique id. If the caller passes in a request_id then they must ensure
-uniqueness for each request_id, and if they are not an exception is
-raised. Callers should either supply all request_ids or never supply a
-request id, to avoid such an error.
-
-Args:
-  request: HttpRequest, Request to add to the batch.
-  callback: callable, A callback to be called for this response, of the
-    form callback(id, response, exception). The first parameter is the
-    request id, and the second is the deserialized response object. The
-    third is an googleapiclient.errors.HttpError exception object if an HTTP error
-    occurred while processing the request, or None if no errors occurred.
-  request_id: string, A unique id for the request. The id will be passed
-    to the callback with the response.
-
-Returns:
-  None
-
-Raises:
-  BatchError if a media request is added to a batch.
-  KeyError is the request_id is not unique.
-
-
-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
-
-
- -
- -
- - -
-

_execute(self, - http, - order, - requests) -

-
source code  -
- -
-Serialize batch request, send to server, process response.
-
-Args:
-  http: httplib2.Http, an http object to be used to make the request with.
-  order: list, list of request ids in the order they were added to the
-    batch.
-  requests: list, list of request objects to send.
-
-Raises:
-  httplib2.HttpLib2Error if a transport error has occurred.
-  googleapiclient.errors.BatchError if the response is the wrong format.
-
-
-
-
-
-
- -
- -
- - -
-

execute(*args, - **kwargs) -

-
source code  -
- -
-Execute all the requests as a single batched HTTP request.
-
-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
-    then use a http object from the requests in this batch.
-
-Returns:
-  None
-
-Raises:
-  httplib2.HttpLib2Error if a transport error has occurred.
-  googleapiclient.errors.BatchError if the response is the wrong format.
-
-
-
-
Decorators:
-
    -
  • @util.positional(1)
  • -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.HttpMock-class.html b/docs/epy/googleapiclient.http.HttpMock-class.html deleted file mode 100644 index fdc03ae8052..00000000000 --- a/docs/epy/googleapiclient.http.HttpMock-class.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - googleapiclient.http.HttpMock - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class HttpMock - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class HttpMock

source code

-
-object --+
-         |
-        HttpMock
-
- -
-

Mock of httplib2.Http

- - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - filename=None, - headers=None)
- Args:...
- source code - -
- -
-   - - - - - - -
request(self, - uri, - method='GET', - body=None, - headers=None, - redirections=1, - connection_type=None) - source code - -
- -
-   - - - - - - -
close(self) - source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - filename=None, - headers=None) -
(Constructor) -

-
source code  -
- -
-
-Args:
-  filename: string, absolute filename to read response from
-  headers: dict, header to return with response
-
-
-
-
Overrides: - object.__init__ -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.HttpMockSequence-class.html b/docs/epy/googleapiclient.http.HttpMockSequence-class.html deleted file mode 100644 index 9eaf4d1e7c4..00000000000 --- a/docs/epy/googleapiclient.http.HttpMockSequence-class.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - googleapiclient.http.HttpMockSequence - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class HttpMockSequence - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class HttpMockSequence

source code

-
-object --+
-         |
-        HttpMockSequence
-
- -
-
-Mock of httplib2.Http
-
-Mocks a sequence of calls to request returning different responses for each
-call. Create an instance initialized with the desired response headers
-and content and then use as if an httplib2.Http instance.
-
-  http = HttpMockSequence([
-    ({'status': '401'}, ''),
-    ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),
-    ({'status': '200'}, 'echo_request_headers'),
-    ])
-  resp, content = http.request("http://examples.com")
-
-There are special values you can pass in for content to trigger
-behavours that are helpful in testing.
-
-'echo_request_headers' means return the request headers in the response body
-'echo_request_headers_as_json' means return the request headers in
-   the response body
-'echo_request_body' means return the request body in the response body
-'echo_request_uri' means return the request uri in the response body
-
-
- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - iterable)
- Args:...
- source code - -
- -
-   - - - - - - -
request(self, - uri, - method='GET', - body=None, - headers=None, - redirections=1, - connection_type=None) - source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - iterable) -
(Constructor) -

-
source code  -
- -
-
-Args:
-  iterable: iterable, a sequence of pairs of (headers, body)
-
-
-
-
Overrides: - object.__init__ -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.HttpRequest-class.html b/docs/epy/googleapiclient.http.HttpRequest-class.html deleted file mode 100644 index 3a1e38b5d0a..00000000000 --- a/docs/epy/googleapiclient.http.HttpRequest-class.html +++ /dev/null @@ -1,572 +0,0 @@ - - - - - googleapiclient.http.HttpRequest - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class HttpRequest - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class HttpRequest

source code

-
-object --+
-         |
-        HttpRequest
-
- -
-

Encapsulates a single HTTP request.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Constructor for an HttpRequest.
- source code - -
- -
-   - - - - - - -
execute(*args, - **kwargs)
- Execute the request.
- source code - -
- -
-   - - - - - - -
add_response_callback(*args, - **kwargs)
- add_response_headers_callback
- source code - -
- -
-   - - - - - - -
next_chunk(*args, - **kwargs)
- Execute the next step of a resumable upload.
- source code - -
- -
-   - - - - - - -
_process_response(self, - resp, - content)
- Process the response from a single chunk upload.
- source code - -
- -
-   - - - - - - -
to_json(self)
- Returns a JSON representation of the HttpRequest.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - - - - -
- - - - - -
Static Methods[hide private]
-
-   - - - - - - -
from_json(s, - http, - postproc)
- Returns an HttpRequest populated with info from a JSON object.
- source code - -
- -
-   - - - - - - -
null_postproc(resp, - contents) - source code - -
- -
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Constructor for an HttpRequest.
-
-Args:
-  http: httplib2.Http, the transport object to use to make a request
-  postproc: callable, called on the HTTP response and content to transform
-            it into a data object before returning, or raising an exception
-            on an error.
-  uri: string, the absolute URI to send the request to
-  method: string, the HTTP method to use
-  body: string, the request body of the HTTP request,
-  headers: dict, the HTTP request headers
-  methodId: string, a unique identifier for the API method being called.
-  resumable: MediaUpload, None if this is not a resumbale request.
-
-
-
-
Decorators:
-
    -
  • @util.positional(4)
  • -
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

execute(*args, - **kwargs) -

-
source code  -
- -
-Execute the request.
-
-Args:
-  http: httplib2.Http, an http object to be used in place of the
-        one the HttpRequest request object was constructed with.
-  num_retries: Integer, number of times to retry with randomized
-        exponential backoff. If all retries fail, the raised HttpError
-        represents the last request. If zero (default), we attempt the
-        request only once.
-
-Returns:
-  A deserialized object model of the response body as determined
-  by the postproc.
-
-Raises:
-  googleapiclient.errors.HttpError if the response was not a 2xx.
-  httplib2.HttpLib2Error if a transport error has occurred.
-
-
-
-
Decorators:
-
    -
  • @util.positional(1)
  • -
-
-
-
- -
- -
- - -
-

add_response_callback(*args, - **kwargs) -

-
source code  -
- -
-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
-
-
-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
-
-
- -
- -
- - -
-

next_chunk(*args, - **kwargs) -

-
source code  -
- -
-Execute the next step of a resumable upload.
-
-Can only be used if the method being executed supports media uploads and
-the MediaUpload object passed in was flagged as using resumable upload.
-
-Example:
-
-  media = MediaFileUpload('cow.png', mimetype='image/png',
-                          chunksize=1000, resumable=True)
-  request = farm.animals().insert(
-      id='cow',
-      name='cow.png',
-      media_body=media)
-
-  response = None
-  while response is None:
-    status, response = request.next_chunk()
-    if status:
-      print "Upload %d%% complete." % int(status.progress() * 100)
-
-
-Args:
-  http: httplib2.Http, an http object to be used in place of the
-        one the HttpRequest request object was constructed with.
-  num_retries: Integer, number of times to retry with randomized
-        exponential backoff. If all retries fail, the raised HttpError
-        represents the last request. If zero (default), we attempt the
-        request only once.
-
-Returns:
-  (status, body): (ResumableMediaStatus, object)
-     The body will be None until the resumable media is fully uploaded.
-
-Raises:
-  googleapiclient.errors.HttpError if the response was not a 2xx.
-  httplib2.HttpLib2Error if a transport error has occurred.
-
-
-
-
Decorators:
-
    -
  • @util.positional(1)
  • -
-
-
-
- -
- -
- - -
-

_process_response(self, - resp, - content) -

-
source code  -
- -
-Process the response from a single chunk upload.
-
-Args:
-  resp: httplib2.Response, the response object.
-  content: string, the content of the response.
-
-Returns:
-  (status, body): (ResumableMediaStatus, object)
-     The body will be None until the resumable media is fully uploaded.
-
-Raises:
-  googleapiclient.errors.HttpError if the response was not a 2xx or a 308.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.HttpRequestMock-class.html b/docs/epy/googleapiclient.http.HttpRequestMock-class.html deleted file mode 100644 index 804582119fd..00000000000 --- a/docs/epy/googleapiclient.http.HttpRequestMock-class.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - googleapiclient.http.HttpRequestMock - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class HttpRequestMock - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class HttpRequestMock

source code

-
-object --+
-         |
-        HttpRequestMock
-
- -
-

Mock of HttpRequest.

-

Do not construct directly, instead use RequestMockBuilder.

- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - resp, - content, - postproc)
- Constructor for HttpRequestMock
- source code - -
- -
-   - - - - - - -
execute(self, - http=None)
- Execute the request.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - resp, - content, - postproc) -
(Constructor) -

-
source code  -
- -
-Constructor for HttpRequestMock
-
-Args:
-  resp: httplib2.Response, the response to emulate coming from the request
-  content: string, the response body
-  postproc: callable, the post processing function usually supplied by
-            the model class. See model.JsonModel.response() as an example.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

execute(self, - http=None) -

-
source code  -
- -

Execute the request.

-

Same behavior as HttpRequest.execute(), but the response is mocked and - not really from an HTTP request/response.

-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.MediaDownloadProgress-class.html b/docs/epy/googleapiclient.http.MediaDownloadProgress-class.html deleted file mode 100644 index 5f6648e4b97..00000000000 --- a/docs/epy/googleapiclient.http.MediaDownloadProgress-class.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - googleapiclient.http.MediaDownloadProgress - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class MediaDownloadProgress - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaDownloadProgress

source code

-
-object --+
-         |
-        MediaDownloadProgress
-
- -
-

Status of a resumable download.

- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - resumable_progress, - total_size)
- Constructor.
- source code - -
- -
-   - - - - - - -
progress(self)
- Percent of download completed, as a float.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - resumable_progress, - total_size) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  resumable_progress: int, bytes received so far.
-  total_size: int, total bytes in complete download.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

progress(self) -

-
source code  -
- -
-Percent of download completed, as a float.
-
-Returns:
-  the percentage complete as a float, returning 0.0 if the total size of
-  the download is unknown.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.MediaFileUpload-class.html b/docs/epy/googleapiclient.http.MediaFileUpload-class.html deleted file mode 100644 index b4f9a073ce9..00000000000 --- a/docs/epy/googleapiclient.http.MediaFileUpload-class.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - - googleapiclient.http.MediaFileUpload - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class MediaFileUpload - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaFileUpload

source code

-
-   object --+        
-            |        
-  MediaUpload --+    
-                |    
-MediaIoBaseUpload --+
-                    |
-                   MediaFileUpload
-
- -
-
-A MediaUpload for a file.
-
-Construct a MediaFileUpload and pass as the media_body parameter of the
-method. For example, if we had a service that allowed uploading images:
-
-  media = MediaFileUpload('cow.png', mimetype='image/png',
-    chunksize=1024*1024, resumable=True)
-  farm.animals().insert(
-      id='cow',
-      name='cow.png',
-      media_body=media).execute()
-
-Depending on the platform you are working on, you may pass -1 as the
-chunksize, which indicates that the entire file should be uploaded in a single
-request. If the underlying platform supports streams, such as Python 2.6 or
-later, then this can be very efficient as it avoids multiple connections, and
-also avoids loading the entire file into memory before sending it. Note that
-Google App Engine has a 5MB limit on request size, so you should never set
-your chunksize larger than 5MB, or to -1.
-
-
- - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Constructor.
- source code - -
- -
-   - - - - - - -
__del__(self) - source code - -
- -
-   - - - - - - -
to_json(self)
- Creating a JSON representation of an instance of MediaFileUpload.
- source code - -
- -
-

Inherited from MediaIoBaseUpload: - chunksize, - getbytes, - has_stream, - mimetype, - resumable, - size, - stream -

-

Inherited from MediaUpload (private): - _to_json -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Class Methods[hide private]
-
-

Inherited from MediaUpload: - new_from_json -

-
- - - - - - - - - -
- - - - - -
Static Methods[hide private]
-
-   - - - - - - -
from_json(s) - source code - -
- -
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  filename: string, Name of the file.
-  mimetype: string, Mime-type of the file. If None then a mime-type will be
-    guessed from the file extension.
-  chunksize: int, File will be uploaded in chunks of this many bytes. Only
-    used if resumable=True. Pass in a value of -1 if the file is to be
-    uploaded in a single chunk. Note that Google App Engine has a 5MB limit
-    on request size, so you should never set your chunksize larger than 5MB,
-    or to -1.
-  resumable: bool, True if this is a resumable upload. False means upload
-    in a single request.
-
-
-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

to_json(self) -

-
source code  -
- -
-Creating a JSON representation of an instance of MediaFileUpload.
-
-Returns:
-   string, a JSON representation of this instance, suitable to pass to
-   from_json().
-
-
-
-
Overrides: - MediaUpload.to_json -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html b/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html deleted file mode 100644 index 04e696d937d..00000000000 --- a/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - googleapiclient.http.MediaInMemoryUpload - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class MediaInMemoryUpload - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaInMemoryUpload

source code

-
-   object --+        
-            |        
-  MediaUpload --+    
-                |    
-MediaIoBaseUpload --+
-                    |
-                   MediaInMemoryUpload
-
- -
-

MediaUpload for a chunk of bytes.

-

DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or - StringIO for the stream.

- - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Create a new MediaInMemoryUpload.
- source code - -
- -
-

Inherited from MediaIoBaseUpload: - chunksize, - getbytes, - has_stream, - mimetype, - resumable, - size, - stream, - to_json -

-

Inherited from MediaUpload (private): - _to_json -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Class Methods[hide private]
-
-

Inherited from MediaUpload: - new_from_json -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Create a new MediaInMemoryUpload.
-
-DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or StringIO for
-the stream.
-
-Args:
-  body: string, Bytes of body content.
-  mimetype: string, Mime-type of the file or default of
-    'application/octet-stream'.
-  chunksize: int, File will be uploaded in chunks of this many bytes. Only
-    used if resumable=True.
-  resumable: bool, True if this is a resumable upload. False means upload
-    in a single request.
-  
-
-
-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
Overrides: - object.__init__ -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html b/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html deleted file mode 100644 index d4f8b4293c4..00000000000 --- a/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - googleapiclient.http.MediaIoBaseDownload - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class MediaIoBaseDownload - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaIoBaseDownload

source code

-
-object --+
-         |
-        MediaIoBaseDownload
-
- -
-
-"Download media resources.
-
-Note that the Python file object is compatible with io.Base and can be used
-with this class also.
-
-
-Example:
-  request = farms.animals().get_media(id='cow')
-  fh = io.FileIO('cow.png', mode='wb')
-  downloader = MediaIoBaseDownload(fh, request, chunksize=1024*1024)
-
-  done = False
-  while done is False:
-    status, done = downloader.next_chunk()
-    if status:
-      print "Download %d%%." % int(status.progress() * 100)
-  print "Download Complete!"
-
-
- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Constructor.
- source code - -
- -
-   - - - - - - -
next_chunk(*args, - **kwargs)
- Get the next chunk of the download.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  fd: io.Base or file object, The stream in which to write the downloaded
-    bytes.
-  request: googleapiclient.http.HttpRequest, the media request to perform in
-    chunks.
-  chunksize: int, File will be downloaded in chunks of this many bytes.
-
-
-
-
Decorators:
-
    -
  • @util.positional(3)
  • -
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

next_chunk(*args, - **kwargs) -

-
source code  -
- -
-Get the next chunk of the download.
-
-Args:
-  num_retries: Integer, number of times to retry with randomized
-        exponential backoff. If all retries fail, the raised HttpError
-        represents the last request. If zero (default), we attempt the
-        request only once.
-
-Returns:
-  (status, done): (MediaDownloadProgress, boolean)
-     The value of 'done' will be True when the media has been fully
-     downloaded or the total size of the media is unknown.
-
-Raises:
-  googleapiclient.errors.HttpError if the response was not a 2xx.
-  httplib2.HttpLib2Error if a transport error has occurred.
-
-
-
-
Decorators:
-
    -
  • @util.positional(1)
  • -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html b/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html deleted file mode 100644 index a64712a7d5e..00000000000 --- a/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html +++ /dev/null @@ -1,683 +0,0 @@ - - - - - googleapiclient.http.MediaIoBaseUpload - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class MediaIoBaseUpload - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaIoBaseUpload

source code

-
- object --+    
-          |    
-MediaUpload --+
-              |
-             MediaIoBaseUpload
-
- -
Known Subclasses:
-
- -
- -
-
-A MediaUpload for a io.Base objects.
-
-Note that the Python file object is compatible with io.Base and can be used
-with this class also.
-
-  fh = BytesIO('...Some data to upload...')
-  media = MediaIoBaseUpload(fh, mimetype='image/png',
-    chunksize=1024*1024, resumable=True)
-  farm.animals().insert(
-      id='cow',
-      name='cow.png',
-      media_body=media).execute()
-
-Depending on the platform you are working on, you may pass -1 as the
-chunksize, which indicates that the entire file should be uploaded in a single
-request. If the underlying platform supports streams, such as Python 2.6 or
-later, then this can be very efficient as it avoids multiple connections, and
-also avoids loading the entire file into memory before sending it. Note that
-Google App Engine has a 5MB limit on request size, so you should never set
-your chunksize larger than 5MB, or to -1.
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Constructor.
- source code - -
- -
-   - - - - - - -
chunksize(self)
- Chunk size for resumable uploads.
- source code - -
- -
-   - - - - - - -
mimetype(self)
- Mime type of the body.
- source code - -
- -
-   - - - - - - -
size(self)
- Size of upload.
- source code - -
- -
-   - - - - - - -
resumable(self)
- Whether this upload is resumable.
- source code - -
- -
-   - - - - - - -
getbytes(self, - begin, - length)
- Get bytes from the media.
- source code - -
- -
-   - - - - - - -
has_stream(self)
- Does the underlying upload support a streaming interface.
- source code - -
- -
-   - - - - - - -
stream(self)
- A stream interface to the data being uploaded.
- source code - -
- -
-   - - - - - - -
to_json(self)
- This upload type is not serializable.
- source code - -
- -
-

Inherited from MediaUpload (private): - _to_json -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Class Methods[hide private]
-
-

Inherited from MediaUpload: - new_from_json -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  fd: io.Base or file object, The source of the bytes to upload. MUST be
-    opened in blocking mode, do not use streams opened in non-blocking mode.
-    The given stream must be seekable, that is, it must be able to call
-    seek() on fd.
-  mimetype: string, Mime-type of the file.
-  chunksize: int, File will be uploaded in chunks of this many bytes. Only
-    used if resumable=True. Pass in a value of -1 if the file is to be
-    uploaded as a single chunk. Note that Google App Engine has a 5MB limit
-    on request size, so you should never set your chunksize larger than 5MB,
-    or to -1.
-  resumable: bool, True if this is a resumable upload. False means upload
-    in a single request.
-
-
-
-
Decorators:
-
    -
  • @util.positional(3)
  • -
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

chunksize(self) -

-
source code  -
- -
-Chunk size for resumable uploads.
-
-Returns:
-  Chunk size in bytes.
-
-
-
-
Overrides: - MediaUpload.chunksize -
-
-
-
- -
- -
- - -
-

mimetype(self) -

-
source code  -
- -
-Mime type of the body.
-
-Returns:
-  Mime type.
-
-
-
-
Overrides: - MediaUpload.mimetype -
-
-
-
- -
- -
- - -
-

size(self) -

-
source code  -
- -
-Size of upload.
-
-Returns:
-  Size of the body, or None of the size is unknown.
-
-
-
-
Overrides: - MediaUpload.size -
-
-
-
- -
- -
- - -
-

resumable(self) -

-
source code  -
- -
-Whether this upload is resumable.
-
-Returns:
-  True if resumable upload or False.
-
-
-
-
Overrides: - MediaUpload.resumable -
-
-
-
- -
- -
- - -
-

getbytes(self, - begin, - length) -

-
source code  -
- -
-Get bytes from the media.
-
-Args:
-  begin: int, offset from beginning of file.
-  length: int, number of bytes to read, starting at begin.
-
-Returns:
-  A string of bytes read. May be shorted than length if EOF was reached
-  first.
-
-
-
-
Overrides: - MediaUpload.getbytes -
-
-
-
- -
- -
- - -
-

has_stream(self) -

-
source code  -
- -
-Does the underlying upload support a streaming interface.
-
-Streaming means it is an io.IOBase subclass that supports seek, i.e.
-seekable() returns True.
-
-Returns:
-  True if the call to stream() will return an instance of a seekable io.Base
-  subclass.
-
-
-
-
Overrides: - MediaUpload.has_stream -
-
-
-
- -
- -
- - -
-

stream(self) -

-
source code  -
- -
-A stream interface to the data being uploaded.
-
-Returns:
-  The returned value is an io.IOBase subclass that supports seek, i.e.
-  seekable() returns True.
-
-
-
-
Overrides: - MediaUpload.stream -
-
-
-
- -
- -
- - -
-

to_json(self) -

-
source code  -
- -

This upload type is not serializable.

-
-
Overrides: - MediaUpload.to_json -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.MediaUpload-class.html b/docs/epy/googleapiclient.http.MediaUpload-class.html deleted file mode 100644 index bb0ca394f2c..00000000000 --- a/docs/epy/googleapiclient.http.MediaUpload-class.html +++ /dev/null @@ -1,694 +0,0 @@ - - - - - googleapiclient.http.MediaUpload - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class MediaUpload - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaUpload

source code

-
-object --+
-         |
-        MediaUpload
-
- -
Known Subclasses:
-
- -
- -
-

Describes a media object to upload.

-

Base class that defines the interface of MediaUpload subclasses.

-

Note that subclasses of MediaUpload may allow you to control the - chunksize when uploading a media object. It is important to keep the size - of the chunk as large as possible to keep the upload efficient. Other - factors may influence the size of the chunk you use, particularly if you - are working in an environment where individual HTTP requests may have a - hardcoded time limit, such as under certain classes of requests under - Google App Engine.

-

Streams are io.Base compatible objects that support seek(). Some - MediaUpload subclasses support using streams directly to upload data. - Support for streaming may be indicated by a MediaUpload sub-class and if - appropriate for a platform that stream will be used for uploading the - media object. The support for streaming is indicated by has_stream() - returning True. The stream() method should return an io.Base object that - supports seek(). On platforms where the underlying httplib module - supports streaming, for example Python 2.6 and later, the stream will be - passed into the http library which will result in less memory being used - and possibly faster uploads.

-

If you need to upload media that can't be uploaded using any of the - existing MediaUpload sub-class then you can sub-class MediaUpload for - your particular needs.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
chunksize(self)
- Chunk size for resumable uploads.
- source code - -
- -
-   - - - - - - -
mimetype(self)
- Mime type of the body.
- source code - -
- -
-   - - - - - - -
size(self)
- Size of upload.
- source code - -
- -
-   - - - - - - -
resumable(self)
- Whether this upload is resumable.
- source code - -
- -
-   - - - - - - -
getbytes(self, - begin, - end)
- Get bytes from the media.
- source code - -
- -
-   - - - - - - -
has_stream(self)
- Does the underlying upload support a streaming interface.
- source code - -
- -
-   - - - - - - -
stream(self)
- A stream interface to the data being uploaded.
- source code - -
- -
-   - - - - - - -
_to_json(*args, - **kwargs)
- Utility function for creating a JSON representation of a MediaUpload.
- source code - -
- -
-   - - - - - - -
to_json(self)
- Create a JSON representation of an instance of MediaUpload.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __init__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Class Methods[hide private]
-
-   - - - - - - -
new_from_json(cls, - s)
- Utility class method to instantiate a MediaUpload subclass from a JSON -representation produced by to_json().
- source code - -
- -
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

chunksize(self) -

-
source code  -
- -
-Chunk size for resumable uploads.
-
-Returns:
-  Chunk size in bytes.
-
-
-
-
-
-
- -
- -
- - -
-

mimetype(self) -

-
source code  -
- -
-Mime type of the body.
-
-Returns:
-  Mime type.
-
-
-
-
-
-
- -
- -
- - -
-

size(self) -

-
source code  -
- -
-Size of upload.
-
-Returns:
-  Size of the body, or None of the size is unknown.
-
-
-
-
-
-
- -
- -
- - -
-

resumable(self) -

-
source code  -
- -
-Whether this upload is resumable.
-
-Returns:
-  True if resumable upload or False.
-
-
-
-
-
-
- -
- -
- - -
-

getbytes(self, - begin, - end) -

-
source code  -
- -
-Get bytes from the media.
-
-Args:
-  begin: int, offset from beginning of file.
-  length: int, number of bytes to read, starting at begin.
-
-Returns:
-  A string of bytes read. May be shorter than length if EOF was reached
-  first.
-
-
-
-
-
-
- -
- -
- - -
-

has_stream(self) -

-
source code  -
- -
-Does the underlying upload support a streaming interface.
-
-Streaming means it is an io.IOBase subclass that supports seek, i.e.
-seekable() returns True.
-
-Returns:
-  True if the call to stream() will return an instance of a seekable io.Base
-  subclass.
-
-
-
-
-
-
- -
- -
- - -
-

stream(self) -

-
source code  -
- -
-A stream interface to the data being uploaded.
-
-Returns:
-  The returned value is an io.IOBase subclass that supports seek, i.e.
-  seekable() returns True.
-
-
-
-
-
-
- -
- -
- - -
-

_to_json(*args, - **kwargs) -

-
source code  -
- -
-Utility function for creating a JSON representation of a MediaUpload.
-
-Args:
-  strip: array, An array of names of members to not include in the JSON.
-
-Returns:
-   string, a JSON representation of this instance, suitable to pass to
-   from_json().
-
-
-
-
Decorators:
-
    -
  • @util.positional(1)
  • -
-
-
-
- -
- -
- - -
-

to_json(self) -

-
source code  -
- -
-Create a JSON representation of an instance of MediaUpload.
-
-Returns:
-   string, a JSON representation of this instance, suitable to pass to
-   from_json().
-
-
-
-
-
-
- -
- -
- - -
-

new_from_json(cls, - s) -
Class Method -

-
source code  -
- -
-Utility class method to instantiate a MediaUpload subclass from a JSON
-representation produced by to_json().
-
-Args:
-  s: string, JSON from to_json().
-
-Returns:
-  An instance of the subclass of MediaUpload that was serialized with
-  to_json().
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.MediaUploadProgress-class.html b/docs/epy/googleapiclient.http.MediaUploadProgress-class.html deleted file mode 100644 index d9111e82f15..00000000000 --- a/docs/epy/googleapiclient.http.MediaUploadProgress-class.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - googleapiclient.http.MediaUploadProgress - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class MediaUploadProgress - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaUploadProgress

source code

-
-object --+
-         |
-        MediaUploadProgress
-
- -
-

Status of a resumable upload.

- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - resumable_progress, - total_size)
- Constructor.
- source code - -
- -
-   - - - - - - -
progress(self)
- Percent of upload completed, as a float.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - resumable_progress, - total_size) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  resumable_progress: int, bytes sent so far.
-  total_size: int, total bytes in complete upload, or None if the total
-    upload size isn't known ahead of time.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

progress(self) -

-
source code  -
- -
-Percent of upload completed, as a float.
-
-Returns:
-  the percentage complete as a float, returning 0.0 if the total size of
-  the upload is unknown.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http.RequestMockBuilder-class.html b/docs/epy/googleapiclient.http.RequestMockBuilder-class.html deleted file mode 100644 index 001c33cb526..00000000000 --- a/docs/epy/googleapiclient.http.RequestMockBuilder-class.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - googleapiclient.http.RequestMockBuilder - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class RequestMockBuilder - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class RequestMockBuilder

source code

-
-object --+
-         |
-        RequestMockBuilder
-
- -
-
-A simple mock of HttpRequest
-
-Pass in a dictionary to the constructor that maps request methodIds to
-tuples of (httplib2.Response, content, opt_expected_body) that should be
-returned when that method is called. None may also be passed in for the
-httplib2.Response, in which case a 200 OK response will be generated.
-If an opt_expected_body (str or dict) is provided, it will be compared to
-the body and UnexpectedBodyError will be raised on inequality.
-
-Example:
-  response = '{"data": {"id": "tag:google.c...'
-  requestBuilder = RequestMockBuilder(
-    {
-      'plus.activities.get': (None, response),
-    }
-  )
-  googleapiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder)
-
-Methods that you do not supply a response for will return a
-200 OK with an empty string as the response content or raise an excpetion
-if check_unexpected is set to True. The methodId is taken from the rpcName
-in the discovery document.
-
-For more details see the project wiki.
-
-
- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - responses, - check_unexpected=False)
- Constructor for RequestMockBuilder
- source code - -
- -
-   - - - - - - -
__call__(self, - http, - postproc, - uri, - method='GET', - body=None, - headers=None, - methodId=None, - resumable=None)
- Implements the callable interface that discovery.build() expects of - requestBuilder, which is to build an object compatible with - HttpRequest.execute().
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - responses, - check_unexpected=False) -
(Constructor) -

-
source code  -
- -
-Constructor for RequestMockBuilder
-
-The constructed object should be a callable object
-that can replace the class HttpResponse.
-
-responses - A dictionary that maps methodIds into tuples
-            of (httplib2.Response, content). The methodId
-            comes from the 'rpcName' field in the discovery
-            document.
-check_unexpected - A boolean setting whether or not UnexpectedMethodError
-                   should be raised on unsupplied method.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

__call__(self, - http, - postproc, - uri, - method='GET', - body=None, - headers=None, - methodId=None, - resumable=None) -
(Call operator) -

-
source code  -
- -

Implements the callable interface that discovery.build() expects of - requestBuilder, which is to build an object compatible with - HttpRequest.execute(). See that method for the description of the - parameters and the expected response.

-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.http._StreamSlice-class.html b/docs/epy/googleapiclient.http._StreamSlice-class.html deleted file mode 100644 index bef1a37383e..00000000000 --- a/docs/epy/googleapiclient.http._StreamSlice-class.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - googleapiclient.http._StreamSlice - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module http :: - Class _StreamSlice - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class _StreamSlice

source code

-
-object --+
-         |
-        _StreamSlice
-
- -
-

Truncated stream.

-

Takes a stream and presents a stream that is a slice of the original - stream. This is used when uploading media in chunks. In later versions of - Python a stream can be passed to httplib in place of the string of data - to send. The problem is that httplib just blindly reads to the end of the - stream. This wrapper presents a virtual stream that only reads to the end - of the chunk.

- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - stream, - begin, - chunksize)
- Constructor.
- source code - -
- -
-   - - - - - - -
read(self, - n=-1)
- Read n bytes.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - stream, - begin, - chunksize) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  stream: (io.Base, file object), the stream to wrap.
-  begin: int, the seek position the chunk begins at.
-  chunksize: int, the size of the chunk.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

read(self, - n=-1) -

-
source code  -
- -
-Read n bytes.
-
-Args:
-  n, int, the number of bytes to read.
-
-Returns:
-  A string of length 'n', or less if EOF is reached.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.mimeparse-module.html b/docs/epy/googleapiclient.mimeparse-module.html deleted file mode 100644 index a4b675177c9..00000000000 --- a/docs/epy/googleapiclient.mimeparse-module.html +++ /dev/null @@ -1,508 +0,0 @@ - - - - - googleapiclient.mimeparse - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module mimeparse - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module mimeparse

source code

-
-MIME-Type Parser
-
-This module provides basic functions for handling mime-types. It can handle
-matching mime-types against a list of media-ranges. See section 14.1 of the
-HTTP specification [RFC 2616] for a complete explanation.
-
-   http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
-
-Contents:
- - parse_mime_type():   Parses a mime-type into its component parts.
- - parse_media_range(): Media-ranges are mime-types with wild-cards and a 'q'
-                          quality parameter.
- - quality():           Determines the quality ('q') of a mime-type when
-                          compared against a list of media-ranges.
- - quality_parsed():    Just like quality() except the second parameter must be
-                          pre-parsed.
- - best_match():        Choose the mime-type with the highest quality ('q')
-                          from a list of candidates.
-
-
- -
-

Version: - 0.1.3 -

-

Author: - Joe Gregorio -

-

License: - MIT License -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
parse_mime_type(mime_type)
- Parses a mime-type into its component parts.
- source code - -
- -
-   - - - - - - -
parse_media_range(range)
- Parse a media-range into its component parts.
- source code - -
- -
-   - - - - - - -
fitness_and_quality_parsed(mime_type, - parsed_ranges)
- Find the best match for a mime-type amongst parsed media-ranges.
- source code - -
- -
-   - - - - - - -
quality_parsed(mime_type, - parsed_ranges)
- Find the best match for a mime-type amongst parsed media-ranges.
- source code - -
- -
-   - - - - - - -
quality(mime_type, - ranges)
- Return the quality ('q') of a mime-type against a list of - media-ranges.
- source code - -
- -
-   - - - - - - -
best_match(supported, - header)
- Return mime-type with the highest quality ('q') from list of - candidates.
- source code - -
- -
-   - - - - - - -
_filter_blank(i) - source code - -
- -
- - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - __email__ = 'joe@bitworking.org' -
-   - - __credits__ = '' -
-   - - __package__ = None -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

parse_mime_type(mime_type) -

-
source code  -
- -
-Parses a mime-type into its component parts.
-
-Carves up a mime-type and returns a tuple of the (type, subtype, params)
-where 'params' is a dictionary of all the parameters for the media range.
-For example, the media range 'application/xhtml;q=0.5' would get parsed
-into:
-
-   ('application', 'xhtml', {'q', '0.5'})
-   
-
-
-
-
-
-
- -
- -
- - -
-

parse_media_range(range) -

-
source code  -
- -
-Parse a media-range into its component parts.
-
-Carves up a media range and returns a tuple of the (type, subtype,
-params) where 'params' is a dictionary of all the parameters for the media
-range.  For example, the media range 'application/*;q=0.5' would get parsed
-into:
-
-   ('application', '*', {'q', '0.5'})
-
-In addition this function also guarantees that there is a value for 'q'
-in the params dictionary, filling it in with a proper default if
-necessary.
-
-
-
-
-
-
- -
- -
- - -
-

fitness_and_quality_parsed(mime_type, - parsed_ranges) -

-
source code  -
- -

Find the best match for a mime-type amongst parsed media-ranges.

-

Find the best match for a given mime-type against a list of - media_ranges that have already been parsed by parse_media_range(). - Returns a tuple of the fitness value and the value of the 'q' quality - parameter of the best match, or (-1, 0) if no match was found. Just as - for quality_parsed(), 'parsed_ranges' must be a list of parsed media - ranges.

-
-
-
-
- -
- -
- - -
-

quality_parsed(mime_type, - parsed_ranges) -

-
source code  -
- -

Find the best match for a mime-type amongst parsed media-ranges.

-

Find the best match for a given mime-type against a list of - media_ranges that have already been parsed by parse_media_range(). - Returns the 'q' quality parameter of the best match, 0 if no match was - found. This function bahaves the same as quality() except that - 'parsed_ranges' must be a list of parsed media ranges.

-
-
-
-
- -
- -
- - -
-

quality(mime_type, - ranges) -

-
source code  -
- -

Return the quality ('q') of a mime-type against a list of - media-ranges.

-

Returns the quality 'q' of a mime-type when compared against the - media-ranges in ranges. For example:

-
->>> quality('text/html','text/*;q=0.3, text/html;q=0.7,
-              text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5')
-0.7
-
-
-
-
- -
- -
- - -
-

best_match(supported, - header) -

-
source code  -
- -

Return mime-type with the highest quality ('q') from list of - candidates.

-

Takes a list of supported mime-types and finds the best match for all - the media-ranges listed in header. The value of header must be a string - that conforms to the format of the HTTP Accept: header. The value of - 'supported' is a list of mime-types. The list of supported mime-types - should be sorted in order of increasing desirability, in case of a - situation where there is a tie.

-
->>> best_match(['application/xbel+xml', 'text/xml'],
-               'text/*;q=0.5,*/*; q=0.1')
-'text/xml'
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.mimeparse-pysrc.html b/docs/epy/googleapiclient.mimeparse-pysrc.html deleted file mode 100644 index 15e66eb266f..00000000000 --- a/docs/epy/googleapiclient.mimeparse-pysrc.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - googleapiclient.mimeparse - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module mimeparse - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.mimeparse

-
-  1  # Copyright 2014 Joe Gregorio 
-  2  # 
-  3  # Licensed under the MIT License 
-  4   
-  5  """MIME-Type Parser 
-  6   
-  7  This module provides basic functions for handling mime-types. It can handle 
-  8  matching mime-types against a list of media-ranges. See section 14.1 of the 
-  9  HTTP specification [RFC 2616] for a complete explanation. 
- 10   
- 11     http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1 
- 12   
- 13  Contents: 
- 14   - parse_mime_type():   Parses a mime-type into its component parts. 
- 15   - parse_media_range(): Media-ranges are mime-types with wild-cards and a 'q' 
- 16                            quality parameter. 
- 17   - quality():           Determines the quality ('q') of a mime-type when 
- 18                            compared against a list of media-ranges. 
- 19   - quality_parsed():    Just like quality() except the second parameter must be 
- 20                            pre-parsed. 
- 21   - best_match():        Choose the mime-type with the highest quality ('q') 
- 22                            from a list of candidates. 
- 23  """ 
- 24  from __future__ import absolute_import 
- 25  from functools import reduce 
- 26  import six 
- 27   
- 28  __version__ = "0.1.3" 
- 29  __author__ = "Joe Gregorio" 
- 30  __email__ = "joe@bitworking.org" 
- 31  __license__ = "MIT License" 
- 32  __credits__ = "" 
- 33   
- 34   
-
35 -def parse_mime_type(mime_type): -
36 """Parses a mime-type into its component parts. - 37 - 38 Carves up a mime-type and returns a tuple of the (type, subtype, params) - 39 where 'params' is a dictionary of all the parameters for the media range. - 40 For example, the media range 'application/xhtml;q=0.5' would get parsed - 41 into: - 42 - 43 ('application', 'xhtml', {'q', '0.5'}) - 44 """ - 45 parts = mime_type.split(";") - 46 params = dict( - 47 [tuple([s.strip() for s in param.split("=", 1)]) for param in parts[1:]] - 48 ) - 49 full_type = parts[0].strip() - 50 # Java URLConnection class sends an Accept header that includes a - 51 # single '*'. Turn it into a legal wildcard. - 52 if full_type == "*": - 53 full_type = "*/*" - 54 (type, subtype) = full_type.split("/") - 55 - 56 return (type.strip(), subtype.strip(), params) -
57 - 58 -
59 -def parse_media_range(range): -
60 """Parse a media-range into its component parts. - 61 - 62 Carves up a media range and returns a tuple of the (type, subtype, - 63 params) where 'params' is a dictionary of all the parameters for the media - 64 range. For example, the media range 'application/*;q=0.5' would get parsed - 65 into: - 66 - 67 ('application', '*', {'q', '0.5'}) - 68 - 69 In addition this function also guarantees that there is a value for 'q' - 70 in the params dictionary, filling it in with a proper default if - 71 necessary. - 72 """ - 73 (type, subtype, params) = parse_mime_type(range) - 74 if ( - 75 "q" not in params - 76 or not params["q"] - 77 or not float(params["q"]) - 78 or float(params["q"]) > 1 - 79 or float(params["q"]) < 0 - 80 ): - 81 params["q"] = "1" - 82 - 83 return (type, subtype, params) -
84 - 85 -
86 -def fitness_and_quality_parsed(mime_type, parsed_ranges): -
87 """Find the best match for a mime-type amongst parsed media-ranges. - 88 - 89 Find the best match for a given mime-type against a list of media_ranges - 90 that have already been parsed by parse_media_range(). Returns a tuple of - 91 the fitness value and the value of the 'q' quality parameter of the best - 92 match, or (-1, 0) if no match was found. Just as for quality_parsed(), - 93 'parsed_ranges' must be a list of parsed media ranges. - 94 """ - 95 best_fitness = -1 - 96 best_fit_q = 0 - 97 (target_type, target_subtype, target_params) = parse_media_range(mime_type) - 98 for (type, subtype, params) in parsed_ranges: - 99 type_match = type == target_type or type == "*" or target_type == "*" -100 subtype_match = ( -101 subtype == target_subtype or subtype == "*" or target_subtype == "*" -102 ) -103 if type_match and subtype_match: -104 param_matches = reduce( -105 lambda x, y: x + y, -106 [ -107 1 -108 for (key, value) in six.iteritems(target_params) -109 if key != "q" and key in params and value == params[key] -110 ], -111 0, -112 ) -113 fitness = (type == target_type) and 100 or 0 -114 fitness += (subtype == target_subtype) and 10 or 0 -115 fitness += param_matches -116 if fitness > best_fitness: -117 best_fitness = fitness -118 best_fit_q = params["q"] -119 -120 return best_fitness, float(best_fit_q) -
121 -122 -
123 -def quality_parsed(mime_type, parsed_ranges): -
124 """Find the best match for a mime-type amongst parsed media-ranges. -125 -126 Find the best match for a given mime-type against a list of media_ranges -127 that have already been parsed by parse_media_range(). Returns the 'q' -128 quality parameter of the best match, 0 if no match was found. This function -129 bahaves the same as quality() except that 'parsed_ranges' must be a list of -130 parsed media ranges. -131 """ -132 -133 return fitness_and_quality_parsed(mime_type, parsed_ranges)[1] -
134 -135 -
136 -def quality(mime_type, ranges): -
137 """Return the quality ('q') of a mime-type against a list of media-ranges. -138 -139 Returns the quality 'q' of a mime-type when compared against the -140 media-ranges in ranges. For example: -141 -142 >>> quality('text/html','text/*;q=0.3, text/html;q=0.7, -143 text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5') -144 0.7 -145 -146 """ -147 parsed_ranges = [parse_media_range(r) for r in ranges.split(",")] -148 -149 return quality_parsed(mime_type, parsed_ranges) -
150 -151 -
152 -def best_match(supported, header): -
153 """Return mime-type with the highest quality ('q') from list of candidates. -154 -155 Takes a list of supported mime-types and finds the best match for all the -156 media-ranges listed in header. The value of header must be a string that -157 conforms to the format of the HTTP Accept: header. The value of 'supported' -158 is a list of mime-types. The list of supported mime-types should be sorted -159 in order of increasing desirability, in case of a situation where there is -160 a tie. -161 -162 >>> best_match(['application/xbel+xml', 'text/xml'], -163 'text/*;q=0.5,*/*; q=0.1') -164 'text/xml' -165 """ -166 split_header = _filter_blank(header.split(",")) -167 parsed_header = [parse_media_range(r) for r in split_header] -168 weighted_matches = [] -169 pos = 0 -170 for mime_type in supported: -171 weighted_matches.append( -172 (fitness_and_quality_parsed(mime_type, parsed_header), pos, mime_type) -173 ) -174 pos += 1 -175 weighted_matches.sort() -176 -177 return weighted_matches[-1][0][1] and weighted_matches[-1][2] or "" -
178 -179 -
180 -def _filter_blank(i): -
181 for s in i: -182 if s.strip(): -183 yield s -
184 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model-module.html b/docs/epy/googleapiclient.model-module.html deleted file mode 100644 index c1ab3850f73..00000000000 --- a/docs/epy/googleapiclient.model-module.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - googleapiclient.model - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module model

source code

-

Model objects for requests and responses.

-

Each API may support one or more serializations, such as JSON, Atom, - etc. The model classes are responsible for converting between the wire - format and the Python object representation.

- -
-

Author: - jcgregorio@google.com (Joe Gregorio) -

-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - Model
- Model base class. -
-   - - BaseModel
- Base model class. -
-   - - JsonModel
- Model class for JSON. -
-   - - RawModel
- Model class for requests that don't return JSON. -
-   - - MediaModel
- Model class for requests that return Media. -
-   - - ProtocolBufferModel
- Model class for protocol buffers. -
- - - - - - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
_abstract() - source code - -
- -
-   - - - - - - -
makepatch(original, - modified)
- Create a patch object.
- source code - -
- -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - _LIBRARY_VERSION = '1.10.0' -
-   - - _PY_VERSION = '2.7.18' -
-   - - LOGGER = logging.getLogger(__name__) -
-   - - dump_request_response = False -
-   - - __package__ = None -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

makepatch(original, - modified) -

-
source code  -
- -
-Create a patch object.
-
-Some methods support PATCH, an efficient way to send updates to a resource.
-This method allows the easy construction of patch bodies by looking at the
-differences between a resource before and after it was modified.
-
-Args:
-  original: object, the original deserialized resource
-  modified: object, the modified deserialized resource
-Returns:
-  An object that contains only the changes from original to modified, in a
-  form suitable to pass to a PATCH method.
-
-Example usage:
-  item = service.activities().get(postid=postid, userid=userid).execute()
-  original = copy.deepcopy(item)
-  item['object']['content'] = 'This is updated.'
-  service.activities.patch(postid=postid, userid=userid,
-    body=makepatch(original, item)).execute()
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model-pysrc.html b/docs/epy/googleapiclient.model-pysrc.html deleted file mode 100644 index e6ca29efdc9..00000000000 --- a/docs/epy/googleapiclient.model-pysrc.html +++ /dev/null @@ -1,675 +0,0 @@ - - - - - googleapiclient.model - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.model

-
-  1  # Copyright 2014 Google Inc. All Rights Reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """Model objects for requests and responses. 
- 16   
- 17  Each API may support one or more serializations, such 
- 18  as JSON, Atom, etc. The model classes are responsible 
- 19  for converting between the wire format and the Python 
- 20  object representation. 
- 21  """ 
- 22  from __future__ import absolute_import 
- 23  import six 
- 24   
- 25  __author__ = "jcgregorio@google.com (Joe Gregorio)" 
- 26   
- 27  import json 
- 28  import logging 
- 29  import platform 
- 30  import pkg_resources 
- 31   
- 32  from six.moves.urllib.parse import urlencode 
- 33   
- 34  from googleapiclient.errors import HttpError 
- 35   
- 36  _LIBRARY_VERSION = pkg_resources.get_distribution("google-api-python-client").version 
- 37  _PY_VERSION = platform.python_version() 
- 38   
- 39  LOGGER = logging.getLogger(__name__) 
- 40   
- 41  dump_request_response = False 
-
42 - 43 - 44 -def _abstract(): -
45 raise NotImplementedError("You need to override this function") -
46 -
47 - 48 -class Model(object): -
49 """Model base class. - 50 - 51 All Model classes should implement this interface. - 52 The Model serializes and de-serializes between a wire - 53 format such as JSON and a Python object representation. - 54 """ - 55 -
56 - def request(self, headers, path_params, query_params, body_value): -
57 """Updates outgoing requests with a serialized body. - 58 - 59 Args: - 60 headers: dict, request headers - 61 path_params: dict, parameters that appear in the request path - 62 query_params: dict, parameters that appear in the query - 63 body_value: object, the request body as a Python object, which must be - 64 serializable. - 65 Returns: - 66 A tuple of (headers, path_params, query, body) - 67 - 68 headers: dict, request headers - 69 path_params: dict, parameters that appear in the request path - 70 query: string, query part of the request URI - 71 body: string, the body serialized in the desired wire format. - 72 """ - 73 _abstract() -
74 -
75 - def response(self, resp, content): -
76 """Convert the response wire format into a Python object. - 77 - 78 Args: - 79 resp: httplib2.Response, the HTTP response headers and status - 80 content: string, the body of the HTTP response - 81 - 82 Returns: - 83 The body de-serialized as a Python object. - 84 - 85 Raises: - 86 googleapiclient.errors.HttpError if a non 2xx response is received. - 87 """ - 88 _abstract() -
89 -
90 - 91 -class BaseModel(Model): -
92 """Base model class. - 93 - 94 Subclasses should provide implementations for the "serialize" and - 95 "deserialize" methods, as well as values for the following class attributes. - 96 - 97 Attributes: - 98 accept: The value to use for the HTTP Accept header. - 99 content_type: The value to use for the HTTP Content-type header. -100 no_content_response: The value to return when deserializing a 204 "No -101 Content" response. -102 alt_param: The value to supply as the "alt" query parameter for requests. -103 """ -104 -105 accept = None -106 content_type = None -107 no_content_response = None -108 alt_param = None -109 -
110 - def _log_request(self, headers, path_params, query, body): -
111 """Logs debugging information about the request if requested.""" -112 if dump_request_response: -113 LOGGER.info("--request-start--") -114 LOGGER.info("-headers-start-") -115 for h, v in six.iteritems(headers): -116 LOGGER.info("%s: %s", h, v) -117 LOGGER.info("-headers-end-") -118 LOGGER.info("-path-parameters-start-") -119 for h, v in six.iteritems(path_params): -120 LOGGER.info("%s: %s", h, v) -121 LOGGER.info("-path-parameters-end-") -122 LOGGER.info("body: %s", body) -123 LOGGER.info("query: %s", query) -124 LOGGER.info("--request-end--") -
125 -
126 - def request(self, headers, path_params, query_params, body_value): -
127 """Updates outgoing requests with a serialized body. -128 -129 Args: -130 headers: dict, request headers -131 path_params: dict, parameters that appear in the request path -132 query_params: dict, parameters that appear in the query -133 body_value: object, the request body as a Python object, which must be -134 serializable by json. -135 Returns: -136 A tuple of (headers, path_params, query, body) -137 -138 headers: dict, request headers -139 path_params: dict, parameters that appear in the request path -140 query: string, query part of the request URI -141 body: string, the body serialized as JSON -142 """ -143 query = self._build_query(query_params) -144 headers["accept"] = self.accept -145 headers["accept-encoding"] = "gzip, deflate" -146 if "user-agent" in headers: -147 headers["user-agent"] += " " -148 else: -149 headers["user-agent"] = "" -150 headers["user-agent"] += "(gzip)" -151 if "x-goog-api-client" in headers: -152 headers["x-goog-api-client"] += " " -153 else: -154 headers["x-goog-api-client"] = "" -155 headers["x-goog-api-client"] += "gdcl/%s gl-python/%s" % ( -156 _LIBRARY_VERSION, -157 _PY_VERSION, -158 ) -159 -160 if body_value is not None: -161 headers["content-type"] = self.content_type -162 body_value = self.serialize(body_value) -163 self._log_request(headers, path_params, query, body_value) -164 return (headers, path_params, query, body_value) -
165 -
166 - def _build_query(self, params): -
167 """Builds a query string. -168 -169 Args: -170 params: dict, the query parameters -171 -172 Returns: -173 The query parameters properly encoded into an HTTP URI query string. -174 """ -175 if self.alt_param is not None: -176 params.update({"alt": self.alt_param}) -177 astuples = [] -178 for key, value in six.iteritems(params): -179 if type(value) == type([]): -180 for x in value: -181 x = x.encode("utf-8") -182 astuples.append((key, x)) -183 else: -184 if isinstance(value, six.text_type) and callable(value.encode): -185 value = value.encode("utf-8") -186 astuples.append((key, value)) -187 return "?" + urlencode(astuples) -
188 -
189 - def _log_response(self, resp, content): -
190 """Logs debugging information about the response if requested.""" -191 if dump_request_response: -192 LOGGER.info("--response-start--") -193 for h, v in six.iteritems(resp): -194 LOGGER.info("%s: %s", h, v) -195 if content: -196 LOGGER.info(content) -197 LOGGER.info("--response-end--") -
198 -
199 - def response(self, resp, content): -
200 """Convert the response wire format into a Python object. -201 -202 Args: -203 resp: httplib2.Response, the HTTP response headers and status -204 content: string, the body of the HTTP response -205 -206 Returns: -207 The body de-serialized as a Python object. -208 -209 Raises: -210 googleapiclient.errors.HttpError if a non 2xx response is received. -211 """ -212 self._log_response(resp, content) -213 # Error handling is TBD, for example, do we retry -214 # for some operation/error combinations? -215 if resp.status < 300: -216 if resp.status == 204: -217 # A 204: No Content response should be treated differently -218 # to all the other success states -219 return self.no_content_response -220 return self.deserialize(content) -221 else: -222 LOGGER.debug("Content from bad request was: %r" % content) -223 raise HttpError(resp, content) -
224 -
225 - def serialize(self, body_value): -
226 """Perform the actual Python object serialization. -227 -228 Args: -229 body_value: object, the request body as a Python object. -230 -231 Returns: -232 string, the body in serialized form. -233 """ -234 _abstract() -
235 -
236 - def deserialize(self, content): -
237 """Perform the actual deserialization from response string to Python -238 object. -239 -240 Args: -241 content: string, the body of the HTTP response -242 -243 Returns: -244 The body de-serialized as a Python object. -245 """ -246 _abstract() -
247 -
248 -249 -class JsonModel(BaseModel): -
250 """Model class for JSON. -251 -252 Serializes and de-serializes between JSON and the Python -253 object representation of HTTP request and response bodies. -254 """ -255 -256 accept = "application/json" -257 content_type = "application/json" -258 alt_param = "json" -259 -
260 - def __init__(self, data_wrapper=False): -
261 """Construct a JsonModel. -262 -263 Args: -264 data_wrapper: boolean, wrap requests and responses in a data wrapper -265 """ -266 self._data_wrapper = data_wrapper -
267 -
268 - def serialize(self, body_value): -
269 if ( -270 isinstance(body_value, dict) -271 and "data" not in body_value -272 and self._data_wrapper -273 ): -274 body_value = {"data": body_value} -275 return json.dumps(body_value) -
276 -
277 - def deserialize(self, content): -
278 try: -279 content = content.decode("utf-8") -280 except AttributeError: -281 pass -282 body = json.loads(content) -283 if self._data_wrapper and isinstance(body, dict) and "data" in body: -284 body = body["data"] -285 return body -
286 -287 @property -
288 - def no_content_response(self): -
289 return {} -
290 -
291 -292 -class RawModel(JsonModel): -
293 """Model class for requests that don't return JSON. -294 -295 Serializes and de-serializes between JSON and the Python -296 object representation of HTTP request, and returns the raw bytes -297 of the response body. -298 """ -299 -300 accept = "*/*" -301 content_type = "application/json" -302 alt_param = None -303 -
304 - def deserialize(self, content): -
305 return content -
306 -307 @property -
308 - def no_content_response(self): -
309 return "" -
310 -
311 -312 -class MediaModel(JsonModel): -
313 """Model class for requests that return Media. -314 -315 Serializes and de-serializes between JSON and the Python -316 object representation of HTTP request, and returns the raw bytes -317 of the response body. -318 """ -319 -320 accept = "*/*" -321 content_type = "application/json" -322 alt_param = "media" -323 -
324 - def deserialize(self, content): -
325 return content -
326 -327 @property -
328 - def no_content_response(self): -
329 return "" -
330 -
331 -332 -class ProtocolBufferModel(BaseModel): -
333 """Model class for protocol buffers. -334 -335 Serializes and de-serializes the binary protocol buffer sent in the HTTP -336 request and response bodies. -337 """ -338 -339 accept = "application/x-protobuf" -340 content_type = "application/x-protobuf" -341 alt_param = "proto" -342 -
343 - def __init__(self, protocol_buffer): -
344 """Constructs a ProtocolBufferModel. -345 -346 The serialized protocol buffer returned in an HTTP response will be -347 de-serialized using the given protocol buffer class. -348 -349 Args: -350 protocol_buffer: The protocol buffer class used to de-serialize a -351 response from the API. -352 """ -353 self._protocol_buffer = protocol_buffer -
354 -
355 - def serialize(self, body_value): -
356 return body_value.SerializeToString() -
357 -
358 - def deserialize(self, content): -
359 return self._protocol_buffer.FromString(content) -
360 -361 @property -
362 - def no_content_response(self): -
363 return self._protocol_buffer() -
364 -
365 -366 -def makepatch(original, modified): -
367 """Create a patch object. -368 -369 Some methods support PATCH, an efficient way to send updates to a resource. -370 This method allows the easy construction of patch bodies by looking at the -371 differences between a resource before and after it was modified. -372 -373 Args: -374 original: object, the original deserialized resource -375 modified: object, the modified deserialized resource -376 Returns: -377 An object that contains only the changes from original to modified, in a -378 form suitable to pass to a PATCH method. -379 -380 Example usage: -381 item = service.activities().get(postid=postid, userid=userid).execute() -382 original = copy.deepcopy(item) -383 item['object']['content'] = 'This is updated.' -384 service.activities.patch(postid=postid, userid=userid, -385 body=makepatch(original, item)).execute() -386 """ -387 patch = {} -388 for key, original_value in six.iteritems(original): -389 modified_value = modified.get(key, None) -390 if modified_value is None: -391 # Use None to signal that the element is deleted -392 patch[key] = None -393 elif original_value != modified_value: -394 if type(original_value) == type({}): -395 # Recursively descend objects -396 patch[key] = makepatch(original_value, modified_value) -397 else: -398 # In the case of simple types or arrays we just replace -399 patch[key] = modified_value -400 else: -401 # Don't add anything to patch if there's no change -402 pass -403 for key in modified: -404 if key not in original: -405 patch[key] = modified[key] -406 -407 return patch -
408 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model.BaseModel-class.html b/docs/epy/googleapiclient.model.BaseModel-class.html deleted file mode 100644 index e06fde60409..00000000000 --- a/docs/epy/googleapiclient.model.BaseModel-class.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - - googleapiclient.model.BaseModel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model :: - Class BaseModel - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class BaseModel

source code

-
-object --+    
-         |    
-     Model --+
-             |
-            BaseModel
-
- -
Known Subclasses:
-
- -
- -
-
-Base model class.
-
-Subclasses should provide implementations for the "serialize" and
-"deserialize" methods, as well as values for the following class attributes.
-
-Attributes:
-  accept: The value to use for the HTTP Accept header.
-  content_type: The value to use for the HTTP Content-type header.
-  no_content_response: The value to return when deserializing a 204 "No
-      Content" response.
-  alt_param: The value to supply as the "alt" query parameter for requests.
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
_log_request(self, - headers, - path_params, - query, - body)
- Logs debugging information about the request if requested.
- source code - -
- -
-   - - - - - - -
request(self, - headers, - path_params, - query_params, - body_value)
- Updates outgoing requests with a serialized body.
- source code - -
- -
-   - - - - - - -
_build_query(self, - params)
- Builds a query string.
- source code - -
- -
-   - - - - - - -
_log_response(self, - resp, - content)
- Logs debugging information about the response if requested.
- source code - -
- -
-   - - - - - - -
response(self, - resp, - content)
- Convert the response wire format into a Python object.
- source code - -
- -
-   - - - - - - -
serialize(self, - body_value)
- Perform the actual Python object serialization.
- source code - -
- -
-   - - - - - - -
deserialize(self, - content)
- Perform the actual deserialization from response string to Python -object.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __init__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - - - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-   - - accept = None -
-   - - content_type = None -
-   - - no_content_response = None -
-   - - alt_param = None -
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

request(self, - headers, - path_params, - query_params, - body_value) -

-
source code  -
- -
-Updates outgoing requests with a serialized body.
-
-Args:
-  headers: dict, request headers
-  path_params: dict, parameters that appear in the request path
-  query_params: dict, parameters that appear in the query
-  body_value: object, the request body as a Python object, which must be
-              serializable by json.
-Returns:
-  A tuple of (headers, path_params, query, body)
-
-  headers: dict, request headers
-  path_params: dict, parameters that appear in the request path
-  query: string, query part of the request URI
-  body: string, the body serialized as JSON
-
-
-
-
Overrides: - Model.request -
-
-
-
- -
- -
- - -
-

_build_query(self, - params) -

-
source code  -
- -
-Builds a query string.
-
-Args:
-  params: dict, the query parameters
-
-Returns:
-  The query parameters properly encoded into an HTTP URI query string.
-
-
-
-
-
-
- -
- -
- - -
-

response(self, - resp, - content) -

-
source code  -
- -
-Convert the response wire format into a Python object.
-
-Args:
-  resp: httplib2.Response, the HTTP response headers and status
-  content: string, the body of the HTTP response
-
-Returns:
-  The body de-serialized as a Python object.
-
-Raises:
-  googleapiclient.errors.HttpError if a non 2xx response is received.
-
-
-
-
Overrides: - Model.response -
-
-
-
- -
- -
- - -
-

serialize(self, - body_value) -

-
source code  -
- -
-Perform the actual Python object serialization.
-
-Args:
-  body_value: object, the request body as a Python object.
-
-Returns:
-  string, the body in serialized form.
-
-
-
-
-
-
- -
- -
- - -
-

deserialize(self, - content) -

-
source code  -
- -
-Perform the actual deserialization from response string to Python
-object.
-
-Args:
-  content: string, the body of the HTTP response
-
-Returns:
-  The body de-serialized as a Python object.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model.JsonModel-class.html b/docs/epy/googleapiclient.model.JsonModel-class.html deleted file mode 100644 index 75688f74604..00000000000 --- a/docs/epy/googleapiclient.model.JsonModel-class.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - googleapiclient.model.JsonModel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model :: - Class JsonModel - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class JsonModel

source code

-
-object --+        
-         |        
-     Model --+    
-             |    
-     BaseModel --+
-                 |
-                JsonModel
-
- -
Known Subclasses:
-
- -
- -
-

Model class for JSON.

-

Serializes and de-serializes between JSON and the Python object - representation of HTTP request and response bodies.

- - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - data_wrapper=False)
- Construct a JsonModel.
- source code - -
- -
-   - - - - - - -
serialize(self, - body_value)
- Perform the actual Python object serialization.
- source code - -
- -
-   - - - - - - -
deserialize(self, - content)
- Perform the actual deserialization from response string to Python -object.
- source code - -
- -
-

Inherited from BaseModel: - request, - response -

-

Inherited from BaseModel (private): - _build_query, - _log_request, - _log_response -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-   - - accept = 'application/json' -
-   - - content_type = 'application/json' -
-   - - alt_param = 'json' -
- - - - - - - - - - - - -
- - - - - -
Properties[hide private]
-
-   - - no_content_response -
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - data_wrapper=False) -
(Constructor) -

-
source code  -
- -
-Construct a JsonModel.
-
-Args:
-  data_wrapper: boolean, wrap requests and responses in a data wrapper
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

serialize(self, - body_value) -

-
source code  -
- -
-Perform the actual Python object serialization.
-
-Args:
-  body_value: object, the request body as a Python object.
-
-Returns:
-  string, the body in serialized form.
-
-
-
-
Overrides: - BaseModel.serialize -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

deserialize(self, - content) -

-
source code  -
- -
-Perform the actual deserialization from response string to Python
-object.
-
-Args:
-  content: string, the body of the HTTP response
-
-Returns:
-  The body de-serialized as a Python object.
-
-
-
-
Overrides: - BaseModel.deserialize -
(inherited documentation)
- -
-
-
-
- - - - - - -
- - - - - -
Property Details[hide private]
-
- -
- -
-

no_content_response

- -
-
Get Method:
-
unreachable.no_content_response(self) -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model.MediaModel-class.html b/docs/epy/googleapiclient.model.MediaModel-class.html deleted file mode 100644 index e31449b280a..00000000000 --- a/docs/epy/googleapiclient.model.MediaModel-class.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - googleapiclient.model.MediaModel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model :: - Class MediaModel - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class MediaModel

source code

-
-object --+            
-         |            
-     Model --+        
-             |        
-     BaseModel --+    
-                 |    
-         JsonModel --+
-                     |
-                    MediaModel
-
- -
-

Model class for requests that return Media.

-

Serializes and de-serializes between JSON and the Python object - representation of HTTP request, and returns the raw bytes of the response - body.

- - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
deserialize(self, - content)
- Perform the actual deserialization from response string to Python -object.
- source code - -
- -
-

Inherited from JsonModel: - __init__, - serialize -

-

Inherited from BaseModel: - request, - response -

-

Inherited from BaseModel (private): - _build_query, - _log_request, - _log_response -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-   - - accept = '*/*' -
-   - - content_type = "application/json" -
-   - - alt_param = 'media' -
- - - - - - - - - - - - -
- - - - - -
Properties[hide private]
-
-   - - no_content_response -
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

deserialize(self, - content) -

-
source code  -
- -
-Perform the actual deserialization from response string to Python
-object.
-
-Args:
-  content: string, the body of the HTTP response
-
-Returns:
-  The body de-serialized as a Python object.
-
-
-
-
Overrides: - BaseModel.deserialize -
(inherited documentation)
- -
-
-
-
- - - - - - -
- - - - - -
Property Details[hide private]
-
- -
- -
-

no_content_response

- -
-
Get Method:
-
unreachable.no_content_response(self) -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model.Model-class.html b/docs/epy/googleapiclient.model.Model-class.html deleted file mode 100644 index 26a8f3bffcb..00000000000 --- a/docs/epy/googleapiclient.model.Model-class.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - googleapiclient.model.Model - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model :: - Class Model - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Model

source code

-
-object --+
-         |
-        Model
-
- -
Known Subclasses:
-
- -
- -
-

Model base class.

-

All Model classes should implement this interface. The Model - serializes and de-serializes between a wire format such as JSON and a - Python object representation.

- - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
request(self, - headers, - path_params, - query_params, - body_value)
- Updates outgoing requests with a serialized body.
- source code - -
- -
-   - - - - - - -
response(self, - resp, - content)
- Convert the response wire format into a Python object.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __init__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

request(self, - headers, - path_params, - query_params, - body_value) -

-
source code  -
- -
-Updates outgoing requests with a serialized body.
-
-Args:
-  headers: dict, request headers
-  path_params: dict, parameters that appear in the request path
-  query_params: dict, parameters that appear in the query
-  body_value: object, the request body as a Python object, which must be
-              serializable.
-Returns:
-  A tuple of (headers, path_params, query, body)
-
-  headers: dict, request headers
-  path_params: dict, parameters that appear in the request path
-  query: string, query part of the request URI
-  body: string, the body serialized in the desired wire format.
-
-
-
-
-
-
- -
- -
- - -
-

response(self, - resp, - content) -

-
source code  -
- -
-Convert the response wire format into a Python object.
-
-Args:
-  resp: httplib2.Response, the HTTP response headers and status
-  content: string, the body of the HTTP response
-
-Returns:
-  The body de-serialized as a Python object.
-
-Raises:
-  googleapiclient.errors.HttpError if a non 2xx response is received.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model.ProtocolBufferModel-class.html b/docs/epy/googleapiclient.model.ProtocolBufferModel-class.html deleted file mode 100644 index 85ce4d0b957..00000000000 --- a/docs/epy/googleapiclient.model.ProtocolBufferModel-class.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - googleapiclient.model.ProtocolBufferModel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model :: - Class ProtocolBufferModel - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class ProtocolBufferModel

source code

-
-object --+        
-         |        
-     Model --+    
-             |    
-     BaseModel --+
-                 |
-                ProtocolBufferModel
-
- -
-

Model class for protocol buffers.

-

Serializes and de-serializes the binary protocol buffer sent in the - HTTP request and response bodies.

- - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - protocol_buffer)
- Constructs a ProtocolBufferModel.
- source code - -
- -
-   - - - - - - -
serialize(self, - body_value)
- Perform the actual Python object serialization.
- source code - -
- -
-   - - - - - - -
deserialize(self, - content)
- Perform the actual deserialization from response string to Python -object.
- source code - -
- -
-

Inherited from BaseModel: - request, - response -

-

Inherited from BaseModel (private): - _build_query, - _log_request, - _log_response -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-   - - accept = 'application/x-protobuf' -
-   - - content_type = 'application/x-protobuf' -
-   - - alt_param = 'proto' -
- - - - - - - - - - - - -
- - - - - -
Properties[hide private]
-
-   - - no_content_response -
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - protocol_buffer) -
(Constructor) -

-
source code  -
- -
-Constructs a ProtocolBufferModel.
-
-The serialized protocol buffer returned in an HTTP response will be
-de-serialized using the given protocol buffer class.
-
-Args:
-  protocol_buffer: The protocol buffer class used to de-serialize a
-  response from the API.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

serialize(self, - body_value) -

-
source code  -
- -
-Perform the actual Python object serialization.
-
-Args:
-  body_value: object, the request body as a Python object.
-
-Returns:
-  string, the body in serialized form.
-
-
-
-
Overrides: - BaseModel.serialize -
(inherited documentation)
- -
-
-
- -
- -
- - -
-

deserialize(self, - content) -

-
source code  -
- -
-Perform the actual deserialization from response string to Python
-object.
-
-Args:
-  content: string, the body of the HTTP response
-
-Returns:
-  The body de-serialized as a Python object.
-
-
-
-
Overrides: - BaseModel.deserialize -
(inherited documentation)
- -
-
-
-
- - - - - - -
- - - - - -
Property Details[hide private]
-
- -
- -
-

no_content_response

- -
-
Get Method:
-
unreachable.no_content_response(self) -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.model.RawModel-class.html b/docs/epy/googleapiclient.model.RawModel-class.html deleted file mode 100644 index 7b662798cc0..00000000000 --- a/docs/epy/googleapiclient.model.RawModel-class.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - googleapiclient.model.RawModel - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module model :: - Class RawModel - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class RawModel

source code

-
-object --+            
-         |            
-     Model --+        
-             |        
-     BaseModel --+    
-                 |    
-         JsonModel --+
-                     |
-                    RawModel
-
- -
-

Model class for requests that don't return JSON.

-

Serializes and de-serializes between JSON and the Python object - representation of HTTP request, and returns the raw bytes of the response - body.

- - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
deserialize(self, - content)
- Perform the actual deserialization from response string to Python -object.
- source code - -
- -
-

Inherited from JsonModel: - __init__, - serialize -

-

Inherited from BaseModel: - request, - response -

-

Inherited from BaseModel (private): - _build_query, - _log_request, - _log_response -

-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - - - - - - - -
- - - - - -
Class Variables[hide private]
-
-   - - accept = '*/*' -
-   - - content_type = "application/json" -
-   - - alt_param = None -
- - - - - - - - - - - - -
- - - - - -
Properties[hide private]
-
-   - - no_content_response -
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

deserialize(self, - content) -

-
source code  -
- -
-Perform the actual deserialization from response string to Python
-object.
-
-Args:
-  content: string, the body of the HTTP response
-
-Returns:
-  The body de-serialized as a Python object.
-
-
-
-
Overrides: - BaseModel.deserialize -
(inherited documentation)
- -
-
-
-
- - - - - - -
- - - - - -
Property Details[hide private]
-
- -
- -
-

no_content_response

- -
-
Get Method:
-
unreachable.no_content_response(self) -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.sample_tools-module.html b/docs/epy/googleapiclient.sample_tools-module.html deleted file mode 100644 index 042bbb63293..00000000000 --- a/docs/epy/googleapiclient.sample_tools-module.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - googleapiclient.sample_tools - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module sample_tools - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module sample_tools

source code

-

Utilities for making samples.

-

Consolidates a lot of code commonly repeated in sample - applications.

- -
-

Author: - jcgregorio@google.com (Joe Gregorio) -

-
- - - - - - - - -
- - - - - -
Functions[hide private]
-
-   - - - - - - -
init(argv, - name, - version, - doc, - filename, - scope=None, - parents=[], - discovery_filename=None)
- A common initialization routine for samples.
- source code - -
- -
- - - - - - -
- - - - - -
Function Details[hide private]
-
- -
- -
- - -
-

init(argv, - name, - version, - doc, - filename, - scope=None, - parents=[], - discovery_filename=None) -

-
source code  -
- -
-A common initialization routine for samples.
-
-Many of the sample applications do the same initialization, which has now
-been consolidated into this function. This function uses common idioms found
-in almost all the samples, i.e. for an API with name 'apiname', the
-credentials are stored in a file named apiname.dat, and the
-client_secrets.json file is stored in the same directory as the application
-main file.
-
-Args:
-  argv: list of string, the command-line parameters of the application.
-  name: string, name of the API.
-  version: string, version of the API.
-  doc: string, description of the application. Usually set to __doc__.
-  file: string, filename of the application. Usually set to __file__.
-  parents: list of argparse.ArgumentParser, additional command-line flags.
-  scope: string, The OAuth scope used.
-  discovery_filename: string, name of local discovery file (JSON). Use when discovery doc not available via URL.
-
-Returns:
-  A tuple of (service, flags), where service is the service object and flags
-  is the parsed command-line flags.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.sample_tools-pysrc.html b/docs/epy/googleapiclient.sample_tools-pysrc.html deleted file mode 100644 index dc722c2dace..00000000000 --- a/docs/epy/googleapiclient.sample_tools-pysrc.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - googleapiclient.sample_tools - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module sample_tools - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.sample_tools

-
-  1  # Copyright 2014 Google Inc. All Rights Reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """Utilities for making samples. 
- 16   
- 17  Consolidates a lot of code commonly repeated in sample applications. 
- 18  """ 
- 19  from __future__ import absolute_import 
- 20   
- 21  __author__ = "jcgregorio@google.com (Joe Gregorio)" 
- 22  __all__ = ["init"] 
- 23   
- 24   
- 25  import argparse 
- 26  import os 
- 27   
- 28  from googleapiclient import discovery 
- 29  from googleapiclient.http import build_http 
- 30   
- 31   
-
32 -def init( - 33 argv, name, version, doc, filename, scope=None, parents=[], discovery_filename=None - 34 ): -
35 """A common initialization routine for samples. - 36 - 37 Many of the sample applications do the same initialization, which has now - 38 been consolidated into this function. This function uses common idioms found - 39 in almost all the samples, i.e. for an API with name 'apiname', the - 40 credentials are stored in a file named apiname.dat, and the - 41 client_secrets.json file is stored in the same directory as the application - 42 main file. - 43 - 44 Args: - 45 argv: list of string, the command-line parameters of the application. - 46 name: string, name of the API. - 47 version: string, version of the API. - 48 doc: string, description of the application. Usually set to __doc__. - 49 file: string, filename of the application. Usually set to __file__. - 50 parents: list of argparse.ArgumentParser, additional command-line flags. - 51 scope: string, The OAuth scope used. - 52 discovery_filename: string, name of local discovery file (JSON). Use when discovery doc not available via URL. - 53 - 54 Returns: - 55 A tuple of (service, flags), where service is the service object and flags - 56 is the parsed command-line flags. - 57 """ - 58 try: - 59 from oauth2client import client - 60 from oauth2client import file - 61 from oauth2client import tools - 62 except ImportError: - 63 raise ImportError( - 64 "googleapiclient.sample_tools requires oauth2client. Please install oauth2client and try again." - 65 ) - 66 - 67 if scope is None: - 68 scope = "https://www.googleapis.com/auth/" + name - 69 - 70 # Parser command-line arguments. - 71 parent_parsers = [tools.argparser] - 72 parent_parsers.extend(parents) - 73 parser = argparse.ArgumentParser( - 74 description=doc, - 75 formatter_class=argparse.RawDescriptionHelpFormatter, - 76 parents=parent_parsers, - 77 ) - 78 flags = parser.parse_args(argv[1:]) - 79 - 80 # Name of a file containing the OAuth 2.0 information for this - 81 # application, including client_id and client_secret, which are found - 82 # on the API Access tab on the Google APIs - 83 # Console <http://code.google.com/apis/console>. - 84 client_secrets = os.path.join(os.path.dirname(filename), "client_secrets.json") - 85 - 86 # Set up a Flow object to be used if we need to authenticate. - 87 flow = client.flow_from_clientsecrets( - 88 client_secrets, scope=scope, message=tools.message_if_missing(client_secrets) - 89 ) - 90 - 91 # Prepare credentials, and authorize HTTP object with them. - 92 # If the credentials don't exist or are invalid run through the native client - 93 # flow. The Storage object will ensure that if successful the good - 94 # credentials will get written back to a file. - 95 storage = file.Storage(name + ".dat") - 96 credentials = storage.get() - 97 if credentials is None or credentials.invalid: - 98 credentials = tools.run_flow(flow, storage, flags) - 99 http = credentials.authorize(http=build_http()) -100 -101 if discovery_filename is None: -102 # Construct a service object via the discovery service. -103 service = discovery.build(name, version, http=http) -104 else: -105 # Construct a service object using a local discovery document file. -106 with open(discovery_filename) as discovery_file: -107 service = discovery.build_from_document( -108 discovery_file.read(), base="https://www.googleapis.com/", http=http -109 ) -110 return (service, flags) -
111 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.schema-module.html b/docs/epy/googleapiclient.schema-module.html deleted file mode 100644 index d80380b3987..00000000000 --- a/docs/epy/googleapiclient.schema-module.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - googleapiclient.schema - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module schema - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Module schema

source code

-
-Schema processing for discovery based APIs
-
-Schemas holds an APIs discovery schemas. It can return those schema as
-deserialized JSON objects, or pretty print them as prototype objects that
-conform to the schema.
-
-For example, given the schema:
-
- schema = """{
-   "Foo": {
-    "type": "object",
-    "properties": {
-     "etag": {
-      "type": "string",
-      "description": "ETag of the collection."
-     },
-     "kind": {
-      "type": "string",
-      "description": "Type of the collection ('calendar#acl').",
-      "default": "calendar#acl"
-     },
-     "nextPageToken": {
-      "type": "string",
-      "description": "Token used to access the next
-         page of this result. Omitted if no further results are available."
-     }
-    }
-   }
- }"""
-
- s = Schemas(schema)
- print s.prettyPrintByName('Foo')
-
- Produces the following output:
-
-  {
-   "nextPageToken": "A String", # Token used to access the
-       # next page of this result. Omitted if no further results are available.
-   "kind": "A String", # Type of the collection ('calendar#acl').
-   "etag": "A String", # ETag of the collection.
-  },
-
-The constructor takes a discovery document in which to look up named schema.
-
-
- -
-

Author: - jcgregorio@google.com (Joe Gregorio) -

-
- - - - - - - - - - - -
- - - - - -
Classes[hide private]
-
-   - - Schemas
- Schemas for an API. -
-   - - _SchemaToStruct
- Convert schema to a prototype object. -
- - - - - - - - - -
- - - - - -
Variables[hide private]
-
-   - - __package__ = None -
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.schema-pysrc.html b/docs/epy/googleapiclient.schema-pysrc.html deleted file mode 100644 index c9c1c49c6bd..00000000000 --- a/docs/epy/googleapiclient.schema-pysrc.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - - googleapiclient.schema - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module schema - - - - - - -
[hide private]
[frames] | no frames]
-
-

Source Code for Module googleapiclient.schema

-
-  1  # Copyright 2014 Google Inc. All Rights Reserved. 
-  2  # 
-  3  # Licensed under the Apache License, Version 2.0 (the "License"); 
-  4  # you may not use this file except in compliance with the License. 
-  5  # You may obtain a copy of the License at 
-  6  # 
-  7  #      http://www.apache.org/licenses/LICENSE-2.0 
-  8  # 
-  9  # Unless required by applicable law or agreed to in writing, software 
- 10  # distributed under the License is distributed on an "AS IS" BASIS, 
- 11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- 12  # See the License for the specific language governing permissions and 
- 13  # limitations under the License. 
- 14   
- 15  """Schema processing for discovery based APIs 
- 16   
- 17  Schemas holds an APIs discovery schemas. It can return those schema as 
- 18  deserialized JSON objects, or pretty print them as prototype objects that 
- 19  conform to the schema. 
- 20   
- 21  For example, given the schema: 
- 22   
- 23   schema = \"\"\"{ 
- 24     "Foo": { 
- 25      "type": "object", 
- 26      "properties": { 
- 27       "etag": { 
- 28        "type": "string", 
- 29        "description": "ETag of the collection." 
- 30       }, 
- 31       "kind": { 
- 32        "type": "string", 
- 33        "description": "Type of the collection ('calendar#acl').", 
- 34        "default": "calendar#acl" 
- 35       }, 
- 36       "nextPageToken": { 
- 37        "type": "string", 
- 38        "description": "Token used to access the next 
- 39           page of this result. Omitted if no further results are available." 
- 40       } 
- 41      } 
- 42     } 
- 43   }\"\"\" 
- 44   
- 45   s = Schemas(schema) 
- 46   print s.prettyPrintByName('Foo') 
- 47   
- 48   Produces the following output: 
- 49   
- 50    { 
- 51     "nextPageToken": "A String", # Token used to access the 
- 52         # next page of this result. Omitted if no further results are available. 
- 53     "kind": "A String", # Type of the collection ('calendar#acl'). 
- 54     "etag": "A String", # ETag of the collection. 
- 55    }, 
- 56   
- 57  The constructor takes a discovery document in which to look up named schema. 
- 58  """ 
- 59  from __future__ import absolute_import 
- 60  import six 
- 61   
- 62  # TODO(jcgregorio) support format, enum, minimum, maximum 
- 63   
- 64  __author__ = "jcgregorio@google.com (Joe Gregorio)" 
- 65   
- 66  import copy 
- 67   
- 68  from googleapiclient import _helpers as util 
-
69 - 70 - 71 -class Schemas(object): -
72 """Schemas for an API.""" - 73 -
74 - def __init__(self, discovery): -
75 """Constructor. - 76 - 77 Args: - 78 discovery: object, Deserialized discovery document from which we pull - 79 out the named schema. - 80 """ - 81 self.schemas = discovery.get("schemas", {}) - 82 - 83 # Cache of pretty printed schemas. - 84 self.pretty = {} -
85 - 86 @util.positional(2) -
87 - def _prettyPrintByName(self, name, seen=None, dent=0): -
88 """Get pretty printed object prototype from the schema name. - 89 - 90 Args: - 91 name: string, Name of schema in the discovery document. - 92 seen: list of string, Names of schema already seen. Used to handle - 93 recursive definitions. - 94 - 95 Returns: - 96 string, A string that contains a prototype object with - 97 comments that conforms to the given schema. - 98 """ - 99 if seen is None: -100 seen = [] -101 -102 if name in seen: -103 # Do not fall into an infinite loop over recursive definitions. -104 return "# Object with schema name: %s" % name -105 seen.append(name) -106 -107 if name not in self.pretty: -108 self.pretty[name] = _SchemaToStruct( -109 self.schemas[name], seen, dent=dent -110 ).to_str(self._prettyPrintByName) -111 -112 seen.pop() -113 -114 return self.pretty[name] -
115 -
116 - def prettyPrintByName(self, name): -
117 """Get pretty printed object prototype from the schema name. -118 -119 Args: -120 name: string, Name of schema in the discovery document. -121 -122 Returns: -123 string, A string that contains a prototype object with -124 comments that conforms to the given schema. -125 """ -126 # Return with trailing comma and newline removed. -127 return self._prettyPrintByName(name, seen=[], dent=1)[:-2] -
128 -129 @util.positional(2) -
130 - def _prettyPrintSchema(self, schema, seen=None, dent=0): -
131 """Get pretty printed object prototype of schema. -132 -133 Args: -134 schema: object, Parsed JSON schema. -135 seen: list of string, Names of schema already seen. Used to handle -136 recursive definitions. -137 -138 Returns: -139 string, A string that contains a prototype object with -140 comments that conforms to the given schema. -141 """ -142 if seen is None: -143 seen = [] -144 -145 return _SchemaToStruct(schema, seen, dent=dent).to_str(self._prettyPrintByName) -
146 -
147 - def prettyPrintSchema(self, schema): -
148 """Get pretty printed object prototype of schema. -149 -150 Args: -151 schema: object, Parsed JSON schema. -152 -153 Returns: -154 string, A string that contains a prototype object with -155 comments that conforms to the given schema. -156 """ -157 # Return with trailing comma and newline removed. -158 return self._prettyPrintSchema(schema, dent=1)[:-2] -
159 -
160 - def get(self, name, default=None): -
161 """Get deserialized JSON schema from the schema name. -162 -163 Args: -164 name: string, Schema name. -165 default: object, return value if name not found. -166 """ -167 return self.schemas.get(name, default) -
168 -
169 -170 -class _SchemaToStruct(object): -
171 """Convert schema to a prototype object.""" -172 -173 @util.positional(3) -
174 - def __init__(self, schema, seen, dent=0): -
175 """Constructor. -176 -177 Args: -178 schema: object, Parsed JSON schema. -179 seen: list, List of names of schema already seen while parsing. Used to -180 handle recursive definitions. -181 dent: int, Initial indentation depth. -182 """ -183 # The result of this parsing kept as list of strings. -184 self.value = [] -185 -186 # The final value of the parsing. -187 self.string = None -188 -189 # The parsed JSON schema. -190 self.schema = schema -191 -192 # Indentation level. -193 self.dent = dent -194 -195 # Method that when called returns a prototype object for the schema with -196 # the given name. -197 self.from_cache = None -198 -199 # List of names of schema already seen while parsing. -200 self.seen = seen -
201 -
202 - def emit(self, text): -
203 """Add text as a line to the output. -204 -205 Args: -206 text: string, Text to output. -207 """ -208 self.value.extend([" " * self.dent, text, "\n"]) -
209 -
210 - def emitBegin(self, text): -
211 """Add text to the output, but with no line terminator. -212 -213 Args: -214 text: string, Text to output. -215 """ -216 self.value.extend([" " * self.dent, text]) -
217 -
218 - def emitEnd(self, text, comment): -
219 """Add text and comment to the output with line terminator. -220 -221 Args: -222 text: string, Text to output. -223 comment: string, Python comment. -224 """ -225 if comment: -226 divider = "\n" + " " * (self.dent + 2) + "# " -227 lines = comment.splitlines() -228 lines = [x.rstrip() for x in lines] -229 comment = divider.join(lines) -230 self.value.extend([text, " # ", comment, "\n"]) -231 else: -232 self.value.extend([text, "\n"]) -
233 -
234 - def indent(self): -
235 """Increase indentation level.""" -236 self.dent += 1 -
237 -
238 - def undent(self): -
239 """Decrease indentation level.""" -240 self.dent -= 1 -
241 -
242 - def _to_str_impl(self, schema): -
243 """Prototype object based on the schema, in Python code with comments. -244 -245 Args: -246 schema: object, Parsed JSON schema file. -247 -248 Returns: -249 Prototype object based on the schema, in Python code with comments. -250 """ -251 stype = schema.get("type") -252 if stype == "object": -253 self.emitEnd("{", schema.get("description", "")) -254 self.indent() -255 if "properties" in schema: -256 for pname, pschema in six.iteritems(schema.get("properties", {})): -257 self.emitBegin('"%s": ' % pname) -258 self._to_str_impl(pschema) -259 elif "additionalProperties" in schema: -260 self.emitBegin('"a_key": ') -261 self._to_str_impl(schema["additionalProperties"]) -262 self.undent() -263 self.emit("},") -264 elif "$ref" in schema: -265 schemaName = schema["$ref"] -266 description = schema.get("description", "") -267 s = self.from_cache(schemaName, seen=self.seen) -268 parts = s.splitlines() -269 self.emitEnd(parts[0], description) -270 for line in parts[1:]: -271 self.emit(line.rstrip()) -272 elif stype == "boolean": -273 value = schema.get("default", "True or False") -274 self.emitEnd("%s," % str(value), schema.get("description", "")) -275 elif stype == "string": -276 value = schema.get("default", "A String") -277 self.emitEnd('"%s",' % str(value), schema.get("description", "")) -278 elif stype == "integer": -279 value = schema.get("default", "42") -280 self.emitEnd("%s," % str(value), schema.get("description", "")) -281 elif stype == "number": -282 value = schema.get("default", "3.14") -283 self.emitEnd("%s," % str(value), schema.get("description", "")) -284 elif stype == "null": -285 self.emitEnd("None,", schema.get("description", "")) -286 elif stype == "any": -287 self.emitEnd('"",', schema.get("description", "")) -288 elif stype == "array": -289 self.emitEnd("[", schema.get("description")) -290 self.indent() -291 self.emitBegin("") -292 self._to_str_impl(schema["items"]) -293 self.undent() -294 self.emit("],") -295 else: -296 self.emit("Unknown type! %s" % stype) -297 self.emitEnd("", "") -298 -299 self.string = "".join(self.value) -300 return self.string -
301 -
302 - def to_str(self, from_cache): -
303 """Prototype object based on the schema, in Python code with comments. -304 -305 Args: -306 from_cache: callable(name, seen), Callable that retrieves an object -307 prototype for a schema with the given name. Seen is a list of schema -308 names already seen as we recursively descend the schema definition. -309 -310 Returns: -311 Prototype object based on the schema, in Python code with comments. -312 The lines of the code will all be properly indented. -313 """ -314 self.from_cache = from_cache -315 return self._to_str_impl(self.schema) -
316 -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.schema.Schemas-class.html b/docs/epy/googleapiclient.schema.Schemas-class.html deleted file mode 100644 index 544fe9e1205..00000000000 --- a/docs/epy/googleapiclient.schema.Schemas-class.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - - googleapiclient.schema.Schemas - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module schema :: - Class Schemas - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class Schemas

source code

-
-object --+
-         |
-        Schemas
-
- -
-

Schemas for an API.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(self, - discovery)
- Constructor.
- source code - -
- -
-   - - - - - - -
_prettyPrintByName(*args, - **kwargs)
- Get pretty printed object prototype from the schema name.
- source code - -
- -
-   - - - - - - -
prettyPrintByName(self, - name)
- Get pretty printed object prototype from the schema name.
- source code - -
- -
-   - - - - - - -
_prettyPrintSchema(*args, - **kwargs)
- Get pretty printed object prototype of schema.
- source code - -
- -
-   - - - - - - -
prettyPrintSchema(self, - schema)
- Get pretty printed object prototype of schema.
- source code - -
- -
-   - - - - - - -
get(self, - name, - default=None)
- Get deserialized JSON schema from the schema name.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(self, - discovery) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  discovery: object, Deserialized discovery document from which we pull
-    out the named schema.
-
-
-
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

_prettyPrintByName(*args, - **kwargs) -

-
source code  -
- -
-Get pretty printed object prototype from the schema name.
-
-Args:
-  name: string, Name of schema in the discovery document.
-  seen: list of string, Names of schema already seen. Used to handle
-    recursive definitions.
-
-Returns:
-  string, A string that contains a prototype object with
-    comments that conforms to the given schema.
-
-
-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
-
-
- -
- -
- - -
-

prettyPrintByName(self, - name) -

-
source code  -
- -
-Get pretty printed object prototype from the schema name.
-
-Args:
-  name: string, Name of schema in the discovery document.
-
-Returns:
-  string, A string that contains a prototype object with
-    comments that conforms to the given schema.
-
-
-
-
-
-
- -
- -
- - -
-

_prettyPrintSchema(*args, - **kwargs) -

-
source code  -
- -
-Get pretty printed object prototype of schema.
-
-Args:
-  schema: object, Parsed JSON schema.
-  seen: list of string, Names of schema already seen. Used to handle
-    recursive definitions.
-
-Returns:
-  string, A string that contains a prototype object with
-    comments that conforms to the given schema.
-
-
-
-
Decorators:
-
    -
  • @util.positional(2)
  • -
-
-
-
- -
- -
- - -
-

prettyPrintSchema(self, - schema) -

-
source code  -
- -
-Get pretty printed object prototype of schema.
-
-Args:
-  schema: object, Parsed JSON schema.
-
-Returns:
-  string, A string that contains a prototype object with
-    comments that conforms to the given schema.
-
-
-
-
-
-
- -
- -
- - -
-

get(self, - name, - default=None) -

-
source code  -
- -
-Get deserialized JSON schema from the schema name.
-
-Args:
-  name: string, Schema name.
-  default: object, return value if name not found.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/googleapiclient.schema._SchemaToStruct-class.html b/docs/epy/googleapiclient.schema._SchemaToStruct-class.html deleted file mode 100644 index 973fb50c22e..00000000000 --- a/docs/epy/googleapiclient.schema._SchemaToStruct-class.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - - googleapiclient.schema._SchemaToStruct - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Package googleapiclient :: - Module schema :: - Class _SchemaToStruct - - - - - - -
[hide private]
[frames] | no frames]
-
- -

Class _SchemaToStruct

source code

-
-object --+
-         |
-        _SchemaToStruct
-
- -
-

Convert schema to a prototype object.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Instance Methods[hide private]
-
-   - - - - - - -
__init__(*args, - **kwargs)
- Constructor.
- source code - -
- -
-   - - - - - - -
emit(self, - text)
- Add text as a line to the output.
- source code - -
- -
-   - - - - - - -
emitBegin(self, - text)
- Add text to the output, but with no line terminator.
- source code - -
- -
-   - - - - - - -
emitEnd(self, - text, - comment)
- Add text and comment to the output with line terminator.
- source code - -
- -
-   - - - - - - -
indent(self)
- Increase indentation level.
- source code - -
- -
-   - - - - - - -
undent(self)
- Decrease indentation level.
- source code - -
- -
-   - - - - - - -
_to_str_impl(self, - schema)
- Prototype object based on the schema, in Python code with comments.
- source code - -
- -
-   - - - - - - -
to_str(self, - from_cache)
- Prototype object based on the schema, in Python code with comments.
- source code - -
- -
-

Inherited from object: - __delattr__, - __format__, - __getattribute__, - __hash__, - __new__, - __reduce__, - __reduce_ex__, - __repr__, - __setattr__, - __sizeof__, - __str__, - __subclasshook__ -

-
- - - - - - - - - -
- - - - - -
Properties[hide private]
-
-

Inherited from object: - __class__ -

-
- - - - - - -
- - - - - -
Method Details[hide private]
-
- -
- -
- - -
-

__init__(*args, - **kwargs) -
(Constructor) -

-
source code  -
- -
-Constructor.
-
-Args:
-  schema: object, Parsed JSON schema.
-  seen: list, List of names of schema already seen while parsing. Used to
-    handle recursive definitions.
-  dent: int, Initial indentation depth.
-
-
-
-
Decorators:
-
    -
  • @util.positional(3)
  • -
-
Overrides: - object.__init__ -
-
-
-
- -
- -
- - -
-

emit(self, - text) -

-
source code  -
- -
-Add text as a line to the output.
-
-Args:
-  text: string, Text to output.
-
-
-
-
-
-
- -
- -
- - -
-

emitBegin(self, - text) -

-
source code  -
- -
-Add text to the output, but with no line terminator.
-
-Args:
-  text: string, Text to output.
-  
-
-
-
-
-
-
- -
- -
- - -
-

emitEnd(self, - text, - comment) -

-
source code  -
- -
-Add text and comment to the output with line terminator.
-
-Args:
-  text: string, Text to output.
-  comment: string, Python comment.
-
-
-
-
-
-
- -
- -
- - -
-

_to_str_impl(self, - schema) -

-
source code  -
- -
-Prototype object based on the schema, in Python code with comments.
-
-Args:
-  schema: object, Parsed JSON schema file.
-
-Returns:
-  Prototype object based on the schema, in Python code with comments.
-
-
-
-
-
-
- -
- -
- - -
-

to_str(self, - from_cache) -

-
source code  -
- -
-Prototype object based on the schema, in Python code with comments.
-
-Args:
-  from_cache: callable(name, seen), Callable that retrieves an object
-     prototype for a schema with the given name. Seen is a list of schema
-     names already seen as we recursively descend the schema definition.
-
-Returns:
-  Prototype object based on the schema, in Python code with comments.
-  The lines of the code will all be properly indented.
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/help.html b/docs/epy/help.html deleted file mode 100644 index 97c6d2a0485..00000000000 --- a/docs/epy/help.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - Help - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - -
[hide private]
[frames] | no frames]
-
- -

API Documentation

- -

This document contains the API (Application Programming Interface) -documentation for this project. Documentation for the Python -objects defined by the project is divided into separate pages for each -package, module, and class. The API documentation also includes two -pages containing information about the project as a whole: a trees -page, and an index page.

- -

Object Documentation

- -

Each Package Documentation page contains:

-
    -
  • A description of the package.
  • -
  • A list of the modules and sub-packages contained by the - package.
  • -
  • A summary of the classes defined by the package.
  • -
  • A summary of the functions defined by the package.
  • -
  • A summary of the variables defined by the package.
  • -
  • A detailed description of each function defined by the - package.
  • -
  • A detailed description of each variable defined by the - package.
  • -
- -

Each Module Documentation page contains:

-
    -
  • A description of the module.
  • -
  • A summary of the classes defined by the module.
  • -
  • A summary of the functions defined by the module.
  • -
  • A summary of the variables defined by the module.
  • -
  • A detailed description of each function defined by the - module.
  • -
  • A detailed description of each variable defined by the - module.
  • -
- -

Each Class Documentation page contains:

-
    -
  • A class inheritance diagram.
  • -
  • A list of known subclasses.
  • -
  • A description of the class.
  • -
  • A summary of the methods defined by the class.
  • -
  • A summary of the instance variables defined by the class.
  • -
  • A summary of the class (static) variables defined by the - class.
  • -
  • A detailed description of each method defined by the - class.
  • -
  • A detailed description of each instance variable defined by the - class.
  • -
  • A detailed description of each class (static) variable defined - by the class.
  • -
- -

Project Documentation

- -

The Trees page contains the module and class hierarchies:

-
    -
  • The module hierarchy lists every package and module, with - modules grouped into packages. At the top level, and within each - package, modules and sub-packages are listed alphabetically.
  • -
  • The class hierarchy lists every class, grouped by base - class. If a class has more than one base class, then it will be - listed under each base class. At the top level, and under each base - class, classes are listed alphabetically.
  • -
- -

The Index page contains indices of terms and - identifiers:

-
    -
  • The term index lists every term indexed by any object's - documentation. For each term, the index provides links to each - place where the term is indexed.
  • -
  • The identifier index lists the (short) name of every package, - module, class, method, function, variable, and parameter. For each - identifier, the index provides a short description, and a link to - its documentation.
  • -
- -

The Table of Contents

- -

The table of contents occupies the two frames on the left side of -the window. The upper-left frame displays the project -contents, and the lower-left frame displays the module -contents:

- - - - - - - - - -
- Project
Contents
...
- API
Documentation
Frame


-
- Module
Contents
 
...
  -

- -

The project contents frame contains a list of all packages -and modules that are defined by the project. Clicking on an entry -will display its contents in the module contents frame. Clicking on a -special entry, labeled "Everything," will display the contents of -the entire project.

- -

The module contents frame contains a list of every -submodule, class, type, exception, function, and variable defined by a -module or package. Clicking on an entry will display its -documentation in the API documentation frame. Clicking on the name of -the module, at the top of the frame, will display the documentation -for the module itself.

- -

The "frames" and "no frames" buttons below the top -navigation bar can be used to control whether the table of contents is -displayed or not.

- -

The Navigation Bar

- -

A navigation bar is located at the top and bottom of every page. -It indicates what type of page you are currently viewing, and allows -you to go to related pages. The following table describes the labels -on the navigation bar. Note that not some labels (such as -[Parent]) are not displayed on all pages.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LabelHighlighted when...Links to...
[Parent](never highlighted) the parent of the current package
[Package]viewing a packagethe package containing the current object -
[Module]viewing a modulethe module containing the current object -
[Class]viewing a class the class containing the current object
[Trees]viewing the trees page the trees page
[Index]viewing the index page the index page
[Help]viewing the help page the help page
- -

The "show private" and "hide private" buttons below -the top navigation bar can be used to control whether documentation -for private objects is displayed. Private objects are usually defined -as objects whose (short) names begin with a single underscore, but do -not end with an underscore. For example, "_x", -"__pprint", and "epydoc.epytext._tokenize" -are private objects; but "re.sub", -"__init__", and "type_" are not. However, -if a module defines the "__all__" variable, then its -contents are used to decide which objects are private.

- -

A timestamp below the bottom navigation bar indicates when each -page was last updated.

- - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/identifier-index.html b/docs/epy/identifier-index.html deleted file mode 100644 index 1434e534f14..00000000000 --- a/docs/epy/identifier-index.html +++ /dev/null @@ -1,1187 +0,0 @@ - - - - - Identifier Index - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - -
[hide private]
[frames] | no frames]
-
- -
-

Identifier Index

-
-[ - A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - _ -] -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

B

- - - - - - - - - - - - - - - - - - - - - - -

C

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

D

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

E

- - - - - - - - - - - - - - - - - - - - - - -

F

- - - - - - - - - - - - -

G

- - - - - - - - - - - - - - - - - - - - - - -

H

- - - - - - - - - - - - - - - - - - - - - - -

I

- - - - - - - - - - - - -

J

- - - - - - - - -

K

- - - - - - - - -

L

- - - - - - - - - - - - - - - - - -

M

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

N

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

P

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

Q

- - - - - - - - -

R

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

S

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

T

- - - - - - - - - - - - -

U

- - - - - - - - - - - - - - - - - - - - - - -

V

- - - - - - - - -

W

- - - - - - - - -

X

- - - - - - - - - - - - -

_

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/index.html b/docs/epy/index.html deleted file mode 100644 index 042cb61ab1f..00000000000 --- a/docs/epy/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - API Documentation - - - - - - - - - diff --git a/docs/epy/module-tree.html b/docs/epy/module-tree.html deleted file mode 100644 index 1c8da08dc5d..00000000000 --- a/docs/epy/module-tree.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Module Hierarchy - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - -
[hide private]
[frames] | no frames]
-
-
- [ Module Hierarchy - | Class Hierarchy ] -

-

Module Hierarchy

- - - - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/docs/epy/redirect.html b/docs/epy/redirect.html deleted file mode 100644 index db937d05cf9..00000000000 --- a/docs/epy/redirect.html +++ /dev/null @@ -1,38 +0,0 @@ -Epydoc Redirect Page - - - - - - - - -

Epydoc Auto-redirect page

- -

When javascript is enabled, this page will redirect URLs of -the form redirect.html#dotted.name to the -documentation for the object with the given fully-qualified -dotted name.

-

 

- - - - - diff --git a/docs/epy/toc-everything.html b/docs/epy/toc-everything.html deleted file mode 100644 index 3eba82a7c20..00000000000 --- a/docs/epy/toc-everything.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - Everything - - - - - -

Everything

-
-

All Classes

- googleapiclient.channel.Channel
googleapiclient.channel.Notification
- - - googleapiclient.discovery_cache.appengine_memcache.Cache
googleapiclient.discovery_cache.base.Cache
googleapiclient.discovery_cache.file_cache.Cache
googleapiclient.errors.BatchError
googleapiclient.errors.Error
googleapiclient.errors.HttpError
googleapiclient.errors.InvalidChunkSizeError
googleapiclient.errors.InvalidJsonError
googleapiclient.errors.InvalidNotificationError
googleapiclient.errors.MediaUploadSizeError
googleapiclient.errors.ResumableUploadError
googleapiclient.errors.UnacceptableMimeTypeError
googleapiclient.errors.UnexpectedBodyError
googleapiclient.errors.UnexpectedMethodError
googleapiclient.errors.UnknownApiNameOrVersion
googleapiclient.errors.UnknownFileType
googleapiclient.errors.UnknownLinkType
googleapiclient.http.BatchHttpRequest
googleapiclient.http.HttpMock
googleapiclient.http.HttpMockSequence
googleapiclient.http.HttpRequest
googleapiclient.http.HttpRequestMock
googleapiclient.http.MediaDownloadProgress
googleapiclient.http.MediaFileUpload
googleapiclient.http.MediaInMemoryUpload
googleapiclient.http.MediaIoBaseDownload
googleapiclient.http.MediaIoBaseUpload
googleapiclient.http.MediaUpload
googleapiclient.http.MediaUploadProgress
googleapiclient.http.RequestMockBuilder
- googleapiclient.model.BaseModel
googleapiclient.model.JsonModel
googleapiclient.model.MediaModel
googleapiclient.model.Model
googleapiclient.model.ProtocolBufferModel
googleapiclient.model.RawModel
googleapiclient.schema.Schemas
-

All Functions

- - - - - - - - - - - - - - googleapiclient.channel.new_webhook_channel
googleapiclient.channel.notification_from_headers
- - - - - - - - - - - googleapiclient.discovery.build
googleapiclient.discovery.build_from_document
- - googleapiclient.discovery.fix_method_name
googleapiclient.discovery.key2param
googleapiclient.discovery_cache.autodetect
- - - - googleapiclient.http.build_http
googleapiclient.http.set_user_agent
googleapiclient.http.tunnel_patch
- googleapiclient.mimeparse.best_match
googleapiclient.mimeparse.fitness_and_quality_parsed
googleapiclient.mimeparse.parse_media_range
googleapiclient.mimeparse.parse_mime_type
googleapiclient.mimeparse.quality
googleapiclient.mimeparse.quality_parsed
- googleapiclient.model.makepatch
googleapiclient.sample_tools.init

All Variables

- googleapiclient.__package__
- - - - - - - - - - - - - - googleapiclient.channel.CHANNEL_PARAMS
googleapiclient.channel.EPOCH
googleapiclient.channel.X_GOOG_CHANNEL_ID
googleapiclient.channel.X_GOOG_MESSAGE_NUMBER
googleapiclient.channel.X_GOOG_RESOURCE_ID
googleapiclient.channel.X_GOOG_RESOURCE_STATE
googleapiclient.channel.X_GOOG_RESOURCE_URI
googleapiclient.channel.__package__
- - - - - - - - - - - - - - - - - - - googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE
googleapiclient.discovery_cache.LOGGER
googleapiclient.discovery_cache.__package__
googleapiclient.discovery_cache.appengine_memcache.LOGGER
googleapiclient.discovery_cache.appengine_memcache.NAMESPACE
googleapiclient.discovery_cache.appengine_memcache.cache
googleapiclient.discovery_cache.base.__package__
googleapiclient.discovery_cache.file_cache.EPOCH
googleapiclient.discovery_cache.file_cache.FILENAME
googleapiclient.discovery_cache.file_cache.LOGGER
googleapiclient.discovery_cache.file_cache.cache
googleapiclient.errors.__package__
googleapiclient.http.ConnectionError
googleapiclient.http.DEFAULT_CHUNK_SIZE
googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC
googleapiclient.http.LOGGER
googleapiclient.http.MAX_BATCH_LIMIT
googleapiclient.http.MAX_URI_LENGTH
- - googleapiclient.http.__package__
googleapiclient.mimeparse.__credits__
googleapiclient.mimeparse.__email__
googleapiclient.mimeparse.__package__
googleapiclient.model.LOGGER
- - googleapiclient.model.__package__
googleapiclient.model.dump_request_response
googleapiclient.schema.__package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient-module.html b/docs/epy/toc-googleapiclient-module.html deleted file mode 100644 index 864fc0c83a3..00000000000 --- a/docs/epy/toc-googleapiclient-module.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - googleapiclient - - - - - -

Module googleapiclient

-
-

Variables

- __package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient._auth-module.html b/docs/epy/toc-googleapiclient._auth-module.html deleted file mode 100644 index 1329ca1884c..00000000000 --- a/docs/epy/toc-googleapiclient._auth-module.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - _auth - - - - - -

Module _auth

-
-

Functions

- - - - - - - - -

Variables

- - - - -
-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient._helpers-module.html b/docs/epy/toc-googleapiclient._helpers-module.html deleted file mode 100644 index 6bacd8fbb34..00000000000 --- a/docs/epy/toc-googleapiclient._helpers-module.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - _helpers - - - - - -

Module _helpers

-
-

Functions

- - - - -

Variables

- - - - - - - - -
- logger
- -
-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.channel-module.html b/docs/epy/toc-googleapiclient.channel-module.html deleted file mode 100644 index 7b78305d0ba..00000000000 --- a/docs/epy/toc-googleapiclient.channel-module.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - channel - - - - - -

Module channel

-
-

Classes

- Channel
Notification

Functions

- - new_webhook_channel
notification_from_headers

Variables

- CHANNEL_PARAMS
EPOCH
X_GOOG_CHANNEL_ID
X_GOOG_MESSAGE_NUMBER
X_GOOG_RESOURCE_ID
X_GOOG_RESOURCE_STATE
X_GOOG_RESOURCE_URI
__package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.discovery-module.html b/docs/epy/toc-googleapiclient.discovery-module.html deleted file mode 100644 index e099063d78c..00000000000 --- a/docs/epy/toc-googleapiclient.discovery-module.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - discovery - - - - - -

Module discovery

-
-

Classes

- - - -

Functions

-
- _cast
- - - - - - - - - - - build
build_from_document
- - fix_method_name
key2param

Variables

- - - - - - - - - - - - - - - - - - -
- logger
-
-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.discovery_cache-module.html b/docs/epy/toc-googleapiclient.discovery_cache-module.html deleted file mode 100644 index 37ee8f00080..00000000000 --- a/docs/epy/toc-googleapiclient.discovery_cache-module.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - discovery_cache - - - - - -

Module discovery_cache

-
-

Functions

- autodetect

Variables

- DISCOVERY_DOC_MAX_AGE
LOGGER
__package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.discovery_cache.appengine_memcache-module.html b/docs/epy/toc-googleapiclient.discovery_cache.appengine_memcache-module.html deleted file mode 100644 index f8a098d7e89..00000000000 --- a/docs/epy/toc-googleapiclient.discovery_cache.appengine_memcache-module.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - appengine_memcache - - - - - -

Module appengine_memcache

-
-

Classes

- Cache

Variables

- LOGGER
NAMESPACE
cache

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.discovery_cache.base-module.html b/docs/epy/toc-googleapiclient.discovery_cache.base-module.html deleted file mode 100644 index 80841a0ec12..00000000000 --- a/docs/epy/toc-googleapiclient.discovery_cache.base-module.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - base - - - - - -

Module base

-
-

Classes

- Cache

Variables

- __package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.discovery_cache.file_cache-module.html b/docs/epy/toc-googleapiclient.discovery_cache.file_cache-module.html deleted file mode 100644 index 43bf6a2090e..00000000000 --- a/docs/epy/toc-googleapiclient.discovery_cache.file_cache-module.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - file_cache - - - - - -

Module file_cache

-
-

Classes

- Cache

Functions

- - -

Variables

- EPOCH
FILENAME
LOGGER
cache

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.errors-module.html b/docs/epy/toc-googleapiclient.errors-module.html deleted file mode 100644 index da2af5eb093..00000000000 --- a/docs/epy/toc-googleapiclient.errors-module.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - errors - - - - - -

Module errors

-
-

Classes

- BatchError
Error
HttpError
InvalidChunkSizeError
InvalidJsonError
InvalidNotificationError
MediaUploadSizeError
ResumableUploadError
UnacceptableMimeTypeError
UnexpectedBodyError
UnexpectedMethodError
UnknownApiNameOrVersion
UnknownFileType
UnknownLinkType

Variables

- __package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.http-module.html b/docs/epy/toc-googleapiclient.http-module.html deleted file mode 100644 index 2bb0f69fed0..00000000000 --- a/docs/epy/toc-googleapiclient.http-module.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - http - - - - - -

Module http

-
-

Classes

- BatchHttpRequest
HttpMock
HttpMockSequence
HttpRequest
HttpRequestMock
MediaDownloadProgress
MediaFileUpload
MediaInMemoryUpload
MediaIoBaseDownload
MediaIoBaseUpload
MediaUpload
MediaUploadProgress
RequestMockBuilder
-

Functions

- - - build_http
set_user_agent
tunnel_patch

Variables

- ConnectionError
DEFAULT_CHUNK_SIZE
DEFAULT_HTTP_TIMEOUT_SEC
LOGGER
MAX_BATCH_LIMIT
MAX_URI_LENGTH
- - __package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.mimeparse-module.html b/docs/epy/toc-googleapiclient.mimeparse-module.html deleted file mode 100644 index 020de8a2b50..00000000000 --- a/docs/epy/toc-googleapiclient.mimeparse-module.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - mimeparse - - - - - -

Module mimeparse

-
-

Functions

- - best_match
fitness_and_quality_parsed
parse_media_range
parse_mime_type
quality
quality_parsed

Variables

- __credits__
__email__
__package__

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.model-module.html b/docs/epy/toc-googleapiclient.model-module.html deleted file mode 100644 index dc1edcb5a33..00000000000 --- a/docs/epy/toc-googleapiclient.model-module.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - model - - - - - -

Module model

-
-

Classes

- BaseModel
JsonModel
MediaModel
Model
ProtocolBufferModel
RawModel

Functions

- - makepatch

Variables

- LOGGER
- - __package__
dump_request_response

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.sample_tools-module.html b/docs/epy/toc-googleapiclient.sample_tools-module.html deleted file mode 100644 index d45c2fa9e95..00000000000 --- a/docs/epy/toc-googleapiclient.sample_tools-module.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - sample_tools - - - - - -

Module sample_tools

-
-

Functions

- init

-[hide private] - - - - diff --git a/docs/epy/toc-googleapiclient.schema-module.html b/docs/epy/toc-googleapiclient.schema-module.html deleted file mode 100644 index 3762e30563e..00000000000 --- a/docs/epy/toc-googleapiclient.schema-module.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - schema - - - - - -

Module schema

-
-

Classes

- Schemas
-

Variables

- __package__

-[hide private] - - - - diff --git a/docs/epy/toc.html b/docs/epy/toc.html deleted file mode 100644 index ac8c6d61560..00000000000 --- a/docs/epy/toc.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - Table of Contents - - - - - -

Table of Contents

-
- Everything -
-

Modules

- googleapiclient
- - googleapiclient.channel
googleapiclient.discovery
googleapiclient.discovery_cache
googleapiclient.discovery_cache.appengine_memcache
googleapiclient.discovery_cache.base
googleapiclient.discovery_cache.file_cache
googleapiclient.errors
googleapiclient.http
googleapiclient.mimeparse
googleapiclient.model
googleapiclient.sample_tools
googleapiclient.schema

- [hide private] - - - - diff --git a/docs/epy/uml_class_diagram_for_googleap.gif b/docs/epy/uml_class_diagram_for_googleap.gif deleted file mode 100644 index 55249e0a86284e21c6b46377a607ffeb058025fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13024 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 F{s-UZ>bU>_ diff --git a/docs/epy/uml_class_diagram_for_googleap_11.gif b/docs/epy/uml_class_diagram_for_googleap_11.gif deleted file mode 100644 index 5c2e5617185f6bbfd9c10d64e1fc8a2fbf9afd14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9233 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_13.gif b/docs/epy/uml_class_diagram_for_googleap_13.gif deleted file mode 100644 index 804313290078d1f7906462a15ab779b834d31565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10737 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 T9F~KRDp-!lGYJU*z@7gA3l}nO diff --git a/docs/epy/uml_class_diagram_for_googleap_16.gif b/docs/epy/uml_class_diagram_for_googleap_16.gif deleted file mode 100644 index 664bb0048825af2fc0e9c70fc483f73134927dd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10734 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_17.gif b/docs/epy/uml_class_diagram_for_googleap_17.gif deleted file mode 100644 index 9ba1adf28710cc11fa86d4839280ca83c80ae643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12489 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%0DJ&%AD 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 D1L$O5 diff --git a/docs/epy/uml_class_diagram_for_googleap_2.gif b/docs/epy/uml_class_diagram_for_googleap_2.gif deleted file mode 100644 index 6cf4fc5ced55b6f5a98abdd8dddf531c54aaa6cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4963 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_20.gif b/docs/epy/uml_class_diagram_for_googleap_20.gif deleted file mode 100644 index 27c90cde02873b06f70db2e1633e2f0b8851f221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11153 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_21.gif b/docs/epy/uml_class_diagram_for_googleap_21.gif deleted file mode 100644 index 036b141ddcf08acf99a56f3a66f84c40b9320a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11087 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_22.gif b/docs/epy/uml_class_diagram_for_googleap_22.gif deleted file mode 100644 index 856cc4cdfbc6c6ded9bc42bf603b323b304ef2f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10490 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 M4|+T?5dcv8ALwN4+5i9m diff --git a/docs/epy/uml_class_diagram_for_googleap_23.gif b/docs/epy/uml_class_diagram_for_googleap_23.gif deleted file mode 100644 index 7f7520bd92a0bf4e6e3e042ababa7ce9d56faca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10460 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_24.gif b/docs/epy/uml_class_diagram_for_googleap_24.gif deleted file mode 100644 index c9498b328063f46f0e061c2f9f529134a2bbd77e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4759 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 YT$=oQe{u@-WX9@=z-%d;0RV^o4+3N$J^%m! diff --git a/docs/epy/uml_class_diagram_for_googleap_25.gif b/docs/epy/uml_class_diagram_for_googleap_25.gif deleted file mode 100644 index 6c9f680350748fc09f0f002a40e44942bb1e7374..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5127 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_26.gif b/docs/epy/uml_class_diagram_for_googleap_26.gif deleted file mode 100644 index 99697273a8cc0b152fb963fefdd1221abc5e9840..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4991 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 LM!FOq47m0` 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 Aj{pDw diff --git a/docs/epy/uml_class_diagram_for_googleap_3.gif b/docs/epy/uml_class_diagram_for_googleap_3.gif deleted file mode 100644 index 686209d0e81235ac2b74bb364fa899ad9a70131c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3037 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 a98##Xlz{jY8ZRZND}_FlvR?-VIQU1MJXyF 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_33.gif b/docs/epy/uml_class_diagram_for_googleap_33.gif deleted file mode 100644 index acf247619bb4c8e142fd2daa591824b50465a59e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11284 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_34.gif b/docs/epy/uml_class_diagram_for_googleap_34.gif deleted file mode 100644 index 025056581cbf273c202600ea1bbdef3a4b5b2e9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5448 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_35.gif b/docs/epy/uml_class_diagram_for_googleap_35.gif deleted file mode 100644 index 63a1ca9647cfe2b6aa5b62a8c158dcd6b70075b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3386 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 JX(NDr{{ua5oTvZ* diff --git a/docs/epy/uml_class_diagram_for_googleap_36.gif b/docs/epy/uml_class_diagram_for_googleap_36.gif deleted file mode 100644 index c0d7658d7c22d1df97862e3137497510d0b28d29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5765 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 RJ}k}gbegl2!v=tj{{suh;8_3w diff --git a/docs/epy/uml_class_diagram_for_googleap_38.gif b/docs/epy/uml_class_diagram_for_googleap_38.gif deleted file mode 100644 index 328e1b769d74358d6b2c2deedb87eb7ed1019b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8660 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 MN7mV92LrDEA6dGX<^TWy diff --git a/docs/epy/uml_class_diagram_for_googleap_39.gif b/docs/epy/uml_class_diagram_for_googleap_39.gif deleted file mode 100644 index e5d7d3ad249cf5953db7fd850e4dd7f597404cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10790 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_4.gif b/docs/epy/uml_class_diagram_for_googleap_4.gif deleted file mode 100644 index 093c5407cb9a9bddee4f3766f6d89ae17e590217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5150 zcmd6q`#+P95Q=}`cX)KT*wVDw+pi&q=HcQgiH&zKF$?$b>demd zvUfOqJ!+_>BOxx478tbI-PvDMvfABwI5MiCqQt`vmV|~A^$nGz(LpY*ozyh1tHi~I zrnEV>U|7`+r9FdNNhJ{B&Mn%WO#>FQjCQ*`8 zQq$6@8JStxIk|cH1+>DV9I&{oyrQzInqE^|$Ea_pE^TaSeb(0A(b?7gyoA}?*FW%L zaA=s(Jo4)Go3ZhU$*R$*x3hEe3yaTZmRRpUtgL>FS^o6-%f{wb=la+0J3oH@O5NVw zKlpR_aW7g7fJ+bxSkTJ<6)E5oJiJtaY9I7uKOhOqv8fC37O97^~ z6%NAC|yeZk(z~bYVrI)RB%g?VN5u@Z) zD6218Q1Qm-EXJ`sY3FRdSzE)$IxdRWEX5E?0x}HZPF$Yv5Z#18QAgIt<~hh%@vFPh|d+dFnMv1=t|A2Xcposl3( zXzZhpoiE8U2vcGq@I0y@p3HCUPBKWr!+oRxZLmI^)25JAmVGSJeZA1?eheWlv@?3W zSS?Wj$)^wY=nGoQ-VcTS+d@@v=?f`LC!ZQ~vPB>^KjRTRLYOtqj5`>~lBSW0b*cEX zEVr7@mQ(HsQPI{uD31;k&wCM`YyjoMB0hv^=~(E4NF9KLpoP*r5XOcU{V*-VZ6;&j zgr`g0db@wMRNL3=uN}32x%%LdvaCDoJb+s-^wWSC_;@A)mCnn($^f~}VB0(ps@sSj zek9@cf8gFxujlvwHiRc?Jw*IBzYn5TsA^Kjqr7&8<;&w|hr-h6J1?<=O1`#A+#hyE zHP`5kBWKQyedY3CSN=I>DB}HdoN%h<=Y-k0t)G(?M#{gYh}XP-P21kB`8DI7yFsUyNgOJg@gYyn@4b&c z6>|N3@_qW=3dQKP=!(C#%Kpd9yI+MrCa`Mu*Jx4s$hCODVt28ky!PM=z4hzC24k@H z&Qit2N9~)>)@uKJ?fm`q&$la+dXH9$ME*Pc9uq5B@P6prx1iM$)erkWrmhwE{){#I z@9*wnL42_E(fqY^C}5j#bB0GRARPoEk;(YdYjzzz_Odtzm1m7zjm&0K^VH)y0Z6ks zyqg8*ab*(>!0iti;i^D{G9TI$HZDLGFe`;mRlVV7PazA-Z>t{{B5+)Y7Ts?y1x+hP zek1txs&tru?c?_)xgeEqjG_pxLVR7|r2SXhQ8z1>|L(LtKdS$x%&+m`pHLr6JTUI` z85YF*14kdHiEPa69v54>8){DEJ+=j{aEAoq?(~!&AB=&WZm(C#|u5KEOmCfP=KqTMf({3EMmD@J7R`G*Y}f z#teaBVS6Bf;w*cBJGyHuxr}<1FBd3Q<@1Z2EW5JgRe{ZJC2E}jMO zn2v>tYe+-IbcH&WQ|`q`0MKJ- z=Po(#I&yBuyur>m34m|IwHP+sg=xX1R;s|P;>{yiPwSPd#@oRn^kr!wi1oPju;=t{_RLcZhGA{jKREj>&XaiPLR(bKVDOH7U2S7wm>+ zvc0_{EZ%<&IoG)o3_M7G=}<{$MYe5TR&TU2^E9@3dO`jU^*J>3-_La;e7j|0cHe>w zS4z~wT$~po>pB9bNn|FFD4{42?!aP~ZtvkT@o__OR+_}idFy7amPFadF|`4bp9(Ha z5HU>9!-WE6y`Ug1+a^I}jc8lrrg&t@wCOtgxz3;X#gOkH=C}`zJDUYbJ+TLE|I}P3 za?H!+mh6Jn=U)wd$04UKGc{LsmurkZ!j^7ibFAz>0^KZNa{W%2m2MpG2O-!UlR2}M zdo7fityAdxXW*vlf@vj&viH6X4H1nW)Qc%^pSsA2d)LEN&l!SFEPs=3L=9jDyL!Z( z&JDMz-0M}VJqZ}jv#o^uvc7$cX8%-cs+c;$p-Ela-xN~}{*+3zN34%isfr>1lU?AW zoMxVan;B^f1!1@w^J%q;-kF7xu9GU6dr&P@FGmmq;BNVR`M!YAl+9(N%yyD-@Pp&74ja&p^C1UY7EKK!|y>6xXQ=}k1^i?=Ib8=vQ+ zPEId#*aSSgEBhnlZcvyU4!Wwv`b@ri^IfS+xqz$Wi=y8_gi^72(+Az(5nw^l2^P04-Jw>hO9rSeh}sVEVu$4?dL{{T*t%& zAR{WEQG1vNXm_2VkjkH-{!wJ{A+pst=#r-MX!868f8^hDei!`-GcE1 zs*BQ41Ifh4z^Xnb^--)k>Qc`%RFVl1BZYR^B6}i$!9Bf;6qo`jW|kQDNN3atx^Q*$A*HUU@cz762WSR-UrLKo}4yhSS`$I3vTvzOvBowjd`CwzZci=cGI< z4bDGEnhA(2c^J#jgdQY=a0(2=N}7|lR}6q`t|x92l-g}UYfd1(!Z**4IJNwYEmv;iAWpnO>HHlv7}YRV^Xd6Qm1;;`A^5&x1?R(Pt#IJhlxpF zbx*UiL*9K1aaT}b1|;RLhdlC!j%z0HkS?Ej`(!U8wzM%8W~i4h3jRBHWRGSk-z7L-18_|saAzK#QPTO?ztNZ$g^Xx zoU(kOu-r%pmMI42%w-u)=PGA~8#ADz12^80{O4l1LhX6cbA>05#EUj!@)C!!ytj%*6l4W3NLg_; zW^@7abjDf$q&zFTIt%2a5h`r8(@%@>F)4S(A@yp)YpzHOdoh~>k!xDQ`9yKM0}*R+ z5hH!1W47!qaq-*jqH-ux-8E^_oCw;-)dl}QG{QGckPqy|{0~GPSCxLccKpegQjJ|< zj1P>PrMhsw+-Vb;@+UU<~Zx7Q?)YZeb`SmNUExMbFU7;pX1lNYM} zl6`LFi}3px!>)E-M1!>9StD9StI|ddG3) ztqKTWku5>Jef!f*JoYYVbvKgeeDl72NfHSu!=>MXDu%V{%5~;$%=-?nL)Z566 z+vk3}pTA46+(1UOn4>e?K9@19>wS&2TecgTt~*1qSmY%fWI2kk%JFzz>gla(kL-4X z9h3dO{cd^FDtFQIsq3HCE|;Sg`|q%hGG8HPnBAioJGt0WH+*FHvm0up<2F&Kp|Fdd zv80?fiu5zP_rSXyKpzJa+D>+wqq4OnOb`-ELF!3`xF$mStb95*!853`t>uqwZVnPj zvJiFxIkXBg6^iG@z#i?AD$c~k7}|}(%mekJq^tsdpFcCUE4VWIGpq}YlJ))gGL&ZH3hdqTWJt&>t zOqpJEP;b($-r6I}TGc0pU&EL_$+hx2eb0!`(Z1d8YIQb+eZ-zV7t1l0B#&n?0BV4r>>@?8rR- zrTD;j@gu_9 z3ll0^8570gu%OB;4`%H6B<*058ptdyWNIe#$mLC$<*Ar1O<7!4ydpVG^p>}FoVLxA z?KgqFo14DzciKsE#zl9=)p6!d@QhpDj7Qgu*V4?rzcW6PZy)Hs^>cjtDEMta-rK;u zw;HsB$yh7^B4$H%XTu$5BZFt7^JZhaX5*J;6aUUqB%Yx@Cym{JE=IKlGwSVUe81oF>g(k;^7Vqb+c?<1b3$4lvoqrdY ul8Z;E#eT=d7kRwh!HXkZi=#{2!%K@}l1meg$0i+@W`dV$aR3*e2Z|Em9(&G}4Z)ks=@^D5a#d zi1YJ$fB%Q?{cyiM@9yz@+&%8`yvOP2Y0Jqw7ZYU=T>$_fAP9{`!(p0({eu<%`B*dp z2pTM_2zEs9@bM&jyS2Eu`Ev2N!8BK!TF$?1b!Vb0sw$Kugp)&q;Xn`_4YVRQ7@wIv zUzHsk6udP&7z_lpq(&kv5!wHt%;1^|QbnP@2XphuG<0x%INHO0zNRSI3?AuWFU7~x z9TePMP{hVUm+bGh+S`48c^*s-Es~H5wnae6L6MG#mc&SWN%HydU{Q3iy|!juVq{Bh zwy&){TtTYN43Qn=hJYyzCMM%+>RP;gH6?^stFqDF_I0VrzGm>%nj$Gt;lYAr9u~U! zf@FMIwlEi)n}n2`zUEd_#re;J?%eFU_jTE!zHBsfb=b)HvI;a1lq@P-6drl7ylStn z*&QC4929)e+kH#8MgLcrf)X7SG}6TlUr=;Ag@>z1)!Eu3w3X1_zEB7#J2$&RACAXH z2D`X*=c4PXDk@^pTT}R!OmtDWZ!$aEd`+E{5KnTD+g4}y?d3W2f1wb<>};#+t8VOU zMgK9cqI5eqpY369Z)=}ziMSodcl*1wWM&`q4-S?T;mazv+FG*1BeR8sE24uVfuKlo zXkB8mlBlqoCE|P>uPGz!YYFFJXA|b*aWm4iH-gvI)ZO0Pf*_y@ZOuU}y2ZoImyc() zt>t`Y3!j^v%s|&28r)q{R3sx+XNee0O>Xh`U436P_#fd%2W$*<^HmjS2ECKTx`?03ViI-xo<3)PSRg;BsPkyeB zHNTmDr4~niPrs#lwp=$$$YH$Y?WZ>;<@&|?tu>!(t((2q#y@YNjFAJ0_YB(VY#N9= zYaF_y=};d6zK<6hd^lP$@jd&QLyk+#{)i%`V28Ii&;uf99~dn&GN5c?F96nNat(YB z(S86F@Ak>J>CzY(2=zDHyR#Xl55CcpgRjB<%2Ku)1pFvXudT-ZUUp6FOZ26 zP0hp_%ahBL5o;~RsU@qb*^Y)j0(hW#)iy2{WgWAr^}$M(Gb!;0FeV<_v zdTkqHzhhJO(i$++pI7r4u*UaXf0h&A4v5LWmm7RV681E;dba{{`FW)>@0;F_sv(=i zA8)XF<3FmKo{|52i+ZI0vnDY=@#kAYO_R_AyZ5~}kLsFtI&&PlFUM=&<7&Wae8qG= z2aThAwFgaI;Qczw*5z=)_tTd9h?cqc+V5IdC3dXZJ|r$5wy(#sigxS?VcvDb`4t{@ zDZQKUM;`V292@rT)Yi9OT_$~Mn1Bce;3jW;0*p?l{#f;p$kv(llS>|)4DLkL22|5| z9?%S)>DT=lVGG2+AK`cznK2r}`&yT_;ne4Jg0-Xd*pAMtu@7I-SJ$lLRBW-p*6#Hh z%&3x;voNJwzlEByJ;*%&B>%QgN;FE%?*bl`+}FbJ%>MAgpoP>haYiN5?^6FUsUO7y z+j*{uF99!k3`A_xIk695`!rXCbN0Vj~XU1ezXHIS9j+M^mWR0UPMxD~4j+Y-lj<{OyqKdvQPcx3* z*?ILZ?B*xqRP>*SkH>%c@6A8{_xF0Y{vYA?>iFM30JIc9qKgAEG|*+2qKOzsaS(-* z80ut>e-axRRQ9h)nDC_#+0j0#@RK+W=xb6P-F}*a6SM&QHM!MjKSSpUMl9L+j@gDp zQgA5=myMo2|H)CR~V(+6o6sI}(ub{ zhH}R80L)|g+$Y38j7|F2$?4z$yV9s+9`>vDbQS&6Ob5COIwVnyAIHW+h7C>D_*o9Y zTW1Ep84VdiQ}I#ci1?U|(G!8QqCNPC$wFUhX#4kjx`B`^9D<9N-enBQLK_c9Pw*9R zVtDW;2ok7perJbkso@KJ+vok4&&i zardp5q(UE=0RaG{K=$cH!%Cr<4Qi}M=^$&KJ`?sEig>o>Qi!sb9^Fk6My!I9iWfo7 z;li&hOD-D5rCGv8DOe*lrVl_8F|6vUlcNALQ`TjaG`Lv0;Cb%*;!;`khyhfZCNrCd zQv*n^kIK)qs?V-0lel80rEm1$@n%P0N4!BMGZ$LbwVus zP3nz;__={IaGqv7xJv4sAe~=0t!uFwzvADf_oWWjln-EwGosS@6`PurGGyo@4mH|n zYeFpJ_zaeA6hWRGG|xxWFs|}{J3U~tw9)U`@kA2w1ea%=?Z-ZHEY@9=SmO-GRtC)G#p8hpK3zUsZ6tdG8$ z_)56B`Us#3Kv4{5fHn?rq(%*~jQ90z2W30qO5KKH&J;9wAZ z0sgj0U3fj%$JWTCpZtxXD=c#-hcw9v{+)%}bV#zTG4*Mk2K`4XoElYA`V06L7whj) zT_cGm((b#&R@Y-DsZH5$;M+oWzsDuJ#L_iF9zjdH$&f{kI9={ca_cCfGgee4h zNO$E=IQ5o`qfXwQsJSxC3BV($$VCn@x%HX3Z|+;SCAOzZcvk@nxb7CphWA zd@n2p(%c@)Cr3MODnq*Jj@w7>Iy~-YV%sG54C`gx0=Y|eZQcx{*a}ZsB;8ORJqi z+7278G%@&b@JHcG0&ME(`jfuk0qus9fx46<10UCwuhXKRJehm;O?+MN80qfHyi2(c zJ{UQWoUT&15}WjPJbT!g+t1g+iRrbYEevwn^>H)wp+>4vHG9RZfA|6SvMrU`#!pA{ zJ>=kTkGdmQy0iI!JHdq7h0MAgMkaLM@Y7zWa_WoQE@JbWPj8|xrhR*MzaF7ioz|HS zV`#|%YNSvp5@PJX2(t`iP>|IHD4s8sJZ~eTMHw z&9m2j=DZIhl}L|fkgD7maEJ**yeVf>SaX#p0O@TOKuIbV zO93V#fK2Ev7+Jr?qH(Ah852(3a6csQIVWY&jB(MtS^dk{=Y6rpi*c$mz|(QoZZR1EVp*-3?pmADdBvH8@tAQCt)jg21;A=d7yuY!D1bRM#dNpY*;L2b zT?b2U#F-&M#;7P7jHT4*eHUFU#u+GyWLccyAb1Oq5eYn*^^AMoN5(J^dbk+}8{%Fw z;Wj#rOqN6C>~V{N%|BH7q;7&J&dkK6%@rjOjiIsVz(;5lpm>Q=pwdj3mn<)gTRt-} zS1zHFG_m3h+jGKR__Z3dB{K1Y z7Sjh(L_xe?<7kpu`n{47xbcVN{=MW+q=4DcRG+=nNw<{e87Z&A660kkQKrw8E*K?G zQ{>E29RpHx0^|8`&}_~WKx_QB>ZB4m>@ijJYS7uZ@N?m=0?$8(T&gC#=;$hy+P zo);Wr_205Y*w91=a>SVKXurB=#$du3te4vSyc|SI?b*g0 z*=E19u{1g6f@z<_Qof94*(7-3ah~KjGWa*1=)4S!4%D@SMGgmA(Y@#UHonl=kM&E2 z{39*6m~I)y7u9A{3?_>H#`he|%nvcMevxBcBu*iB!ieAGz+$WuxARMQ z!}!BU*f^L*Mhl|B*0J7Kc1)FoC!S7|hBSkN>v9 zGXoa|UoHH|wa8Cddu#obxv+%<;4=fY7NgKsv+*k9>-f!AI9PI|$F$!;Hgm$b#0>0< z$uAho*TxleVN%K3?^1+icjVYpG?U@Qc=P%w-PNF9O@MK9WobZ)W(&Iy7?1}Kcy)%X zkgmM#f>HFR!TaBgg{59GM8(SF6z`-d>bFTIP3#k6?M5#IP>}ML*78{X3KS<zb{Oqy3O1sVghs25ocPMRsm7adS%60BVJIG9^T+O@kEv$^syIiod zOys7bD>QpM>;<91v&ufaLT|i^WV@;X{N}8^I7GivUB75hjzR**+^;1t-$)ieR}oi} zgU%oh`OWwrfzl@|0ySmAKPx&hcGruqSpq%!utG)w;L=2)NmTN)?ApO+ri^iwc7wG! z;>TBZpM^C#w3A)h#d9xf7-3#_n6R^{@{No z6QNPi>ebce$Qq0>B^Ja%i^Lj{55O)D{M;x4qXQp5pMb`&`gaXOU%9s)@g%%re7elT zvBwW?{Sd`_!v2fs`Qa?F(TVY#SjQ*+Ff>UgcrP>jvK=hfkrNRSJ`5#Kuf2TH@f{5= zTY4;gVM)qDh zb5lxhb@Cr;$ltsdxijoTCyZ*PLAMc!jdF=S)wmm<&UXT7jbUjL+aLR^A(&aR?<_b; z7!IQJvD(^vZKKaD0N3MF5a9C>$CE+An-w%>@$C;IZRSf^AZRNL_i)uBNf6AJkjeFS z!0EH)>O|s+OonK3juu4TRz({-QSE88W~D%{{g5=eT7|dE4Jt+kymnWF(Zl z$}cFhDVj?tnsMVJ@g_oaze?gA{uEf?k1wdAD0w5EQTJom1N!Q(AX6g_N(dOCJa8_} z)f$@m@gcx>v_h{2F*-Cd*snxhonhODWeLu|;YTQqWvtf77L=QZ+bMf@W+_x~2#qP| zkJ&1Ol(R8eT52F^Mnu*sAJ;%CNo@p$&tnk$TEqEMJ#3TElDKaMgXG!K0k< zu3L3IzVMI9b*gUfHk#hg#p0ie=hO;QGyMP6Duhao2C zZji15e2Q$A%HozXa{Uy@Ep5vI%qRuBnn)}8$=H;G`#2zA4k-uoc_&&KTNA}LH5sG7 z(vQl)Z5-6T-(@WPq)T08fibeSrLqoxrJ~EhC~oRZ4S@S!sd#gWk!HD+PYa4?0JtPD zEM?KQ9Gs`IDCSDu*(^=5u_#7NUe7@uUrZhsx1=%yMi)z+o-Ogxe#!hRp6&33`N@|& zW$}WZFO;9Yl=z92-dp}Fv0UNzuqtZ#ICHrsMYL{h`TOZ|!=y-)@(TYipoNK4XU|Ia z+Dh-=71tP2y9O}MVRblab(E69;sn@h4z|8row>JWMz93;o{<4&rd>gRS0-zVlva)n zQ*XGmGB|a<{bWgcV75HD7ILxXhhTY=!IF$vPYYh>%vtYoUE8NzFOAhztz_MDV0ta% zd*=4_L)_Q(cL*PYkT{yQaIrS(j zk`==rn;$k>K%7QKr%#PO@oyYyZnU{>u%~Lw)%MD;eS8r1wtI+!3dl(l`<#|HhT#Gw zwr(UrP>>QedwQaMVAyAd>m!B&z{x|hm0ZH#xXh^1I|TZ5qTzZ+3I^Y(7< z0kd14e7v1Y4v&G0rE!0b#P984x}6Hi9kvT1LURL%ZNtBsxgb$%)O&8H7R2WQYB#<&-}BW4eXjtRPrs3`>MhFX<7T7>l)qua=nCoMY;nFEnu$rV7&K$i~-O~O9Uu& zn^QTQS2+Yw6a6$i&~-bAlss6D7GLd^T_+r#(HsRz9&P!H?oi3@l^lI(I`aHfpNM_=bvcYF%;0@epwT1o+QsvE=ZK>VVa8<6iX1P|1m8?+Nsk#sxw8l*(d) zv+pb^&r zzJ@VqEBNIX|3~n9ThLl)n_n060b~zjde8a=vm1XqY&QUt0sI=1-%dniSAryeQA1f|ECZ3EfYWS;0`mr{IR=_a=h^3NDDZ0XO=8@k9olp7aL7zMtD z38r!yWC$~o(x^751QT35H2gBh)3^;X=dm71{BNyPe^G=b=*+zcTyBXBKUwRJ_(Mox zlH;O{rzuXvZGE!Qw!qw`CpnJsnP23p$_O7A7t2lJgq3Szj| zH<6Nd)eJ_qfD_=mewrQt%`@GH|v2BQ*~ZAl@T555r0> zGMHX?I%V)UjYI=krAb?u@vW@@lpWA;+|PO^_s*<&8YjS{?nnD>=vJf7{pYtrork_< z{vv|Q;S^*ZrOakr{tC{cNfOJtoT7@t&K|j{70BtHOBFGS7lr@`a+a_IcV{a(;+MZCrReq=y2%}w$ei%tL$^i=oINwJt2H=NK4Kc^G4qi`QkoS&LzQ4 zIm|ifp-kImg6vMaYue*?Os*L^m!{v-jJ4&rQ#ANG++Su%+PLR?Rxw-UIt|NvzH@os z;rZ%0A$8BA_yr$}P)Uro!jCkJXy=cYX_gA!Z|`|5KdRNj+II3bXzagv=P3;#wfqw2 zksI-hzSY988~3t@kC({&M@@Z|-DcgL0YJi!=<$dJI&Y>w{DN|UmZExd9wCQqV9$#L zudI?T|FOQFKb9XHhG1!yT~hdf!9oPv%EXIoK9Y`}Vxio|=M(+%S|5FaD*Ra8V`Qr1GS`ro8GWvE3Rb@-h zK=^+LLN)OQWGu7@8ABc~K)13K$2OjcW)5(TeJzGPY0rJhzeFBOQ^E0D<~60DKza<7 zn=XjoT7Am27G{9!r&ro~akhbCw$4ktTfj+qTM81W%P{!DRhD9di;ZJ%0gyf&_!u8N zK+0dl`MUxKbycGZApvnWTDr%`ta6eW)#3SgV8pO6P{5-YFbH{fBrZOHOIcUr_dL^G z8U5Fkvs~rOvjSDpG-X(9A(3J735Z9#f>up8SyLjA&qY`hm@Sb+<}owmb0C=d1g&=O zYEcz-nn8Vc6HVXEq-~iPh=y?{n%V0so1nP-lG`m2OAf48JQnwfqo~N+0Qk@Sb~o^Z3&?x)S?{jIdExc9sOvSC5?U z#=wv|RM$iSH2J3S^JCe0!vfVm<#{5*z$j@cVv1(5SlYZzP71LB;Mv>hs3k~}M7DZT z(B@CRJkV>R-=1Qjnc6gT)a2Z3Igxz_Rnz2qW}Tt#76k=nIcnR4x4LUB!nrQARmcp6 zhX4+`7nDO{_b&tml?3&l9nw{t>g7%OarrN>j0w8|vRTlNY2kX@`FOg!4|#$V<&oNc zfPM46z;fu|wKf@b)6y>HXK={SVUWUg2OEIqRdOb`TIy$PYv61P z079QG4cvzW#-h7 z0@F!^lWe`zDQu{NGINsGB$;d|%B+L3D{qZ}avcojc|p0Y!X4&J&!F1cL%BmrJFh$X zN7V%+m`A%kWRjBUZL2ZD>qs}dmM>FJ3ArN42gKqt{iEf$C#7JA8X%MW9hbdBp(YL#2`ini=aXjN zfF~)2v4;Jej;8gD?U4yABK9i1JYJjO+~LdKHu94Ce*L2-S}N~ZKte-O|Ptnyu0eTIGl<+ zUinILaP<)^+JU+gxfUa*NkZ2ffR$a{yz?S#kXI!z@hN~Dic}kt?hQaY}}$ZDEGta_QMy?@a`&43Tlf6xfYpi$Qz%OT&?b^l7!D-RD#PG*Ywhy!jHGsXI4BNjd}?k#aOV?h zaEh@nK|*tYbzS$*lvP8DFlRY6;<@s)`^Tq9XdLtW9_HxT@t=W3!es})^8U-zn|Y^$ zU(2!zpQFSnIO$^V;z>0YW*f+4(9Yn&Jq$5y6RILd48Z+U;L9U|T&+0VZpo^iPbg>$ z5EJY`9$ui|<*I+quopfbul6wq#HtnFdynk$jtg-w7UhOe;b|CK!d9enF z8#SP$3v#Qd;-p3_b%K#7jio%m!LD)Ck!bZLNC_>(SWTV&9D7$--6tIf749T&!F{$- z=H}_7R07n}q8xF3-lQ0t21370JNEH)S1~PwK{Jl50mOR(a>-K%1fckZ(E@|&GB`*{ z9NK>d#(oYF>V^pm!}#bFc;K+WJ~gHD4ob~98!wP*I}uwQXz4pKi5k`m(7&-l-tAZzu8)-i zB8Eg0=V7iXFzTel3hf^^_AxeLAUJ>+AQx*HIb=Pk4lDv_mjXSkiGF|Aayp0DwrJTW z;|A@ts*)Ze*a}ouhb?_Ui&;ZG6LJ1XtQ&y%2RE(p3CtLYePjZ06Nqbhf`T!Ps0--4 zBZdgShA0q_BN724Fu9RndmXdY;bKLt$9N_S_~;AtsF}SkHn=jrWi$zoOQ_IA5a}eJ zkESUpq^#<{!_9c2OFMBM%VyvKLtZ;CwXnw4CYpmp4uKmJ1ElfvJz!TX_^yz{CAJEATMVuES_ z)@cJHp%yo9Ke-U8e)&Z8x;$2fqhC7@v-)RZ8Z_BXHyMzj$Q0SfR1xdFhb`71_C$iV z5Jo$6{l$`fE8RrXD}C$dlW(Du8(WE+APsSz0nu~$UkCCE-TgkLz$G7$ivZ{VZ&U*^ zI#Ocjh#1rrM(cs%tXJh_0#LVG@&xEmvB99{AZXurdN^`AYt`sCTM{pH*jad(dxO|x z53HRB@Ia!;-px?BgM7M&>??qPYpjzT%B>oExf%n)7(zL# zpOhx2l(*+pEO&JShdB)`#0La|!5#6cd7`3lzO;5;JEv2}eMa|C{z^*0 z_(I-fXujeT;&){Ch%bI8qIa(=#@RZC4hiwafu_#kWB4A+sL$5L781YkugWdh+tI~c zF*2iZr#lx=gpZ*&RFvMGB9xkPcpaCLi&2yV9<)thK%$gFmnA>EZ zZdtR!rm%RLcix0z$iyR9+e_Fs&d~JE(C|Ag)7OPqI%O3Xlxh{dDUGyg{p3(}&a%t1 zZnibkk#ijs$c{Uum)&8cOWCY+V5RsB;;~`PL2u^9s~dc7`XS2BP5e{ZfqKcnoay91 zfrI_d210cZCGf)M zavaht)_PjjRxUi;zCHfUX6zqh`1Z}Rm-Z~38Pw^KFUOby^Yq>?Kq$QqbZoth+dk;&Whovud z`tI{tW7W_z52A{UI}PbN({kG5nEbo1iez#EU37#L&#nnif~n$6n6Qqd#9$ReWc7k~ z9R$#TWo=N^=Gc%@-pI6peM74=`)-szS%S@I(#uSpcPTRG_IZbVq3+g^BE>`qJ0G;_ zA43PkD`FWSo#$H}PyQNl8GZbDOX%n1)5tUg0Z8MDeTeV#AvvP;Z_t{0!rulJm#Q$E ze$~bgjXr7$pe1^Zh07UHzR@`8({|)z$aA zkSO|r=q4=vdk&isQ}Kud06X}{PMK?#A7!! zboVKr=M$CPrfzqyb?rw4?IF*$UHIYlvxWCjj;7B&3{aLc(U+b9bUkfnou%A87$XJF z6Lk4RucI#3Pgzfh8d5p1tE{;K87fO<6R(jU|^uSCkV+dOU?bXt4w26nW6yjkG@E^WE-yHqi@A4+%ppAkmAPnKVaVj>!7S=hRuPiL>bM_q$ z@i0>2MKrB9ws|NYxR4j%O% zEm(RaR!bKoC14WY3Ssg8${=jSV5vB+qT<^CS=;xENjZ{1J=$RK|0W9h&hGcRc5&Mc z6uGS#D*}2BUi!gq4cJ&bg)A4F$2v-PrWnCGk~Bn%285KROSMKkH|+C!uzW^G{E+E~ z!#`Kou|N^fzbXZd_vpVzk8c^i98oDGtr;hafKn*8Gr_k1Aa+-gkk-`4WtZ+9cA6ZK zwj^TUyj~)qK{V|hH=ToT(j^Cpz}JkZAN7wyY{(upsy4daq~$IyQ^ z{>p@3R5~+;qu;sde%awScAql->r~I3*&!$(1&DR_Iv%7c zqwuF9$3ar{7J-2A>FRRA38CPCr@@QO2fOibf{4$DI&YscxN1+#0d#=*NgDzV9z@*TW> zL$^9-6z9+Xu4wPBbQ{Lx_4=(&8ENN%K`%Ra=YG3)Bmf`Bjzsn$Fr_d|Mr&oy~gcnz@ zvmR4aT!lY(cy>G$zHsGgbVWRM^&R7tV5F273Q3k3Lg{>s`G8R1SIAYF$dtKmHTY2+ z@#t08)zOo%(z72X7nco#kBS{b=BT_=Ji|_M6uTBIMuL69zzS`lzb!EP_QgJq7T)!} zpW7EcU;UMTJN31)7yhPqv0agY}MkLvW!bky2o zlluA)?&(O*MPsh7Hh8PQwpKx!!Km%~5eBNi*qwfv;6UOFninLb&LvDl?WWZ;vW``e z^qr<6bXEF=R1Dv~mr^$pV;E#2nF7D5Cq)8E1qUC2hYS@37=R~wP<)<*=Um;RGrp-J zg{P+nKhF4PN?|X6e?cfN^*GXJ;zE)!cj-L@Y_M(%NwXl2jo&h@HbD&>CG62w>Kk;2|o$}ar230{>gaEyN71HZitg6lWMAufX9Z7c&#aJq*_?hasvt3#BP+^j15?@9z$+DPG6n zi!~lfsV`j~eI0Op31>RQPT*K&JRd)*2zU#aZs%soqc<}DON74uHJ9=%0D5`F59yIik zD+)Ibu|xWT98Bd8M^8ya2RTulwgQ4vvZ8X7TZ3^zA_TeQ8<)k7u{Lfu?Hv~s=d>?M(stl-d$ zh^WqzvhA0HjcFNls;RP)^1`Fe{J3~~JA0Bkp{I)D=j^&YFi6%TMR|J(9(78>ARH#k z)q)=H>-V9V+gX_ZV_-1K!%NW0^>eVtNK0mfhvr8|^^}*{Q%wm<%7YD!5E$gcrw;@o z!OO#oZbW`_r%_oR!~JXQ?IG)sLOr~^9PA~fC0XI28PQRlGF3V2 z%c*{rg|$pmwr%G0=V`e#c=b2eJTKBeHBe^TQhNxm2m}gZTIz->XeYe^ER+BSbREnR zv1lYi!o1qRT2Ch-bNMx2x zRfgdM?(FLa46)bTt-?BfcZ!R&lq2_4GH|K@TgI3Y zD-3C=gfb}>#86YUhQzA#PGR7ZrZJ7!%GkAy;OdYP>BnZH^J;0xz>$YgXt(kV9}Jo_ zmr0T`CG=Thmd2-jj)dO~7)!!zMSX;t_F-8&e&ayi)>He>F=J(XUX2B6lierNk`8En zWRZHcFo3oqh$Zf%III>-_CTKGgQ@mxb7-}3(AQF;Z7QPR>}b&RjgbCW#EqEs+35QUl?Es7x`M(_*JNcgso9R6wbS}XJ&*fbu3uTRuM}Ib(TASjD{>f+nsxu|b{iXNJFpN37Mi(Rj6}oWtJLsLb@}LclLVJGb8& z+rp94XH2#) z&)>ywI15!bd#ufd#z_cEn^&@I^_>Imz3}2EDiDVLziMv|6P&QwC<`ID<>xXf)zj;X z_i3(FC!iY^I|d77Fo+aBrT>@%#Eu7=l+k1@STfILSCf0JE+1D~Oi(U`j5>j@<46zJ|Yk7MUdc5ngqYoHBYJ2xkj<);(|V_<2Oa8n!S@aWg2 zdnRPS20{*sW}HhTCxevQdD;?)uC5mJtv~JJM)4qI{ddzMzYj(@ zO^}2=1B7!7uugLaH(r;$F{i9KJ+WG(r79I-l?_M=`pYF2_+U|dBC^j?{gNHF^q$FS zs;A}vdXtS;UD2dnz&cWmq$;+&sx5I_VyQ4!D11%pz!4t;1cx8=iH!SDk5bn5g*Sv5b*3uDJCgl;L@s5_ z9&y>tG)SnXbE1(83kFsCM)f^J_mKs5?9XP(liA?o&VY^MEoKBOk^F+uAg?k2>kB^G zFkomd*-$s0+3T1fI&ZFk1s;TIIR^75uD~(Q3?}M9TbmK>xmb4g=gftDVE2O@DUYK)B51tS6Dsu;5}Bdi zEVUlx@LKcA#``2F=N;TxvHtS4v*l8C{73AAO{|=TH)>Iv-8fiSvh}TJoQNM!RS^HA zos;yy7M#osUF-&_TMtN!me7!?k zaV71YyZ?^ZzMJamsQicf{B!kb$n%TvqVZq(pGo6A#!HFT192%WRSPz@9?r5DpCp_d z0!*~*LS{RH34n*Ky#;s&hR;BjWv9d$S-`poL3W;7;4FFW6_W@^<#|ZhPnLQ8^*0bz zt`AfW;GtM_0v?ALVbVS7b|=g_C()t6SrEdEov0|{ZoR!{2Cf|+&B>ViXRKRq{oYC4 z5X@ndaqse_P?x6p!@HimQ^Rp9Q}bpH?2CK*AbcDuk3HmMQ99NeZFoP+CoJ~VuV)jr zVQm+~g7LsE$gmYSD;`4dP%BAYxWu>76EX*)1QX3>2OsQQobi+>sTX{0!EJv)k#7b? zTL1lHqi&2ki6M?pNi5(0h)A^X0m;gMyq)wx&t*WT6=GrszYjzhU7JXu{DL>^oromD zPJ+pdC$ioEbTGT$-b#y_7AYNh{X&nJ`9=!TR0x5Bf6UmPpke}-x^~{pnfHDSj1`EO zO4vh-HmCms3snRd$AsylLmk!@W-A}Ai{7qjNhZH|z*Qcu{E2W-25h-=C|YCt>$3KVpZtAwjN(P( zGm%UuJAu5cxRBkahXY*`!*8Fs+N`NVdE}OM82#xM-BiQ&l1K3g*_ks?a4cc>(gx>Z zK1GeFr9W}dkuk)}{=8|HBXWEBdHZIKAJoJhh<;bU-Pm-QC@lKprkoAohjhw#<$=Fm zy*$1_H1RRfuY@=>F(hXoUvd<|V`u{*_`)y>ImVFKWb80VlnaC?q$Ii>k+l;V#;odx zM=~W>FSB@tT4T(@DrORosVAZ&T>~dEu}S3Or0nK|q>%*bX40O%r1YsInmfx-i=j2R^70e14lem<jO+RwnD34|1aZLkLqa%>CF(QPrd#_AdWYN8W=SeSB^c{b@`bh}S`(Yvq^ z8yeX1tVLVjL6HGFy>li#RxbV1SUO=f`3*O1c{pty3QTZR1%9r#yR8bp;toO8&3z2k z^A1}ASu%pmRkG(2$ML%$Yau5Cm*@z4nzhpBghz={U!fGRXV=<2H{ifeEs&*;6YNUX zi^7~UTHsSxGKVTNt=Jwy|Ksg7;F`C`RZ!Sre~4aoPU{sM^`7n7Km*TviK`A@K{t<@#hCvOd0lGd& zx~Z5pQWTdQ-iXNQl`9_cEqLLpc-SrK!s+v#bupKUQ+-Crg>rch`XgK3q4rHj9I-A_ zdq;F6ySqQjb4V&JRLBq1+&_ds8|a&?3rgAIWh$ToKh2ouH;X2ZU2HZkb!bP=iDMp# z$LpFW?73I23aSWAOqkX#=GyAo1)^7e%1$cCZYWf&y+eUIZ(+wRz;qyB*axQ6O;dvm^4wP7rs@cuT*V7 zttNX^8^u*qN~)VvU!a76YV`w5Q27ROPk=0+9hy+}| EKf$_)umAu6 diff --git a/docs/epy/uml_class_diagram_for_googleap_42.gif b/docs/epy/uml_class_diagram_for_googleap_42.gif deleted file mode 100644 index b72ccc7d5751071ce27c45f9317f049a78b8e2e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10888 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_43.gif b/docs/epy/uml_class_diagram_for_googleap_43.gif deleted file mode 100644 index 2f6cd6c07066ece101f13f6f0ba0fc86e63ce10d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12267 zcmcJV=QG?7w8p>KU0p=)(d#PFdsw~qULtz5C`&d7i`~@;K|&B=i6GH?$?B^_3!(?n zqD7)cWOIM_{tx%OIIqq;bLN>jGv|Ef=o#oLDm^G7$|AZ101z<a+F zlr=GEpcD&twdNP(PxJF^a`*IvX$SD~uQW7aE3jvqTV2^GRcUBi1l*VygpG$Y&{2(N z=gd~*z(e6p8PQuq18`!Hr=_vAt#uABzqYb$VMM^;%xoGRgR!A8%G-IisxZycINIA; zR*=6d6y8-($ic<{ceG9m@?7cZI=eV)N{NP3P!&qcQc-}SU9GVxY2(FdXF~%4j?RTK zaA#fZro5a0OJieY*&0jhoKR0|nCifPHB~iDegWFj(3OfDl%I1=M%qeMp{xXSpdgK( zjbXMRZM-xG%FE$tsO>2&yVZcL`A~DVf7q3mlM@k8gNf##W0)<)qKH9h641iP=)Z&(0vo$HvIo{6Bj?Ou@);FW$T|u5r**S-O0|Ui{=6{YW73TR!`S>1vWfQ$ePl5yzQ zmGmZ%(Th6c>)!My(()M=>erVJrn1QRt>Ej+hBLXfQaB76up`fft*V?y8p_9BNO_DF z8Z=gXdZie)zcSMJcJj4G0tKgGQ{{A-{&P{6(WZBw-

h78y2I%~jhs`mK)6Z2{(P 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_44.gif b/docs/epy/uml_class_diagram_for_googleap_44.gif deleted file mode 100644 index da90209c7a70a47d9253bb229d207da590a485cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4491 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 U=6OncJS=8N#cHSk2?s3y2iJIrT>t<8 diff --git a/docs/epy/uml_class_diagram_for_googleap_45.gif b/docs/epy/uml_class_diagram_for_googleap_45.gif deleted file mode 100644 index 191c43c0a30ce31cd5a2cc584dd32a7989604d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5280 zcmd5+`9IT-=jqt?ik`xp~bVj&?ZS8^XI#@v$JS8|mj_mLxML!l%j z5@}RODoKv8zVFX}@qPaMd_JDf=i~W!Jk88aH8frKfhWKs06@Xeq8O&7p>cn2e~_Cy zkwC1iskODU)gh6C0)i%LYDLf@tr=N++`ZM_ejhvA*+;EpSt5cTQIVYLWMRql^3l=K zNeu|v8yS|uN_7_$t@dQN=`|= zm3BM*PDW-{c1~_yenDZ;-Qs&CrDf$6_a9VNRo6VMt*dWnY-(<4ZF|(-(b@I5`$^AJ z7Q45v|Jn0yKH$a6;a4NCN5{tBOuU_(dN=)kX7-IlF|WDmr_Wy&mzKY-d|UngZ(g(^Td_^OC#RFxp`CM zc_?tY0W>B<=C}rOp20B@IVhDnyv??a72?w>*cSfw6AtE+&p}pS-;x0XD$W|LQrCDC zdfyU*FU$Qo`KEfwnW=Q9{zopBHo>wn06jgRm&$}MfQ=}^f&uPFV;GeqJXAwn4juyV zNSgv0bo_kG2-bSXe{qQw7Y;)wBl&c@!=65p^uo~%A?kY5g9-z)X1@EINWa2icibtA z6v_w{B8>uVj|#!{ z>B~4K8qJUatnYJVP|Y@1@bS9!+%}FO+^dX}A>P&)t4A$@_d@ zHKY7hPhk65r8Kafppo)1 zXF1EqswgAn5(u1Rd9Dd6{_w<+KAyuqL%oy}-#6YIP&m)`hGy^k=k4WZStWjFW!U{w zF2_-%N%!N5YKLue>o(uRicco-bV!>WLrQpOVF$MQ5_?>kDTxDtvbqi;gqHi3Oo5f0w~G1kIN#Dy_P{-Y%*C`>n9$ zN8-1}sh&rxw{U_xKf1Sm?EXxr&L#a|iTmyS8r)Ke^m}wdPwPkO=#RY(Yon)$8xxnK z8vi7_H0*D2X#w{Vw~hcf+K$jz`X>WxU~LTj=3Lg-jZ-dP$6>O2oY+XkXdrz%ajh5v z2hd>k!zcMrAh5uA&+TpfW9xl(zgKe8s}RO~meJ7&_#*Sb4kS8ZP1+CMHf^e3qV}UgiGm#J!=9-WALf2$a2hc4Hzk-6rraaEAh&`Darct0HzXSLgF4x zG@3oFkKsVY^Ee=S!9@v%yfH!A2B$r!uNRTtcYwSU8-GS*3bD|ae$*Ahf6ah3%oSH= zmPCV$lpx}4WvgJ}%^@Lz(H$?hZ`hX5r|F*u9 zxy2a=GsrvkVNzf4kmZOhu7jT*CS78=N=IiFtP=Gd{wRUg`gjCpUGWiDdeSioRD-or z^#g`62R!w`h;0A{|6Pi-ammIA4{CqXe9d?E3K>&&_R-3a5bDmLv3zfIGW~Oz6pM0i zElcjCfh~<6nFWXOurw8rPzIS@xJT=Ss1%Id3TZt;qeolVW5HKP%&iFe1bf1{T60ok zQ3(Nz7#|wKprMd5t&{;%oQ&$wDZXvupg_E$jNy(ERVtZb(?{mY`t!88d%0y6+Wygd zV6{xOy{nj4!(V-u9}0sJd$ao$Wl6vKYIVQ!Ldvck5?Z?mr5AnuOiO&zyiPu1K^g=< z0y7TySHhGyB6>R6whWPwW6l=#_f^!M`Y5P7+`~?vePdg528BPHrsm_W`b}ZnW3%qy z0gABYsL-8)$vUl*o-X?~y4^%}{5>`L)x{*q+Y_2(OALhr>v>& zL&G7jW0ClBxf`Ms0mJdEkqxTy2f)(%?;ElC)=Gm@Ub2_MJsnlrYCZ<6RNs$y+o(%> zIJUV$pTXL+6f-Nwc#(hpsCTVVe^dX4e*4Hx?3#p1;PjL!P#*4k##KRhi;x>zQ0%(O zz*TdG<)A%k=?u>QAcb))%(vbBu}sX~yu_j7`NbHN8pYPlU>^P~=)`EU%Ak_IVE$Fu za)~8XpUp4$m2y7&x?<-@kyDLC{r8|H?RkIwYp>RaXldvigr9Opd+#*@z=lZD^&=2G zBeB#kv&Oiui2#ity=-2pkf+f(D=~Jn#_1EtGv$SNCP?P!{mf%(n!Q^u?3&}fY)QO| z&N+&pvYUUZG*l<-l65Pw8XR43_QO%nnDr?K(XS`fUb+Yza_BEmU-@?>#k0H(ka{QD zxS!a2t-Ys^8Ed8TYyaoikm&DXEVs5}@{(%c?(XdK$tjuM^N4wN97qbv1_>OcFPxch z>B@wDQT14#+R>daKOaWMF8VJTO}-=eEncAt<|884Q1Z*173)XMU(UUn$qCYYEpV)b zI;yjq<1%;H_Yvi;@9m|z3v)jzjns|A_Q__F|F+wrdWND@_hZjI{X5m8yXjZA|9zlq zckY7PcHf1SU&72OZaRy!8W7AZ(Zlt4$TWVk7k0ZWvr~8GCMfr=^xc!Lyt->4yrn*n zd7pJ&U+6Jkn2oQ$hxa0{kp~`BLx2!C=-Ex5aTDbHBmX`9tIy)Yzj~P7W?%K%xY~(l zl$Qco@!m*x#1 z@P>Z0J-;x(ytPJD45g{$(iBg}X|;fm0K{euq$m!_UI^^Dbo#JS;2zm#lNplOE~-5M zIk^=Wj}D?zf?U+>NU)G=i7|ULT@zZ65DUD|g1X3)s_q9Fz6~;ubw2oBlZQTq8Wxdkg9-7adOs zm7yez#fEZIDnolPPOw9u8oa+W=TbN?=*%jGX>^%A> zEdAkBL_@n`Rp_N@%ngAIFzKy`0w3Dh1JyN!?zYe99F*@U!Xlbehf{`JH`l z(430|y=nw_4GfHtQCZ}u-UptW31l}-C78PbD%!%7ACS@9m+HP;h~#Qkp~#W#u;1R*f68V z#5#zW1(Qv5^ZfJ^nfsi9#KgZ znxdk`Lz1Quhghm^SD<4X&^N~JCARU;nHDcaZe1Vumk|#*B$q#cr$WZ1f1+fDhp4Ej z;xo&@ONA@%$dW|4goK!Y(7^zBHsL8oIW#}l{<4)68Y=VFfj(~a+a@rTZo{b#6p6DD zVFl`nr+{6Fz!yL*;E;ZFf@&o}x+X!P@m?Z5Nl8Ij-ae>sFnqLADTO;NG?Zv}!tj*+ zvmh(`AR(>bdU-ifmtZk0(&~>=a12B#`K(EStfH2Cd_c-fZ2qT1;?9-lir^)xScRKy z4sZ+TOM1x2JB1s$@pq~(zg|}GSqjnPNA{596ga27-j)_#uJ9|6wb8mWr4j1!sRGo0 zYvk~S(=W<)JCttc;w2WOeg|LJX}e&&mNxa)Io#}a9O>}Za#*@tI4m$MB|B~QkIFBS zs@eOL<2j*27?-TvqT`woP|b^X<***ph)PjMg(WB@{_wr_i{hR&SUzNvxVvy~#Ik6H zwMWE$quY+HBq^|_e7yPrwx-D}0}+^a+W)$Wf``hl40qwoSIL!Jd_@$sIn!@4nmCq8 z|D741RHsu>Cy8rHqEM;@Xi-`kl1v6Wn>!|(UFr9xG*A6Lcb9D# zFFtj*y2AhPQcEAH>8`AJ0=EW{_?6Q(wqK!gA+m^`rTK6QYl%up=B3iuc%o$UN}T=^6W~xche6mGur>oFo4^j}s3r@aK2NwR;G( zR$(0DYcA}yRYr(+L|t}D(F)6$p(7r2z!(9Z-gah-VDp?>qfPe~uR90T({CNVUR2ml z5D+=CgPeTdb-%ow)?0_b*S87?H#iC}cOh509)k=Td$sGIICf_lbq~%|3_R}kD(@b- zUinJ$2_5oe;xRFyx>11L2)$#-hBZAad_pXY#-`i@-7ysE7m`WoUMNJ$&iJNRH_v-N z-UHBpTa;-NdV3SJ37~UHpx9*;8{S)3gliynI zA8+a1ll+inM396gTb-ps2_|I@jyR{6B^PEAgSj(8?uD!kDpWvO{#b#XcUyTWf4iDi zyLOF#=;O!yMM_E2Ec+J@QQjRVltY-$?q6>2t#YfZO9{Zws{)y+w9~Fiq!im#uATm3C0sPgt@`1^hc9b?Yd;}_>Y8_RbP>O-6bR*G zedZhl)U(b1JhmDc+u8I%^88nUyolkWWje@jGdg+gj6-C{w6D2|lE~T#a+5N0-SNfs zU`m$+){o3GYsJ=;g22NCn|3C8805AXzP1`%goyjt}cO>?r3onRZ zVhvh&bxyXeivMT=t&O?3!B zU)s!N^eZ1Qia$8PjyE1{ZACoyZ7OYO*8Mlywr{JXPYM+1N>o@a*&Tj~c_U}d81u!J zaV3zL2>kjqLA4C5dXScZKC3{Wvi8y2Ma!-$iba zA8Fu)_a2w^L%-c?K778pJoLU_uTzaL`+)`;IgB|ceLyUBCY6eKuopS52b#S4zLGAA z^z>4wa8s-*0|%Zu_pVtXeumq>;xl%pta^RjmkZqfF6yFPUKJyEJO5>WPEC)`Np#Gs zYJYx{e)T*$+JB@-_G z@1MU2?Q=hd2_z}Bkd7Rxl@LDr;Ki|Pvu{_m#Di9m6Bb%6-m{J^xQ>@dj+R!W)7XIb z71!hHaM0kX*bgq{AMEghBj1VKh@qYQp~dgyoT9l_v%%H#YDFQC4@W<4od39an0ojI_Z9C$H@zlVdE;|Ov&Na=aFE-*lw7rQx+DW1pn%uCJ9 kOLOOO(hCIL1)}qUEb``peDQ)}&w}#Yf=U`60|2!D50S?)=l}o! diff --git a/docs/epy/uml_class_diagram_for_googleap_5.gif b/docs/epy/uml_class_diagram_for_googleap_5.gif deleted file mode 100644 index 2510a57821f5841faa9373bb352d0064ec96bca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3376 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_7.gif b/docs/epy/uml_class_diagram_for_googleap_7.gif deleted file mode 100644 index 7e07423bfc02d1b37dbd3815c7d0ab5907352de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4940 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 diff --git a/docs/epy/uml_class_diagram_for_googleap_8.gif b/docs/epy/uml_class_diagram_for_googleap_8.gif deleted file mode 100644 index 0285691ee08b5b13fabf151e10fd8df2a51e9b82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2542 zcmd6k`Crlp1AxB>0wO6Wc@z~YUU`(}of;x}UrkCYTjXd{bH2`4%`}HX-Ulig-ryAT zNYU`fkqJ_%sUtP3X=Mg^ydge0k}9pOBcCF>+S*~XFth~POovcd#I`fRNB9M7E4O1$k&y`G_SlH4i)(HI zP2MYN$at;NDbun_$2AyhAT9ApQt52ml+o;t*)$0Nwze>yINZYxVzS+Gs#{g z>M8PMYYToqc4tQk{QqI_1p)$qAi(m!wEvy}FeP0xjlsN;o{^cAos*lFU%)CXDrT3I z-sF^(S5#J2*Km2Yztq+98*Vi=HMiVuZ431EPC<_xr_?0qKK>j|PVZ z5Y+%qNA_fVV)E(Kv*#~~5D84WmU}#I5%dki|GI@^XENfDH{?fS!;mPR zfmfc6TQ)?$gD4?rfjLw&L*9^Tt5U5fBv1F`#N^!-y^kTLsaecEix7dpBZycC0++Ea z&!(kjBw(kNG<{Z!6EBGHyJkx5+e=PjX zHwuto)wJ9b@ckaGY6!%gp>yH!KeVf>2M(VMXC+mw`1ds5Y(|5n>PXi}%6g&vVU`vK zfH$HHh5#HIRYP4NdZ{45$Qf4izL!7xzxXr{h91MO2Zz+Gpg>4#nSiKDnx!(K#L-6_ z%|p*o9#9N?;k=t=qWn$fer1?19nW_v%VKkH&E;6PJ7wh@p5hed76Afctn256w*>^K zxtvAPiIx`o9!0&C!i*=dfJA*xNV0FL==ZOZ8vZ=Fs zqzVSto!WUa?EDS;Q>WwiJT3_%kq9JJzY(1k;nPU{OGbA}kFWx40YVkT#&TAVT7;f{ zc0K^&5Pl&;eAk*{7KH+V_xaG-_coWBt!kf}_l^;4H)SBeie)5GY5m|-(aXy_^?UTZ za&WIrwAm&lHQfMGXY*+P0OBxRrP)&;hFgdL+V~0YmU!tG3N}Gu2{Rpez@sxFyB~%~ z#@s)O&g4zoj$1jK9;g&(s!wOsq$G%0;KX;lhW$yaVn?7-QFXH#b$n)B0$|v?KR>_t z$h@P(WOs{jSTAPKz**baAT0LYgj*+~|t zY$s;XHG6W@i{66wMa)L<{dChvT)h;9x_K0}1kCj@Fz*wv$A9#^btPS)ms_U(GZbpx9bk=C=q?d9*nMcZO{a=b%FNj)c| zq8=s6v;#0a$Z-_N`kODu5}wL)xX9v6I|_66IzcUHNS5vt=6C?$Ii~NOfw}U>?v9Rw z?>WOzTJd0%00&DPQS5vz1JpXczo?L<9)QI&c=~v_wG$kYO_2>1egm=*5DpuK9KMR- z{tPpx1Ao{6MovP1iYQlgPdu3353ayBiMiLJpL|fDk{kjf0xxHe$9D}CxQSDRxU*MXBqzT|g_du4zyog_)G~R%4D#S1R(u}ljS13Y z{9(7~5^V^nADnQ34c&tR8MFHtZ#OT=P=Xg@DGmb1+!jrapN8?b%~=wcS#+`4ZR3=O zR;0>{E|xFCEh10kG}*(#r9_=OEffnRYl^^@rRlcNYnLRqwQo+(%r|vl&tcWV^4_5x z|FXz0ylXx2`%i6-e*vP)RLZ`qM~@#MpD36?#yP+GR5k!1z!ZR31Ns$u3i+mYL9rI8 zOnT-X6ZXU2%T$7)d4=-5bwadS3Z7xw_{y(Kw>WWzdT!Li=5homDn?jt1q>(=!3%CH(Y-N?`ilKJ&?$F9+pxTLM=mq3Pfn)hl# v#n#N@!5h8LMpv)=y7h8BzgsjPxOQ!N>(%C1ci*3*Ybje>ua`9-z|nsI1A<5r diff --git a/docs/epy/uml_class_diagram_for_googleap_9.gif b/docs/epy/uml_class_diagram_for_googleap_9.gif deleted file mode 100644 index 7e07423bfc02d1b37dbd3815c7d0ab5907352de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4940 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 diff --git a/docs/media.md b/docs/media.md index 433c01b4823..490c847984f 100644 --- a/docs/media.md +++ b/docs/media.md @@ -17,7 +17,7 @@ In the following example, the filename of an image is supplied: response = farm.animals().insert(media_body='pig.png', body={'name': 'Pig'}).execute() ``` -Alternatively, if you want to explicitly control the MIME type of the file sent, use the [googleapiclient.http.MediaFileUpload](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaFileUpload-class.html) class for the media_body value: +Alternatively, if you want to explicitly control the MIME type of the file sent, use the [googleapiclient.http.MediaFileUpload](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.MediaFileUpload-class.html) class for the media_body value: ```python media = MediaFileUpload('pig.png', mimetype='image/png') @@ -49,7 +49,7 @@ media = MediaFileUpload('pig.png', mimetype='image/png', chunksize=1048576, resu > Note: Chunk size restriction: There are some chunk size restrictions based on the size of the file you are uploading. Files larger than 256 KB (256 * 1024 B) must have chunk sizes that are multiples of 256 KB. For files smaller than 256 KB, there are no restrictions. In either case, the final chunk has no limitations; you can simply transfer the remaining bytes. -If a request fails, an [`googleapiclient.errors.HttpError`](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.errors.HttpError-class.html) exception is thrown, which should be caught and handled. If the error is retryable, the upload can be resumed by continuing to call request.next_chunk(), but subsequent calls must use an exponential backoff strategy for retries. The retryable error status codes are: +If a request fails, an [`googleapiclient.errors.HttpError`](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.errors.HttpError-class.html) exception is thrown, which should be caught and handled. If the error is retryable, the upload can be resumed by continuing to call request.next_chunk(), but subsequent calls must use an exponential backoff strategy for retries. The retryable error status codes are: - 404 Not Found (must restart upload) - 500 Internal Server Error @@ -71,5 +71,5 @@ except apiclient.errors.HttpError, e: ## Extending MediaUpload -Your application may need to upload a media object that isn't a file. For example, you may create a large image on the fly from a data set. For such cases you can create a subclass of [MediaUpload](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaUpload-class.html) which provides the data to be uploaded. You must fully implement the MediaUpload interface. See the source for the [MediaFileUpload](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaFileUpload-class.html), [MediaIoBaseUpload](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html), and [MediaInMemoryUpload](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html) classes as examples. +Your application may need to upload a media object that isn't a file. For example, you may create a large image on the fly from a data set. For such cases you can create a subclass of [MediaUpload](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.MediaUpload-class.html) which provides the data to be uploaded. You must fully implement the MediaUpload interface. See the source for the [MediaFileUpload](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.MediaFileUpload-class.html), [MediaIoBaseUpload](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.MediaIoBaseUpload-class.html), and [MediaInMemoryUpload](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.MediaInMemoryUpload-class.html) classes as examples. diff --git a/docs/mocks.md b/docs/mocks.md index 8770f70e6e4..734aa03f9d5 100644 --- a/docs/mocks.md +++ b/docs/mocks.md @@ -6,7 +6,7 @@ The use of [Mock objects](https://en.wikipedia.org/wiki/Mock_object) is a standa ## HttpMock -This class simulates the response to a single HTTP request. As arguments, the constructor for the [HttpMock](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.HttpMock-class.html) object takes a dictionary object representing the response header and the path to a file. When this resource built on this object is executed, it simply returns contents of the file. +This class simulates the response to a single HTTP request. As arguments, the constructor for the [HttpMock](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.HttpMock-class.html) object takes a dictionary object representing the response header and the path to a file. When this resource built on this object is executed, it simply returns contents of the file. ### Example @@ -34,7 +34,7 @@ pprint.pprint(response) ## HttpMockSequence -The [HttpMockSequence](https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.HttpMockSequence-class.html) class simulates the sequence of HTTP responses. Each response consists of a header (a dictionary) and a content object (which can be a reference to a file, a JSON-like data structure defined inline, or one of the keywords listed below). When the resource built from this Mock object is executed, it returns the series of responses, one by one. +The [HttpMockSequence](https://googleapis.github.io/google-api-python-client/docs/pydoc/googleapiclient.http.HttpMockSequence-class.html) class simulates the sequence of HTTP responses. Each response consists of a header (a dictionary) and a content object (which can be a reference to a file, a JSON-like data structure defined inline, or one of the keywords listed below). When the resource built from this Mock object is executed, it returns the series of responses, one by one. ### Special Values for simulated HTTP responses diff --git a/docs/pydoc/ajax.js b/docs/pydoc/ajax.js new file mode 100644 index 00000000000..9a951eb136e --- /dev/null +++ b/docs/pydoc/ajax.js @@ -0,0 +1,50 @@ +// Implement simple cached AJAX functions. + +var _cache = {}; + +/* +* Get a promise for the HTTP get responseText. +*/ +function httpGetPromise(url) { + const promise = new Promise((_resolve, _reject) => { + httpGet(url, (responseText) => { + _resolve(responseText); + }, + (error) => { + _reject(error); + }); + }); + return promise +} + +function httpGet(url, onload, onerror) { + if (_cache[url]) { + _cachedHttpGet(url, onload, onerror); + } + else{ + _httpGet(url, onload, onerror); + } +} + +function _cachedHttpGet(url, onload, onerror) { + setTimeout(() => { onload(_cache[url]) }, 0); +} + +function _httpGet(url, onload, onerror) { + + var xobj = new XMLHttpRequest(); + xobj.open('GET', url, true); // Asynchronous + + xobj.onload = function () { + // add document to cache. + _cache[url] = xobj.responseText; + onload(xobj.responseText); + }; + + xobj.onerror = function (error) { + console.log(error) + onerror(error) + }; + + xobj.send(null); +} diff --git a/docs/pydoc/all-documents.html b/docs/pydoc/all-documents.html new file mode 100644 index 00000000000..554d8095707 --- /dev/null +++ b/docs/pydoc/all-documents.html @@ -0,0 +1,3675 @@ + + + + + + + All Documents + + + + + + + + + + + + + + +

+ + + + + +
+ + + + +
+

All Documents

+ +
    +
  • + +
    googleapiclient
    +
    index.html
    +
    Package
    +
    Package
    +
    PUBLIC
    +
    No package docstring; 10/11 modules, 1/1 package documented
    +
  • + +
    googleapiclient._auth
    +
    googleapiclient._auth.html
    +
    Module
    +
    Module
    +
    PRIVATE
    +
    Helpers for authentication using oauth2client or google-auth.
    +
  • + +
    googleapiclient._helpers
    +
    googleapiclient._helpers.html
    +
    Module
    +
    Module
    +
    PRIVATE
    +
    Helper functions for commonly used utilities.
    +
  • + +
    googleapiclient.channel
    +
    googleapiclient.channel.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Channel notifications support.
    +
  • + +
    googleapiclient.discovery
    +
    googleapiclient.discovery.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Client for discovery based APIs.
    +
  • + +
    googleapiclient.discovery_cache
    +
    googleapiclient.discovery_cache.html
    +
    Package
    +
    Package
    +
    PUBLIC
    +
    Caching utility for the discovery document.
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache
    +
    googleapiclient.discovery_cache.appengine_memcache.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    App Engine memcache based cache for the discovery document.
    +
  • + +
    googleapiclient.discovery_cache.base
    +
    googleapiclient.discovery_cache.base.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    An abstract class for caching the discovery document.
    +
  • + +
    googleapiclient.discovery_cache.file_cache
    +
    googleapiclient.discovery_cache.file_cache.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    File based cache for the discovery document.
    +
  • + +
    googleapiclient.errors
    +
    googleapiclient.errors.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Errors for the library.
    +
  • + +
    googleapiclient.http
    +
    googleapiclient.http.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Classes to encapsulate a single HTTP request.
    +
  • + +
    googleapiclient.mimeparse
    +
    googleapiclient.mimeparse.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    MIME-Type Parser
    +
  • + +
    googleapiclient.model
    +
    googleapiclient.model.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Model objects for requests and responses.
    +
  • + +
    googleapiclient.sample_tools
    +
    googleapiclient.sample_tools.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Utilities for making samples.
    +
  • + +
    googleapiclient.schema
    +
    googleapiclient.schema.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Schema processing for discovery based APIs
    +
  • + +
    googleapiclient.version
    +
    googleapiclient.version.html
    +
    Module
    +
    Module
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._auth.HAS_GOOGLE_AUTH
    +
    googleapiclient._auth.html#HAS_GOOGLE_AUTH
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._auth.HAS_OAUTH2CLIENT
    +
    googleapiclient._auth.html#HAS_OAUTH2CLIENT
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._auth.credentials_from_file
    +
    googleapiclient._auth.html#credentials_from_file
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Returns credentials loaded from a file.
    +
  • + +
    googleapiclient._auth.default_credentials
    +
    googleapiclient._auth.html#default_credentials
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Returns Application Default Credentials.
    +
  • + +
    googleapiclient._auth.with_scopes
    +
    googleapiclient._auth.html#with_scopes
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Scopes the credentials if necessary.
    +
  • + +
    googleapiclient._auth.authorized_http
    +
    googleapiclient._auth.html#authorized_http
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Returns an http client that is authorized with the given credentials.
    +
  • + +
    googleapiclient._auth.refresh_credentials
    +
    googleapiclient._auth.html#refresh_credentials
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._auth.apply_credentials
    +
    googleapiclient._auth.html#apply_credentials
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._auth.is_valid
    +
    googleapiclient._auth.html#is_valid
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._auth.get_credentials_from_http
    +
    googleapiclient._auth.html#get_credentials_from_http
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers.logger
    +
    googleapiclient._helpers.html#logger
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers.POSITIONAL_WARNING
    +
    googleapiclient._helpers.html#POSITIONAL_WARNING
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers.POSITIONAL_EXCEPTION
    +
    googleapiclient._helpers.html#POSITIONAL_EXCEPTION
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers.POSITIONAL_IGNORE
    +
    googleapiclient._helpers.html#POSITIONAL_IGNORE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers.POSITIONAL_SET
    +
    googleapiclient._helpers.html#POSITIONAL_SET
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers._IS_DIR_MESSAGE
    +
    googleapiclient._helpers.html#_IS_DIR_MESSAGE
    +
    Attribute
    +
    Constant
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers._MISSING_FILE_MESSAGE
    +
    googleapiclient._helpers.html#_MISSING_FILE_MESSAGE
    +
    Attribute
    +
    Constant
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient._helpers.positional
    +
    googleapiclient._helpers.html#positional
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    A decorator to declare that only the first N arguments may be positional.
    +
  • + +
    googleapiclient._helpers.parse_unique_urlencoded
    +
    googleapiclient._helpers.html#parse_unique_urlencoded
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Parses unique key-value parameters from urlencoded content.
    +
  • + +
    googleapiclient._helpers.update_query_params
    +
    googleapiclient._helpers.html#update_query_params
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Updates a URI with new query parameters.
    +
  • + +
    googleapiclient._helpers._add_query_parameter
    +
    googleapiclient._helpers.html#_add_query_parameter
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Adds a query parameter to a url.
    +
  • + +
    googleapiclient.errors.__author__
    +
    googleapiclient.errors.html#__author__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.Error
    +
    googleapiclient.errors.Error.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Base error for this module.
    +
  • + +
    googleapiclient.errors.HttpError
    +
    googleapiclient.errors.HttpError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    HTTP data was invalid or unexpected.
    +
  • + +
    googleapiclient.errors.HttpError.__init__
    +
    googleapiclient.errors.HttpError.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.HttpError.resp
    +
    googleapiclient.errors.HttpError.html#resp
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.HttpError.content
    +
    googleapiclient.errors.HttpError.html#content
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.HttpError.uri
    +
    googleapiclient.errors.HttpError.html#uri
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.HttpError.error_details
    +
    googleapiclient.errors.HttpError.html#error_details
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.HttpError.reason
    +
    googleapiclient.errors.HttpError.html#reason
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.HttpError.status_code
    +
    googleapiclient.errors.HttpError.html#status_code
    +
    Attribute
    +
    Property
    +
    PUBLIC
    +
    Return the HTTP status code from the response content.
    +
  • + +
    googleapiclient.errors.HttpError._get_reason
    +
    googleapiclient.errors.HttpError.html#_get_reason
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Calculate the reason for the error from the response content.
    +
  • + +
    googleapiclient.errors.HttpError.__repr__
    +
    googleapiclient.errors.HttpError.html#__repr__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.InvalidJsonError
    +
    googleapiclient.errors.InvalidJsonError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    The JSON returned could not be parsed.
    +
  • + +
    googleapiclient.errors.UnknownFileType
    +
    googleapiclient.errors.UnknownFileType.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    File type unknown or unexpected.
    +
  • + +
    googleapiclient.errors.UnknownLinkType
    +
    googleapiclient.errors.UnknownLinkType.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Link type unknown or unexpected.
    +
  • + +
    googleapiclient.errors.UnknownApiNameOrVersion
    +
    googleapiclient.errors.UnknownApiNameOrVersion.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    No API with that name and version exists.
    +
  • + +
    googleapiclient.errors.UnacceptableMimeTypeError
    +
    googleapiclient.errors.UnacceptableMimeTypeError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    That is an unacceptable mimetype for this operation.
    +
  • + +
    googleapiclient.errors.MediaUploadSizeError
    +
    googleapiclient.errors.MediaUploadSizeError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Media is larger than the method can accept.
    +
  • + +
    googleapiclient.errors.ResumableUploadError
    +
    googleapiclient.errors.ResumableUploadError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Error occurred during resumable upload.
    +
  • + +
    googleapiclient.errors.InvalidChunkSizeError
    +
    googleapiclient.errors.InvalidChunkSizeError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    The given chunksize is not valid.
    +
  • + +
    googleapiclient.errors.InvalidNotificationError
    +
    googleapiclient.errors.InvalidNotificationError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    The channel Notification is invalid.
    +
  • + +
    googleapiclient.errors.BatchError
    +
    googleapiclient.errors.BatchError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Error occurred during batch operations.
    +
  • + +
    googleapiclient.errors.BatchError.__init__
    +
    googleapiclient.errors.BatchError.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.BatchError.resp
    +
    googleapiclient.errors.BatchError.html#resp
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.BatchError.content
    +
    googleapiclient.errors.BatchError.html#content
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.BatchError.reason
    +
    googleapiclient.errors.BatchError.html#reason
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.BatchError.__repr__
    +
    googleapiclient.errors.BatchError.html#__repr__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.errors.UnexpectedMethodError
    +
    googleapiclient.errors.UnexpectedMethodError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Exception raised by RequestMockBuilder on unexpected calls.
    +
  • + +
    googleapiclient.errors.UnexpectedMethodError.__init__
    +
    googleapiclient.errors.UnexpectedMethodError.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor for an UnexpectedMethodError.
    +
  • + +
    googleapiclient.errors.UnexpectedBodyError
    +
    googleapiclient.errors.UnexpectedBodyError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Exception raised by RequestMockBuilder on unexpected bodies.
    +
  • + +
    googleapiclient.errors.UnexpectedBodyError.__init__
    +
    googleapiclient.errors.UnexpectedBodyError.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor for an UnexpectedMethodError.
    +
  • + +
    googleapiclient.channel.EPOCH
    +
    googleapiclient.channel.html#EPOCH
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.CHANNEL_PARAMS
    +
    googleapiclient.channel.html#CHANNEL_PARAMS
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.X_GOOG_CHANNEL_ID
    +
    googleapiclient.channel.html#X_GOOG_CHANNEL_ID
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.X_GOOG_MESSAGE_NUMBER
    +
    googleapiclient.channel.html#X_GOOG_MESSAGE_NUMBER
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.X_GOOG_RESOURCE_STATE
    +
    googleapiclient.channel.html#X_GOOG_RESOURCE_STATE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.X_GOOG_RESOURCE_URI
    +
    googleapiclient.channel.html#X_GOOG_RESOURCE_URI
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.X_GOOG_RESOURCE_ID
    +
    googleapiclient.channel.html#X_GOOG_RESOURCE_ID
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel._upper_header_keys
    +
    googleapiclient.channel.html#_upper_header_keys
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Notification
    +
    googleapiclient.channel.Notification.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A Notification from a Channel.
    +
  • + +
    googleapiclient.channel.Notification.__init__
    +
    googleapiclient.channel.Notification.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Notification constructor.
    +
  • + +
    googleapiclient.channel.Notification.message_number
    +
    googleapiclient.channel.Notification.html#message_number
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Notification.state
    +
    googleapiclient.channel.Notification.html#state
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Notification.resource_uri
    +
    googleapiclient.channel.Notification.html#resource_uri
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Notification.resource_id
    +
    googleapiclient.channel.Notification.html#resource_id
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel
    +
    googleapiclient.channel.Channel.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A Channel for notifications.
    +
  • + +
    googleapiclient.channel.Channel.__init__
    +
    googleapiclient.channel.Channel.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Create a new Channel.
    +
  • + +
    googleapiclient.channel.Channel.type
    +
    googleapiclient.channel.Channel.html#type
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.id
    +
    googleapiclient.channel.Channel.html#id
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.token
    +
    googleapiclient.channel.Channel.html#token
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.address
    +
    googleapiclient.channel.Channel.html#address
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.expiration
    +
    googleapiclient.channel.Channel.html#expiration
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.params
    +
    googleapiclient.channel.Channel.html#params
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.resource_id
    +
    googleapiclient.channel.Channel.html#resource_id
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.resource_uri
    +
    googleapiclient.channel.Channel.html#resource_uri
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.channel.Channel.body
    +
    googleapiclient.channel.Channel.html#body
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Build a body from the Channel.
    +
  • + +
    googleapiclient.channel.Channel.update
    +
    googleapiclient.channel.Channel.html#update
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Update a channel with information from the response of watch().
    +
  • + +
    googleapiclient.channel.notification_from_headers
    +
    googleapiclient.channel.html#notification_from_headers
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Parse a notification from the webhook request headers, validate the notification, and return a Notification object.
    +
  • + +
    googleapiclient.channel.new_webhook_channel
    +
    googleapiclient.channel.html#new_webhook_channel
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Create a new webhook Channel.
    +
  • + +
    googleapiclient.discovery.__author__
    +
    googleapiclient.discovery.html#__author__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.HAS_UNIVERSE
    +
    googleapiclient.discovery.html#HAS_UNIVERSE
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.mimeparse.__version__
    +
    googleapiclient.mimeparse.html#__version__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.mimeparse.__author__
    +
    googleapiclient.mimeparse.html#__author__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.mimeparse.__email__
    +
    googleapiclient.mimeparse.html#__email__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.mimeparse.__license__
    +
    googleapiclient.mimeparse.html#__license__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.mimeparse.__credits__
    +
    googleapiclient.mimeparse.html#__credits__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.mimeparse.parse_mime_type
    +
    googleapiclient.mimeparse.html#parse_mime_type
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Parses a mime-type into its component parts.
    +
  • + +
    googleapiclient.mimeparse.parse_media_range
    +
    googleapiclient.mimeparse.html#parse_media_range
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Parse a media-range into its component parts.
    +
  • + +
    googleapiclient.mimeparse.fitness_and_quality_parsed
    +
    googleapiclient.mimeparse.html#fitness_and_quality_parsed
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Find the best match for a mime-type amongst parsed media-ranges.
    +
  • + +
    googleapiclient.mimeparse.quality_parsed
    +
    googleapiclient.mimeparse.html#quality_parsed
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Find the best match for a mime-type amongst parsed media-ranges.
    +
  • + +
    googleapiclient.mimeparse.quality
    +
    googleapiclient.mimeparse.html#quality
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Return the quality ('q') of a mime-type against a list of media-ranges.
    +
  • + +
    googleapiclient.mimeparse.best_match
    +
    googleapiclient.mimeparse.html#best_match
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Return mime-type with the highest quality ('q') from list of candidates.
    +
  • + +
    googleapiclient.mimeparse._filter_blank
    +
    googleapiclient.mimeparse.html#_filter_blank
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.__author__
    +
    googleapiclient.http.html#__author__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.__author__
    +
    googleapiclient.model.html#__author__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.version.__version__
    +
    googleapiclient.version.html#__version__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model._PY_VERSION
    +
    googleapiclient.model.html#_PY_VERSION
    +
    Attribute
    +
    Constant
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.model.LOGGER
    +
    googleapiclient.model.html#LOGGER
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.dump_request_response
    +
    googleapiclient.model.html#dump_request_response
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model._abstract
    +
    googleapiclient.model.html#_abstract
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.model.Model
    +
    googleapiclient.model.Model.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Model base class.
    +
  • + +
    googleapiclient.model.Model.request
    +
    googleapiclient.model.Model.html#request
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Updates outgoing requests with a serialized body.
    +
  • + +
    googleapiclient.model.Model.response
    +
    googleapiclient.model.Model.html#response
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Convert the response wire format into a Python object.
    +
  • + +
    googleapiclient.model.BaseModel
    +
    googleapiclient.model.BaseModel.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Base model class.
    +
  • + +
    googleapiclient.model.BaseModel.accept
    +
    googleapiclient.model.BaseModel.html#accept
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.BaseModel.content_type
    +
    googleapiclient.model.BaseModel.html#content_type
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.BaseModel.no_content_response
    +
    googleapiclient.model.BaseModel.html#no_content_response
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.BaseModel.alt_param
    +
    googleapiclient.model.BaseModel.html#alt_param
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.BaseModel._log_request
    +
    googleapiclient.model.BaseModel.html#_log_request
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Logs debugging information about the request if requested.
    +
  • + +
    googleapiclient.model.BaseModel.request
    +
    googleapiclient.model.BaseModel.html#request
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Updates outgoing requests with a serialized body.
    +
  • + +
    googleapiclient.model.BaseModel._build_query
    +
    googleapiclient.model.BaseModel.html#_build_query
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Builds a query string.
    +
  • + +
    googleapiclient.model.BaseModel._log_response
    +
    googleapiclient.model.BaseModel.html#_log_response
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Logs debugging information about the response if requested.
    +
  • + +
    googleapiclient.model.BaseModel.response
    +
    googleapiclient.model.BaseModel.html#response
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Convert the response wire format into a Python object.
    +
  • + +
    googleapiclient.model.BaseModel.serialize
    +
    googleapiclient.model.BaseModel.html#serialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual Python object serialization.
    +
  • + +
    googleapiclient.model.BaseModel.deserialize
    +
    googleapiclient.model.BaseModel.html#deserialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual deserialization from response string to Python object.
    +
  • + +
    googleapiclient.model.JsonModel
    +
    googleapiclient.model.JsonModel.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Model class for JSON.
    +
  • + +
    googleapiclient.model.JsonModel.accept
    +
    googleapiclient.model.JsonModel.html#accept
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.JsonModel.content_type
    +
    googleapiclient.model.JsonModel.html#content_type
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.JsonModel.alt_param
    +
    googleapiclient.model.JsonModel.html#alt_param
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.JsonModel.__init__
    +
    googleapiclient.model.JsonModel.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Construct a JsonModel.
    +
  • + +
    googleapiclient.model.JsonModel._data_wrapper
    +
    googleapiclient.model.JsonModel.html#_data_wrapper
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.model.JsonModel.serialize
    +
    googleapiclient.model.JsonModel.html#serialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual Python object serialization.
    +
  • + +
    googleapiclient.model.JsonModel.deserialize
    +
    googleapiclient.model.JsonModel.html#deserialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual deserialization from response string to Python object.
    +
  • + +
    googleapiclient.model.JsonModel.no_content_response
    +
    googleapiclient.model.JsonModel.html#no_content_response
    +
    Attribute
    +
    Property
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.RawModel
    +
    googleapiclient.model.RawModel.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Model class for requests that don't return JSON.
    +
  • + +
    googleapiclient.model.RawModel.accept
    +
    googleapiclient.model.RawModel.html#accept
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.RawModel.content_type
    +
    googleapiclient.model.RawModel.html#content_type
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.RawModel.alt_param
    +
    googleapiclient.model.RawModel.html#alt_param
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.RawModel.deserialize
    +
    googleapiclient.model.RawModel.html#deserialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual deserialization from response string to Python object.
    +
  • + +
    googleapiclient.model.RawModel.no_content_response
    +
    googleapiclient.model.RawModel.html#no_content_response
    +
    Attribute
    +
    Property
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.MediaModel
    +
    googleapiclient.model.MediaModel.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Model class for requests that return Media.
    +
  • + +
    googleapiclient.model.MediaModel.accept
    +
    googleapiclient.model.MediaModel.html#accept
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.MediaModel.content_type
    +
    googleapiclient.model.MediaModel.html#content_type
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.MediaModel.alt_param
    +
    googleapiclient.model.MediaModel.html#alt_param
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.MediaModel.deserialize
    +
    googleapiclient.model.MediaModel.html#deserialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual deserialization from response string to Python object.
    +
  • + +
    googleapiclient.model.MediaModel.no_content_response
    +
    googleapiclient.model.MediaModel.html#no_content_response
    +
    Attribute
    +
    Property
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.ProtocolBufferModel
    +
    googleapiclient.model.ProtocolBufferModel.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Model class for protocol buffers.
    +
  • + +
    googleapiclient.model.ProtocolBufferModel.accept
    +
    googleapiclient.model.ProtocolBufferModel.html#accept
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.ProtocolBufferModel.content_type
    +
    googleapiclient.model.ProtocolBufferModel.html#content_type
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.ProtocolBufferModel.alt_param
    +
    googleapiclient.model.ProtocolBufferModel.html#alt_param
    +
    Attribute
    +
    Class Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.ProtocolBufferModel.__init__
    +
    googleapiclient.model.ProtocolBufferModel.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructs a ProtocolBufferModel.
    +
  • + +
    googleapiclient.model.ProtocolBufferModel._protocol_buffer
    +
    googleapiclient.model.ProtocolBufferModel.html#_protocol_buffer
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.model.ProtocolBufferModel.serialize
    +
    googleapiclient.model.ProtocolBufferModel.html#serialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual Python object serialization.
    +
  • + +
    googleapiclient.model.ProtocolBufferModel.deserialize
    +
    googleapiclient.model.ProtocolBufferModel.html#deserialize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Perform the actual deserialization from response string to Python object.
    +
  • + +
    googleapiclient.model.ProtocolBufferModel.no_content_response
    +
    googleapiclient.model.ProtocolBufferModel.html#no_content_response
    +
    Attribute
    +
    Property
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.model.makepatch
    +
    googleapiclient.model.html#makepatch
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Create a patch object.
    +
  • + +
    googleapiclient.http.LOGGER
    +
    googleapiclient.http.html#LOGGER
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.DEFAULT_CHUNK_SIZE
    +
    googleapiclient.http.html#DEFAULT_CHUNK_SIZE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MAX_URI_LENGTH
    +
    googleapiclient.http.html#MAX_URI_LENGTH
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MAX_BATCH_LIMIT
    +
    googleapiclient.http.html#MAX_BATCH_LIMIT
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http._TOO_MANY_REQUESTS
    +
    googleapiclient.http.html#_TOO_MANY_REQUESTS
    +
    Attribute
    +
    Constant
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC
    +
    googleapiclient.http.html#DEFAULT_HTTP_TIMEOUT_SEC
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http._LEGACY_BATCH_URI
    +
    googleapiclient.http.html#_LEGACY_BATCH_URI
    +
    Attribute
    +
    Constant
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http._should_retry_response
    +
    googleapiclient.http.html#_should_retry_response
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Determines whether a response should be retried.
    +
  • + +
    googleapiclient.http._retry_request
    +
    googleapiclient.http.html#_retry_request
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Retries an HTTP request multiple times while handling errors.
    +
  • + +
    googleapiclient.http.MediaUploadProgress
    +
    googleapiclient.http.MediaUploadProgress.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Status of a resumable upload.
    +
  • + +
    googleapiclient.http.MediaUploadProgress.__init__
    +
    googleapiclient.http.MediaUploadProgress.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.http.MediaUploadProgress.resumable_progress
    +
    googleapiclient.http.MediaUploadProgress.html#resumable_progress
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaUploadProgress.total_size
    +
    googleapiclient.http.MediaUploadProgress.html#total_size
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaUploadProgress.progress
    +
    googleapiclient.http.MediaUploadProgress.html#progress
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Percent of upload completed, as a float.
    +
  • + +
    googleapiclient.http.MediaDownloadProgress
    +
    googleapiclient.http.MediaDownloadProgress.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Status of a resumable download.
    +
  • + +
    googleapiclient.http.MediaDownloadProgress.__init__
    +
    googleapiclient.http.MediaDownloadProgress.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.http.MediaDownloadProgress.resumable_progress
    +
    googleapiclient.http.MediaDownloadProgress.html#resumable_progress
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaDownloadProgress.total_size
    +
    googleapiclient.http.MediaDownloadProgress.html#total_size
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaDownloadProgress.progress
    +
    googleapiclient.http.MediaDownloadProgress.html#progress
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Percent of download completed, as a float.
    +
  • + +
    googleapiclient.http.MediaUpload
    +
    googleapiclient.http.MediaUpload.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Describes a media object to upload.
    +
  • + +
    googleapiclient.http.MediaUpload.chunksize
    +
    googleapiclient.http.MediaUpload.html#chunksize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Chunk size for resumable uploads.
    +
  • + +
    googleapiclient.http.MediaUpload.mimetype
    +
    googleapiclient.http.MediaUpload.html#mimetype
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Mime type of the body.
    +
  • + +
    googleapiclient.http.MediaUpload.size
    +
    googleapiclient.http.MediaUpload.html#size
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Size of upload.
    +
  • + +
    googleapiclient.http.MediaUpload.resumable
    +
    googleapiclient.http.MediaUpload.html#resumable
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Whether this upload is resumable.
    +
  • + +
    googleapiclient.http.MediaUpload.getbytes
    +
    googleapiclient.http.MediaUpload.html#getbytes
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Get bytes from the media.
    +
  • + +
    googleapiclient.http.MediaUpload.has_stream
    +
    googleapiclient.http.MediaUpload.html#has_stream
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Does the underlying upload support a streaming interface.
    +
  • + +
    googleapiclient.http.MediaUpload.stream
    +
    googleapiclient.http.MediaUpload.html#stream
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    A stream interface to the data being uploaded.
    +
  • + +
    googleapiclient.http.MediaUpload._to_json
    +
    googleapiclient.http.MediaUpload.html#_to_json
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Utility function for creating a JSON representation of a MediaUpload.
    +
  • + +
    googleapiclient.http.MediaUpload.to_json
    +
    googleapiclient.http.MediaUpload.html#to_json
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Create a JSON representation of an instance of MediaUpload.
    +
  • + +
    googleapiclient.http.MediaUpload.new_from_json
    +
    googleapiclient.http.MediaUpload.html#new_from_json
    +
    Function
    +
    Class Method
    +
    PUBLIC
    +
    Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json().
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload
    +
    googleapiclient.http.MediaIoBaseUpload.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A MediaUpload for a io.Base objects.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.__init__
    +
    googleapiclient.http.MediaIoBaseUpload.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload._fd
    +
    googleapiclient.http.MediaIoBaseUpload.html#_fd
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload._mimetype
    +
    googleapiclient.http.MediaIoBaseUpload.html#_mimetype
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload._chunksize
    +
    googleapiclient.http.MediaIoBaseUpload.html#_chunksize
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload._resumable
    +
    googleapiclient.http.MediaIoBaseUpload.html#_resumable
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload._size
    +
    googleapiclient.http.MediaIoBaseUpload.html#_size
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.chunksize
    +
    googleapiclient.http.MediaIoBaseUpload.html#chunksize
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Chunk size for resumable uploads.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.mimetype
    +
    googleapiclient.http.MediaIoBaseUpload.html#mimetype
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Mime type of the body.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.size
    +
    googleapiclient.http.MediaIoBaseUpload.html#size
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Size of upload.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.resumable
    +
    googleapiclient.http.MediaIoBaseUpload.html#resumable
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Whether this upload is resumable.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.getbytes
    +
    googleapiclient.http.MediaIoBaseUpload.html#getbytes
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Get bytes from the media.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.has_stream
    +
    googleapiclient.http.MediaIoBaseUpload.html#has_stream
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Does the underlying upload support a streaming interface.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.stream
    +
    googleapiclient.http.MediaIoBaseUpload.html#stream
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    A stream interface to the data being uploaded.
    +
  • + +
    googleapiclient.http.MediaIoBaseUpload.to_json
    +
    googleapiclient.http.MediaIoBaseUpload.html#to_json
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    This upload type is not serializable.
    +
  • + +
    googleapiclient.http.MediaFileUpload
    +
    googleapiclient.http.MediaFileUpload.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A MediaUpload for a file.
    +
  • + +
    googleapiclient.http.MediaFileUpload.__init__
    +
    googleapiclient.http.MediaFileUpload.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.http.MediaFileUpload._fd
    +
    googleapiclient.http.MediaFileUpload.html#_fd
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaFileUpload._filename
    +
    googleapiclient.http.MediaFileUpload.html#_filename
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaFileUpload.__del__
    +
    googleapiclient.http.MediaFileUpload.html#__del__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaFileUpload.to_json
    +
    googleapiclient.http.MediaFileUpload.html#to_json
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Creating a JSON representation of an instance of MediaFileUpload.
    +
  • + +
    googleapiclient.http.MediaFileUpload.from_json
    +
    googleapiclient.http.MediaFileUpload.html#from_json
    +
    Function
    +
    Static Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaInMemoryUpload
    +
    googleapiclient.http.MediaInMemoryUpload.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    MediaUpload for a chunk of bytes.
    +
  • + +
    googleapiclient.http.MediaInMemoryUpload.__init__
    +
    googleapiclient.http.MediaInMemoryUpload.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Create a new MediaInMemoryUpload.
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload
    +
    googleapiclient.http.MediaIoBaseDownload.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    "Download media resources.
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload.__init__
    +
    googleapiclient.http.MediaIoBaseDownload.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._fd
    +
    googleapiclient.http.MediaIoBaseDownload.html#_fd
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._request
    +
    googleapiclient.http.MediaIoBaseDownload.html#_request
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._uri
    +
    googleapiclient.http.MediaIoBaseDownload.html#_uri
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._chunksize
    +
    googleapiclient.http.MediaIoBaseDownload.html#_chunksize
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._progress
    +
    googleapiclient.http.MediaIoBaseDownload.html#_progress
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._total_size
    +
    googleapiclient.http.MediaIoBaseDownload.html#_total_size
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._done
    +
    googleapiclient.http.MediaIoBaseDownload.html#_done
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._sleep
    +
    googleapiclient.http.MediaIoBaseDownload.html#_sleep
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._rand
    +
    googleapiclient.http.MediaIoBaseDownload.html#_rand
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload._headers
    +
    googleapiclient.http.MediaIoBaseDownload.html#_headers
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.MediaIoBaseDownload.next_chunk
    +
    googleapiclient.http.MediaIoBaseDownload.html#next_chunk
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Get the next chunk of the download.
    +
  • + +
    googleapiclient.http._StreamSlice
    +
    googleapiclient.http._StreamSlice.html
    +
    Class
    +
    Class
    +
    PRIVATE
    +
    Truncated stream.
    +
  • + +
    googleapiclient.http._StreamSlice.__init__
    +
    googleapiclient.http._StreamSlice.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.http._StreamSlice._stream
    +
    googleapiclient.http._StreamSlice.html#_stream
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http._StreamSlice._begin
    +
    googleapiclient.http._StreamSlice.html#_begin
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http._StreamSlice._chunksize
    +
    googleapiclient.http._StreamSlice.html#_chunksize
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http._StreamSlice.read
    +
    googleapiclient.http._StreamSlice.html#read
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Read n bytes.
    +
  • + +
    googleapiclient.http.HttpRequest
    +
    googleapiclient.http.HttpRequest.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Encapsulates a single HTTP request.
    +
  • + +
    googleapiclient.http.HttpRequest.__init__
    +
    googleapiclient.http.HttpRequest.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor for an HttpRequest.
    +
  • + +
    googleapiclient.http.HttpRequest.uri
    +
    googleapiclient.http.HttpRequest.html#uri
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.method
    +
    googleapiclient.http.HttpRequest.html#method
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.body
    +
    googleapiclient.http.HttpRequest.html#body
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.headers
    +
    googleapiclient.http.HttpRequest.html#headers
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.methodId
    +
    googleapiclient.http.HttpRequest.html#methodId
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.http
    +
    googleapiclient.http.HttpRequest.html#http
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.postproc
    +
    googleapiclient.http.HttpRequest.html#postproc
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.resumable
    +
    googleapiclient.http.HttpRequest.html#resumable
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.response_callbacks
    +
    googleapiclient.http.HttpRequest.html#response_callbacks
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest._in_error_state
    +
    googleapiclient.http.HttpRequest.html#_in_error_state
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.body_size
    +
    googleapiclient.http.HttpRequest.html#body_size
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.resumable_uri
    +
    googleapiclient.http.HttpRequest.html#resumable_uri
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.resumable_progress
    +
    googleapiclient.http.HttpRequest.html#resumable_progress
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest._rand
    +
    googleapiclient.http.HttpRequest.html#_rand
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest._sleep
    +
    googleapiclient.http.HttpRequest.html#_sleep
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequest.execute
    +
    googleapiclient.http.HttpRequest.html#execute
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Execute the request.
    +
  • + +
    googleapiclient.http.HttpRequest.add_response_callback
    +
    googleapiclient.http.HttpRequest.html#add_response_callback
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    add_response_headers_callback
    +
  • + +
    googleapiclient.http.HttpRequest.next_chunk
    +
    googleapiclient.http.HttpRequest.html#next_chunk
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Execute the next step of a resumable upload.
    +
  • + +
    googleapiclient.http.HttpRequest._process_response
    +
    googleapiclient.http.HttpRequest.html#_process_response
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Process the response from a single chunk upload.
    +
  • + +
    googleapiclient.http.HttpRequest.to_json
    +
    googleapiclient.http.HttpRequest.html#to_json
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Returns a JSON representation of the HttpRequest.
    +
  • + +
    googleapiclient.http.HttpRequest.from_json
    +
    googleapiclient.http.HttpRequest.html#from_json
    +
    Function
    +
    Static Method
    +
    PUBLIC
    +
    Returns an HttpRequest populated with info from a JSON object.
    +
  • + +
    googleapiclient.http.HttpRequest.null_postproc
    +
    googleapiclient.http.HttpRequest.html#null_postproc
    +
    Function
    +
    Static Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest
    +
    googleapiclient.http.BatchHttpRequest.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Batches multiple HttpRequest objects into a single HTTP request.
    +
  • + +
    googleapiclient.http.BatchHttpRequest.__init__
    +
    googleapiclient.http.BatchHttpRequest.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor for a BatchHttpRequest.
    +
  • + +
    googleapiclient.http.BatchHttpRequest._batch_uri
    +
    googleapiclient.http.BatchHttpRequest.html#_batch_uri
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._callback
    +
    googleapiclient.http.BatchHttpRequest.html#_callback
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._requests
    +
    googleapiclient.http.BatchHttpRequest.html#_requests
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._callbacks
    +
    googleapiclient.http.BatchHttpRequest.html#_callbacks
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._order
    +
    googleapiclient.http.BatchHttpRequest.html#_order
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._last_auto_id
    +
    googleapiclient.http.BatchHttpRequest.html#_last_auto_id
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._base_id
    +
    googleapiclient.http.BatchHttpRequest.html#_base_id
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._responses
    +
    googleapiclient.http.BatchHttpRequest.html#_responses
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._refreshed_credentials
    +
    googleapiclient.http.BatchHttpRequest.html#_refreshed_credentials
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials
    +
    googleapiclient.http.BatchHttpRequest.html#_refresh_and_apply_credentials
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Refresh the credentials and apply to the request.
    +
  • + +
    googleapiclient.http.BatchHttpRequest._id_to_header
    +
    googleapiclient.http.BatchHttpRequest.html#_id_to_header
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Convert an id to a Content-ID header value.
    +
  • + +
    googleapiclient.http.BatchHttpRequest._header_to_id
    +
    googleapiclient.http.BatchHttpRequest.html#_header_to_id
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Convert a Content-ID header value to an id.
    +
  • + +
    googleapiclient.http.BatchHttpRequest._serialize_request
    +
    googleapiclient.http.BatchHttpRequest.html#_serialize_request
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Convert an HttpRequest object into a string.
    +
  • + +
    googleapiclient.http.BatchHttpRequest._deserialize_response
    +
    googleapiclient.http.BatchHttpRequest.html#_deserialize_response
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Convert string into httplib2 response and content.
    +
  • + +
    googleapiclient.http.BatchHttpRequest._new_id
    +
    googleapiclient.http.BatchHttpRequest.html#_new_id
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Create a new id.
    +
  • + +
    googleapiclient.http.BatchHttpRequest.add
    +
    googleapiclient.http.BatchHttpRequest.html#add
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Add a new request.
    +
  • + +
    googleapiclient.http.BatchHttpRequest._execute
    +
    googleapiclient.http.BatchHttpRequest.html#_execute
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Serialize batch request, send to server, process response.
    +
  • + +
    googleapiclient.http.BatchHttpRequest.execute
    +
    googleapiclient.http.BatchHttpRequest.html#execute
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Execute all the requests as a single batched HTTP request.
    +
  • + +
    googleapiclient.http.HttpRequestMock
    +
    googleapiclient.http.HttpRequestMock.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Mock of HttpRequest.
    +
  • + +
    googleapiclient.http.HttpRequestMock.__init__
    +
    googleapiclient.http.HttpRequestMock.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor for HttpRequestMock
    +
  • + +
    googleapiclient.http.HttpRequestMock.resp
    +
    googleapiclient.http.HttpRequestMock.html#resp
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequestMock.content
    +
    googleapiclient.http.HttpRequestMock.html#content
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequestMock.postproc
    +
    googleapiclient.http.HttpRequestMock.html#postproc
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpRequestMock.execute
    +
    googleapiclient.http.HttpRequestMock.html#execute
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Execute the request.
    +
  • + +
    googleapiclient.http.RequestMockBuilder
    +
    googleapiclient.http.RequestMockBuilder.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A simple mock of HttpRequest
    +
  • + +
    googleapiclient.http.RequestMockBuilder.__init__
    +
    googleapiclient.http.RequestMockBuilder.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor for RequestMockBuilder
    +
  • + +
    googleapiclient.http.RequestMockBuilder.responses
    +
    googleapiclient.http.RequestMockBuilder.html#responses
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.RequestMockBuilder.check_unexpected
    +
    googleapiclient.http.RequestMockBuilder.html#check_unexpected
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.RequestMockBuilder.__call__
    +
    googleapiclient.http.RequestMockBuilder.html#__call__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Implements the callable interface that discovery.build() expects of requestBuilder, which is to build an object compatible with HttpRequest.execute(). See that method for the description of the parameters and the expected response.
    +
  • + +
    googleapiclient.http.HttpMock
    +
    googleapiclient.http.HttpMock.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Mock of httplib2.Http
    +
  • + +
    googleapiclient.http.HttpMock.__init__
    +
    googleapiclient.http.HttpMock.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Args: filename: string, absolute filename to read response from headers: dict, header to return with response
    +
  • + +
    googleapiclient.http.HttpMock.data
    +
    googleapiclient.http.HttpMock.html#data
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMock.response_headers
    +
    googleapiclient.http.HttpMock.html#response_headers
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMock.headers
    +
    googleapiclient.http.HttpMock.html#headers
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMock.uri
    +
    googleapiclient.http.HttpMock.html#uri
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMock.method
    +
    googleapiclient.http.HttpMock.html#method
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMock.body
    +
    googleapiclient.http.HttpMock.html#body
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMock.request
    +
    googleapiclient.http.HttpMock.html#request
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMock.close
    +
    googleapiclient.http.HttpMock.html#close
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMockSequence
    +
    googleapiclient.http.HttpMockSequence.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Mock of httplib2.Http
    +
  • + +
    googleapiclient.http.HttpMockSequence.__init__
    +
    googleapiclient.http.HttpMockSequence.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Args: iterable: iterable, a sequence of pairs of (headers, body)
    +
  • + +
    googleapiclient.http.HttpMockSequence._iterable
    +
    googleapiclient.http.HttpMockSequence.html#_iterable
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMockSequence.follow_redirects
    +
    googleapiclient.http.HttpMockSequence.html#follow_redirects
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMockSequence.request_sequence
    +
    googleapiclient.http.HttpMockSequence.html#request_sequence
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.HttpMockSequence.request
    +
    googleapiclient.http.HttpMockSequence.html#request
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.http.set_user_agent
    +
    googleapiclient.http.html#set_user_agent
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Set the user-agent on every request.
    +
  • + +
    googleapiclient.http.tunnel_patch
    +
    googleapiclient.http.html#tunnel_patch
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Tunnel PATCH requests over POST. Args: http - An instance of httplib2.Http or something that acts like it.
    +
  • + +
    googleapiclient.http.build_http
    +
    googleapiclient.http.html#build_http
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Builds httplib2.Http object
    +
  • + +
    googleapiclient.schema.__author__
    +
    googleapiclient.schema.html#__author__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema.Schemas
    +
    googleapiclient.schema.Schemas.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Schemas for an API.
    +
  • + +
    googleapiclient.schema.Schemas.__init__
    +
    googleapiclient.schema.Schemas.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.schema.Schemas.schemas
    +
    googleapiclient.schema.Schemas.html#schemas
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema.Schemas.pretty
    +
    googleapiclient.schema.Schemas.html#pretty
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema.Schemas._prettyPrintByName
    +
    googleapiclient.schema.Schemas.html#_prettyPrintByName
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Get pretty printed object prototype from the schema name.
    +
  • + +
    googleapiclient.schema.Schemas.prettyPrintByName
    +
    googleapiclient.schema.Schemas.html#prettyPrintByName
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Get pretty printed object prototype from the schema name.
    +
  • + +
    googleapiclient.schema.Schemas._prettyPrintSchema
    +
    googleapiclient.schema.Schemas.html#_prettyPrintSchema
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Get pretty printed object prototype of schema.
    +
  • + +
    googleapiclient.schema.Schemas.prettyPrintSchema
    +
    googleapiclient.schema.Schemas.html#prettyPrintSchema
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Get pretty printed object prototype of schema.
    +
  • + +
    googleapiclient.schema.Schemas.get
    +
    googleapiclient.schema.Schemas.html#get
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Get deserialized JSON schema from the schema name.
    +
  • + +
    googleapiclient.schema._SchemaToStruct
    +
    googleapiclient.schema._SchemaToStruct.html
    +
    Class
    +
    Class
    +
    PRIVATE
    +
    Convert schema to a prototype object.
    +
  • + +
    googleapiclient.schema._SchemaToStruct.__init__
    +
    googleapiclient.schema._SchemaToStruct.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.schema._SchemaToStruct.value
    +
    googleapiclient.schema._SchemaToStruct.html#value
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema._SchemaToStruct.string
    +
    googleapiclient.schema._SchemaToStruct.html#string
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema._SchemaToStruct.schema
    +
    googleapiclient.schema._SchemaToStruct.html#schema
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema._SchemaToStruct.dent
    +
    googleapiclient.schema._SchemaToStruct.html#dent
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema._SchemaToStruct.from_cache
    +
    googleapiclient.schema._SchemaToStruct.html#from_cache
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema._SchemaToStruct.seen
    +
    googleapiclient.schema._SchemaToStruct.html#seen
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.schema._SchemaToStruct.emit
    +
    googleapiclient.schema._SchemaToStruct.html#emit
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Add text as a line to the output.
    +
  • + +
    googleapiclient.schema._SchemaToStruct.emitBegin
    +
    googleapiclient.schema._SchemaToStruct.html#emitBegin
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Add text to the output, but with no line terminator.
    +
  • + +
    googleapiclient.schema._SchemaToStruct.emitEnd
    +
    googleapiclient.schema._SchemaToStruct.html#emitEnd
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Add text and comment to the output with line terminator.
    +
  • + +
    googleapiclient.schema._SchemaToStruct.indent
    +
    googleapiclient.schema._SchemaToStruct.html#indent
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Increase indentation level.
    +
  • + +
    googleapiclient.schema._SchemaToStruct.undent
    +
    googleapiclient.schema._SchemaToStruct.html#undent
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Decrease indentation level.
    +
  • + +
    googleapiclient.schema._SchemaToStruct._to_str_impl
    +
    googleapiclient.schema._SchemaToStruct.html#_to_str_impl
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Prototype object based on the schema, in Python code with comments.
    +
  • + +
    googleapiclient.schema._SchemaToStruct.to_str
    +
    googleapiclient.schema._SchemaToStruct.html#to_str
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Prototype object based on the schema, in Python code with comments.
    +
  • + +
    googleapiclient.discovery.logger
    +
    googleapiclient.discovery.html#logger
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.URITEMPLATE
    +
    googleapiclient.discovery.html#URITEMPLATE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.VARNAME
    +
    googleapiclient.discovery.html#VARNAME
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.DISCOVERY_URI
    +
    googleapiclient.discovery.html#DISCOVERY_URI
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.V2_DISCOVERY_URI
    +
    googleapiclient.discovery.html#V2_DISCOVERY_URI
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.DEFAULT_METHOD_DOC
    +
    googleapiclient.discovery.html#DEFAULT_METHOD_DOC
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.HTTP_PAYLOAD_METHODS
    +
    googleapiclient.discovery.html#HTTP_PAYLOAD_METHODS
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS
    +
    googleapiclient.discovery.html#_MEDIA_SIZE_BIT_SHIFTS
    +
    Attribute
    +
    Constant
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE
    +
    googleapiclient.discovery.html#BODY_PARAMETER_DEFAULT_VALUE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE
    +
    googleapiclient.discovery.html#MEDIA_BODY_PARAMETER_DEFAULT_VALUE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE
    +
    googleapiclient.discovery.html#MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery._PAGE_TOKEN_NAMES
    +
    googleapiclient.discovery.html#_PAGE_TOKEN_NAMES
    +
    Attribute
    +
    Constant
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE
    +
    googleapiclient.discovery.html#GOOGLE_API_USE_CLIENT_CERTIFICATE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT
    +
    googleapiclient.discovery.html#GOOGLE_API_USE_MTLS_ENDPOINT
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN
    +
    googleapiclient.discovery.html#GOOGLE_CLOUD_UNIVERSE_DOMAIN
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.DEFAULT_UNIVERSE
    +
    googleapiclient.discovery.html#DEFAULT_UNIVERSE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.STACK_QUERY_PARAMETERS
    +
    googleapiclient.discovery.html#STACK_QUERY_PARAMETERS
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE
    +
    googleapiclient.discovery.html#STACK_QUERY_PARAMETER_DEFAULT_VALUE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.APICoreVersionError
    +
    googleapiclient.discovery.APICoreVersionError.html
    +
    Class
    +
    Exception
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.APICoreVersionError.__init__
    +
    googleapiclient.discovery.APICoreVersionError.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.RESERVED_WORDS
    +
    googleapiclient.discovery.html#RESERVED_WORDS
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery._BytesGenerator
    +
    googleapiclient.discovery._BytesGenerator.html
    +
    Class
    +
    Class
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.fix_method_name
    +
    googleapiclient.discovery.html#fix_method_name
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Fix method names to avoid '$' characters and reserved word conflicts.
    +
  • + +
    googleapiclient.discovery.key2param
    +
    googleapiclient.discovery.html#key2param
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Converts key names into parameter names.
    +
  • + +
    googleapiclient.discovery.build
    +
    googleapiclient.discovery.html#build
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Construct a Resource for interacting with an API.
    +
  • + +
    googleapiclient.discovery._discovery_service_uri_options
    +
    googleapiclient.discovery.html#_discovery_service_uri_options
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Returns Discovery URIs to be used for attempting to build the API Resource.
    +
  • + +
    googleapiclient.discovery._retrieve_discovery_doc
    +
    googleapiclient.discovery.html#_retrieve_discovery_doc
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Retrieves the discovery_doc from cache or the internet.
    +
  • + +
    googleapiclient.discovery._check_api_core_compatible_with_credentials_universe
    +
    googleapiclient.discovery.html#_check_api_core_compatible_with_credentials_universe
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.build_from_document
    +
    googleapiclient.discovery.html#build_from_document
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Create a Resource for interacting with an API.
    +
  • + +
    googleapiclient.discovery._cast
    +
    googleapiclient.discovery.html#_cast
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Convert value to a string based on JSON Schema type.
    +
  • + +
    googleapiclient.discovery._media_size_to_long
    +
    googleapiclient.discovery.html#_media_size_to_long
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Convert a string media size, such as 10GB or 3TB into an integer.
    +
  • + +
    googleapiclient.discovery._media_path_url_from_info
    +
    googleapiclient.discovery.html#_media_path_url_from_info
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Creates an absolute media path URL.
    +
  • + +
    googleapiclient.discovery._fix_up_parameters
    +
    googleapiclient.discovery.html#_fix_up_parameters
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Updates parameters of an API method with values specific to this library.
    +
  • + +
    googleapiclient.discovery._fix_up_media_upload
    +
    googleapiclient.discovery.html#_fix_up_media_upload
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Adds 'media_body' and 'media_mime_type' parameters if supported by method.
    +
  • + +
    googleapiclient.discovery._fix_up_method_description
    +
    googleapiclient.discovery.html#_fix_up_method_description
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Updates a method description in a discovery document.
    +
  • + +
    googleapiclient.discovery._fix_up_media_path_base_url
    +
    googleapiclient.discovery.html#_fix_up_media_path_base_url
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Update the media upload base url if its netloc doesn't match base url netloc.
    +
  • + +
    googleapiclient.discovery._urljoin
    +
    googleapiclient.discovery.html#_urljoin
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Custom urljoin replacement supporting : before / in url.
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters
    +
    googleapiclient.discovery.ResourceMethodParameters.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    Represents the parameters associated with a method.
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.__init__
    +
    googleapiclient.discovery.ResourceMethodParameters.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor for ResourceMethodParameters.
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.argmap
    +
    googleapiclient.discovery.ResourceMethodParameters.html#argmap
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.required_params
    +
    googleapiclient.discovery.ResourceMethodParameters.html#required_params
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.repeated_params
    +
    googleapiclient.discovery.ResourceMethodParameters.html#repeated_params
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.pattern_params
    +
    googleapiclient.discovery.ResourceMethodParameters.html#pattern_params
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.query_params
    +
    googleapiclient.discovery.ResourceMethodParameters.html#query_params
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.path_params
    +
    googleapiclient.discovery.ResourceMethodParameters.html#path_params
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.param_types
    +
    googleapiclient.discovery.ResourceMethodParameters.html#param_types
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.enum_params
    +
    googleapiclient.discovery.ResourceMethodParameters.html#enum_params
    +
    Attribute
    +
    Instance Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.ResourceMethodParameters.set_parameters
    +
    googleapiclient.discovery.ResourceMethodParameters.html#set_parameters
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Populates maps and lists based on method description.
    +
  • + +
    googleapiclient.discovery.createMethod
    +
    googleapiclient.discovery.html#createMethod
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Creates a method for attaching to a Resource.
    +
  • + +
    googleapiclient.discovery.createNextMethod
    +
    googleapiclient.discovery.html#createNextMethod
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Creates any _next methods for attaching to a Resource.
    +
  • + +
    googleapiclient.discovery.Resource
    +
    googleapiclient.discovery.Resource.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A class for interacting with a resource.
    +
  • + +
    googleapiclient.discovery.Resource.__init__
    +
    googleapiclient.discovery.Resource.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Build a Resource from the API description.
    +
  • + +
    googleapiclient.discovery.Resource._dynamic_attrs
    +
    googleapiclient.discovery.Resource.html#_dynamic_attrs
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._http
    +
    googleapiclient.discovery.Resource.html#_http
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._baseUrl
    +
    googleapiclient.discovery.Resource.html#_baseUrl
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._model
    +
    googleapiclient.discovery.Resource.html#_model
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._developerKey
    +
    googleapiclient.discovery.Resource.html#_developerKey
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._requestBuilder
    +
    googleapiclient.discovery.Resource.html#_requestBuilder
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._resourceDesc
    +
    googleapiclient.discovery.Resource.html#_resourceDesc
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._rootDesc
    +
    googleapiclient.discovery.Resource.html#_rootDesc
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._schema
    +
    googleapiclient.discovery.Resource.html#_schema
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._universe_domain
    +
    googleapiclient.discovery.Resource.html#_universe_domain
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._credentials_validated
    +
    googleapiclient.discovery.Resource.html#_credentials_validated
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._set_dynamic_attr
    +
    googleapiclient.discovery.Resource.html#_set_dynamic_attr
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Sets an instance attribute and tracks it in a list of dynamic attributes.
    +
  • + +
    googleapiclient.discovery.Resource.__getstate__
    +
    googleapiclient.discovery.Resource.html#__getstate__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Trim the state down to something that can be pickled.
    +
  • + +
    googleapiclient.discovery.Resource.__setstate__
    +
    googleapiclient.discovery.Resource.html#__setstate__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Reconstitute the state of the object from being pickled.
    +
  • + +
    googleapiclient.discovery.Resource.__enter__
    +
    googleapiclient.discovery.Resource.html#__enter__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource.__exit__
    +
    googleapiclient.discovery.Resource.html#__exit__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource.close
    +
    googleapiclient.discovery.Resource.html#close
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Close httplib2 connections.
    +
  • + +
    googleapiclient.discovery.Resource._set_service_methods
    +
    googleapiclient.discovery.Resource.html#_set_service_methods
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._add_basic_methods
    +
    googleapiclient.discovery.Resource.html#_add_basic_methods
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._add_nested_resources
    +
    googleapiclient.discovery.Resource.html#_add_nested_resources
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._add_next_methods
    +
    googleapiclient.discovery.Resource.html#_add_next_methods
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery.Resource._validate_credentials
    +
    googleapiclient.discovery.Resource.html#_validate_credentials
    +
    Function
    +
    Method
    +
    PRIVATE
    +
    Validates client's and credentials' universe domains are consistent.
    +
  • + +
    googleapiclient.discovery._findPageTokenName
    +
    googleapiclient.discovery.html#_findPageTokenName
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Search field names for one like a page token.
    +
  • + +
    googleapiclient.discovery._methodProperties
    +
    googleapiclient.discovery.html#_methodProperties
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Get properties of a field in a method description.
    +
  • + +
    googleapiclient.discovery_cache.LOGGER
    +
    googleapiclient.discovery_cache.html#LOGGER
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE
    +
    googleapiclient.discovery_cache.html#DISCOVERY_DOC_MAX_AGE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.DISCOVERY_DOC_DIR
    +
    googleapiclient.discovery_cache.html#DISCOVERY_DOC_DIR
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.autodetect
    +
    googleapiclient.discovery_cache.html#autodetect
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Detects an appropriate cache module and returns it.
    +
  • + +
    googleapiclient.discovery_cache.get_static_doc
    +
    googleapiclient.discovery_cache.html#get_static_doc
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    Retrieves the discovery document from the directory defined in DISCOVERY_DOC_DIR corresponding to the serviceName and version provided.
    +
  • + +
    googleapiclient.discovery_cache.base.Cache
    +
    googleapiclient.discovery_cache.base.Cache.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A base abstract cache class.
    +
  • + +
    googleapiclient.discovery_cache.base.Cache.get
    +
    googleapiclient.discovery_cache.base.Cache.html#get
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Gets the content from the memcache with a given key.
    +
  • + +
    googleapiclient.discovery_cache.base.Cache.set
    +
    googleapiclient.discovery_cache.base.Cache.html#set
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Sets the given key and content in the cache.
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.LOGGER
    +
    googleapiclient.discovery_cache.appengine_memcache.html#LOGGER
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.NAMESPACE
    +
    googleapiclient.discovery_cache.appengine_memcache.html#NAMESPACE
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.Cache
    +
    googleapiclient.discovery_cache.appengine_memcache.Cache.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A cache with app engine memcache API.
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.Cache.__init__
    +
    googleapiclient.discovery_cache.appengine_memcache.Cache.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.Cache._max_age
    +
    googleapiclient.discovery_cache.appengine_memcache.Cache.html#_max_age
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.Cache.get
    +
    googleapiclient.discovery_cache.appengine_memcache.Cache.html#get
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Gets the content from the memcache with a given key.
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.Cache.set
    +
    googleapiclient.discovery_cache.appengine_memcache.Cache.html#set
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Sets the given key and content in the cache.
    +
  • + +
    googleapiclient.discovery_cache.appengine_memcache.cache
    +
    googleapiclient.discovery_cache.appengine_memcache.html#cache
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache.LOGGER
    +
    googleapiclient.discovery_cache.file_cache.html#LOGGER
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache.FILENAME
    +
    googleapiclient.discovery_cache.file_cache.html#FILENAME
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache.EPOCH
    +
    googleapiclient.discovery_cache.file_cache.html#EPOCH
    +
    Attribute
    +
    Constant
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache._to_timestamp
    +
    googleapiclient.discovery_cache.file_cache.html#_to_timestamp
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache._read_or_initialize_cache
    +
    googleapiclient.discovery_cache.file_cache.html#_read_or_initialize_cache
    +
    Function
    +
    Function
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache.Cache
    +
    googleapiclient.discovery_cache.file_cache.Cache.html
    +
    Class
    +
    Class
    +
    PUBLIC
    +
    A file based cache for the discovery documents.
    +
  • + +
    googleapiclient.discovery_cache.file_cache.Cache.__init__
    +
    googleapiclient.discovery_cache.file_cache.Cache.html#__init__
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Constructor.
    +
  • + +
    googleapiclient.discovery_cache.file_cache.Cache._max_age
    +
    googleapiclient.discovery_cache.file_cache.Cache.html#_max_age
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache.Cache._file
    +
    googleapiclient.discovery_cache.file_cache.Cache.html#_file
    +
    Attribute
    +
    Instance Variable
    +
    PRIVATE
    +
    Undocumented
    +
  • + +
    googleapiclient.discovery_cache.file_cache.Cache.get
    +
    googleapiclient.discovery_cache.file_cache.Cache.html#get
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Gets the content from the memcache with a given key.
    +
  • + +
    googleapiclient.discovery_cache.file_cache.Cache.set
    +
    googleapiclient.discovery_cache.file_cache.Cache.html#set
    +
    Function
    +
    Method
    +
    PUBLIC
    +
    Sets the given key and content in the cache.
    +
  • + +
    googleapiclient.discovery_cache.file_cache.cache
    +
    googleapiclient.discovery_cache.file_cache.html#cache
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.sample_tools.__author__
    +
    googleapiclient.sample_tools.html#__author__
    +
    Attribute
    +
    Variable
    +
    PUBLIC
    +
    Undocumented
    +
  • + +
    googleapiclient.sample_tools.init
    +
    googleapiclient.sample_tools.html#init
    +
    Function
    +
    Function
    +
    PUBLIC
    +
    A common initialization routine for samples.
    +
  • +
+
+ + \ No newline at end of file diff --git a/docs/pydoc/apidocs.css b/docs/pydoc/apidocs.css new file mode 100644 index 00000000000..537c3ba5cc9 --- /dev/null +++ b/docs/pydoc/apidocs.css @@ -0,0 +1,1166 @@ +body { + display: flex; + flex-direction: column; + min-height: 100vh; + overflow-y: scroll; +} + +.container-fluid{ + max-width: 1380px; + width: 100%; + flex: auto; +} + +nav.navbar { + width:100%; + margin-bottom: 0; +} + +nav.mainnavbar > div.container-fluid { + display: flex; + flex-wrap: wrap; +} + +nav div.layoutOptions { + display: flex; + flex-wrap: wrap; + align-items: end; + margin-left: auto; + padding-top:11px; +} + +nav.navbar .navbar-header { + float: none; + width: 100%; + position: relative; +} + +.page-header { + margin-top: 22px; + top: 0; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: baseline; + background-color: #fff; + margin-bottom: 3px; + border-bottom: 0; + box-shadow: 0 0 8px 8px #fff; + z-index: 99; +} + +.navbar-brand { + padding: 0; + margin: 0; + height: auto; +} + +.navbar-brand a, .navbar-brand span { + color:#777777; + padding: 15px; + display: inline-block; +} + +.navbar-brand *:first-child { + padding-right: 0; +} + +.navbar-brand *:last-child { + padding-left: 0; + padding-right: 0; +} + +.navbar-brand a:hover { + color: #444444; + text-decoration: none; +} + +a.projecthome:hover { + color: #23527c; +} + +.navlinks { + margin: 0; + display: flex; + flex-wrap: wrap; + align-items: baseline; +} + +.navlinks > a { + padding: 10px 0 10px 15px; +} + + +.navlinks > a:hover { + background-color: transparent; + text-decoration: none; +} + +.page-header h1 { + margin: 0; +} + +.categoryHeader { + font-size: 24px; + color: #777; + margin-bottom: 1.8em; +} + +/* Footer */ + +footer.navbar { + margin: auto 0 0 0; + padding-top: 15px; + padding-bottom: 15px; + background-color: #fff; + border-width: 1px 0 0 0; + border-radius: 0; + text-align: center; +} + +a[name] { + position: relative; + bottom: 10px; + font-size: 0; +} + +ul { + margin-top: 10px; + margin-left: 10px; + padding-left: 10px; +} + +li { + padding-top: 5px; + padding-bottom: 5px; +} + +#summaryTree .compact-modules { + list-style: none; + line-height: 1.8em; +} + +li a { + text-decoration: none; +} + +ul ul { + border-left-color: #e1f5fe; + border-left-width: 1px; + border-left-style: solid; +} + +ul ul ul { + border-left-color: #b3e5fc; +} + +ul ul ul ul { + border-left-color: #81d4fa; +} + +ul ul ul ul ul { + border-left-color: #4fc3f7; +} + +ul ul ul ul ul ul { + border-left-color: #29b6f6; +} + +ul ul ul ul ul ul ul { + border-left-color: #03a9f4; +} + +ul ul ul ul ul ul ul { + border-left-color: #039be5; +} + +.pre { + white-space: pre; +} + +.undocumented { + font-style: italic; + color: #9e9e9e; +} + +.functionBody p { + margin: 0; + padding: 8px 0 6px; +} + +#splitTables > p { + margin-bottom: 5px; +} + +#splitTables > table { + margin-bottom: 20px; + width: 100%; + border: 0; +} + +#splitTables > table tr { + border-bottom-color: #eee; + border-bottom-width: 1px; + border-bottom-style: solid; + width: 100%; +} + +#splitTables > table tr td { + padding: 5px; + border-left-color: #eee; + border-left-width: 1px; + border-left-style: solid; +} + +.fieldTable { + width: 100%; + border: 0; +} + +/* Arg name */ +.fieldArg { + margin-right: 7px; +} + +.fieldArg:before { + margin-right: 6px; + content: "\2022"; + font-size: 14px; +} + +.fieldTable tr:not(.fieldStart) td:first-child, +.valueTable tr:not(.fieldStart) td:first-child{ + padding: 3px 4px 3px 15px; +} + +.fieldTable tr td { + padding: 2px; +} + + +/* Argument name + type column table */ +.fieldTable tr td.fieldArgContainer { + width: 325px; + word-break: break-word; +} + +/* parameters names in parameters table */ +.fieldTable tr td.fieldArgContainer > .fieldArg { + float: left; + margin-left: -5px; +} + +/* parameters types (in parameters table) */ +.fieldTable tr td.fieldArgContainer > code { + /* we don't want word break for the types because we already add tags inside the type HTML, and that should suffice. */ + word-break: normal; + display: inline; + flex-wrap: wrap; +} + +/* Argument description column or return value desc, etc */ +.fieldTable tr td::nth-child(2) { + padding-left: 10px; +} + +/* Kind column table */ +#splitTables > table tr td:first-child { + /* border-left: none; */ + width: 150px; +} + +/* Attr name column table */ +#splitTables > table tr td:nth-child(2) { + width: 240px; + word-break: break-word; +} + +/* Fix proportion size of summary table columns */ +#splitTables > table { + table-layout: fixed; +} + +/* For smaller displays, i.e. half screen */ +@media only screen and (max-width: 1100px) { + + /* Attr name column table */ + #splitTables > table tr td:nth-child(2) { + width: 200px; + } + + /* Summary column table */ + #splitTables > table tr td:nth-child(3) { + width: auto; + } + +} + +@media only screen and (max-width: 820px) { + + /* Kind column table */ + #splitTables > table tr td:first-child { + border-left: none; + width: 20%; + } + + /* Attr name column table */ + #splitTables > table tr td:nth-child(2) { + width: 160px; + } + /* Argument name + type column table */ + .fieldTable tr td.fieldArgContainer { + width: 170px; + } + .fieldTable { + table-layout: fixed; + } +} + +@media only screen and (max-width: 450px) { + /* Attr name column table */ + #splitTables > table tr td:nth-child(2) { + width: 100px; + } + /* Argument name + type column table */ + .fieldTable tr td.fieldArgContainer { + width: 125px; + } +} + +table .package { + background-color: #fff3e0; +} + +table .module { + background-color: #fff8e1; +} + +table .class, table .classvariable, table .baseclassvariable, table .exception { + background-color: #fffde7; +} + +table .instancevariable, table .baseinstancevariable, table .variable, table .attribute, table .property { + background-color: #f3e5f5; +} + +table .interface { + background-color: #fbe9e7; +} + +table .method, table .function, table .basemethod, table .baseclassmethod, table .classmethod { + background-color: #f1f8e9; +} + +table .private { + background-color: #f1f1f1; +} + +.fieldName { + font-weight: bold; +} + + +#childList > div { + margin: 10px; + padding: 10px; + padding-bottom: 5px; + display: block; + border-left-color: #03a9f4; + border-left-width: 1px; + border-left-style: solid; + background: #fafafa; +} + +.functionBody { + margin-left: 5px; +} + +.functionBody > #part { + font-style: italic; +} + +.functionBody > #part > a { + text-decoration: none; +} + +.functionBody .interfaceinfo { + font-style: italic; + margin-bottom: 3px; + margin-top: 3px; +} + +.functionBody > .undocumented { + + margin-top: 6px; + margin-bottom: 6px; +} + +/* Use a slightly more compact presentation for signatures */ +.function-signature { + word-spacing: -5px; +} + +.function-signature code { + padding: 2px 1px; +} + +/* +- Links to class/function/etc names are nested like this: + label + +- 'functionHeader' is used for lines like `def func():` and `var =` +*/ +code, .rst-literal, .pre, #childList > div .functionHeader, +#splitTables > table tr td:nth-child(2), .fieldArg { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code, #childList > div .functionHeader, .fieldArg { + color: #222222; +} + +/* Intersphinx links are not red, but simply blue */ +a.intersphinx-link { + color: #03458a; + background-color: #f0ebe694; +} + +/* Links to objects within the system use this special css. +This applies to inline docstring content marked up as code, + for example L{foo} in epytext or `bar` in restructuredtext, + but also to links that are present in summary tables. +*/ +a.internal-link { + color:#c7254e; + background-color:#f9f2f4; +} + +/* top navagation bar */ +.page-header > h1 { + margin-top: 0; +} +.page-header > h1 > code { + color: #971c3a; +} + +/* Bootstart 3.x sets font-size to 17.5px which just + looks ridiculously large, so we unset it here. +*/ +blockquote { + font-size: unset; +} + +/* +This defines the code style, it's black on light gray. +It also overwrite the default values inherited from bootstrap min +*/ +code, .rst-literal { + padding:2px 4px; + background-color: #f4f4f4; + border-radius:4px +} + + +a.sourceLink { + color: #337ab7!important; + font-weight: normal; + background-color: transparent!important; +} + + + + +.moduleDocstring { + margin: 20px; +} + +#partOf { + margin-top: -13px; + margin-bottom: 19px; +} + +.fromInitPy { + font-style: italic; +} + +pre { + padding-left: 0; +} + +/* Private stuff */ + +body.private-hidden #splitTables .private, +body.private-hidden #childList .private, +body.private-hidden #summaryTree .private, +body.private-hidden nav.sidebar .private, +body.private-hidden #search-results .private, +body.private-hidden .container > .private { + display: none!important; +} + +/* Show private and other options */ + +#showPrivate:hover { + text-decoration: none; +} + +#showPrivate button { + padding: 5px; + padding-bottom: 15px; +} + +#showPrivate button:hover { + text-decoration: none; +} + +#current-docs-container { + font-style: italic; + padding-top: 11px; +} + +/* Deprecation stuff */ + +.deprecationNotice { + margin: 10px; +} + +/* Syntax highlighting for source code */ + +.py-string { + color: #337ab7; +} +.py-comment { + color: #309078; + font-style: italic; +} +.py-keyword { + font-weight: bold; +} +.py-defname { + color: #a947b8; + font-weight: bold; +} +.py-builtin { + color: #fc7844; + font-weight: bold; +} + +/* Doctest */ + +pre.py-doctest { + padding: .5em; +} +.py-prompt, .py-more { + color: #a8a8a8; +} +.py-output { + color: #c7254e; +} + +/* Admonitions */ + +div.rst-admonition p.rst-admonition-title:after { + content: ":"; +} + +div.rst-admonition p.rst-admonition-title { + margin: 0; + padding: 0.1em 0 0.35em 0em; + font-weight: bold; +} + +div.rst-admonition p.rst-admonition-title { + color: #333333; +} + +div.rst-admonition { + padding: 8px; + margin-bottom: 20px; + background-color: #EEE; + border: 1px solid #CCC; + border-radius: 4px; +} + +div.rst-warning, div.rst-attention, div.rst-danger, div.rst-error, div.rst-caution { + background-color: #ffcf9cb0; + border: 1px solid #ffbbaa; +} + +div.rst-danger p.rst-admonition-title, div.rst-error p.rst-admonition-title, div.rst-caution p.rst-admonition-title { + color: #b94a48; +} + +div.rst-tip p.rst-admonition-title, div.rst-hint p.rst-admonition-title, div.rst-important p.rst-admonition-title{ + color: #3a87ad; +} + +div.rst-tip, div.rst-hint, div.rst-important { + background-color: #d9edf7; + border-color: #bce8f1; +} + +.sidebarcontainer { + width: 297px; /* Set the width of the sidebar: 290px + 2px for the border + 5px for the padding */ + max-height: 100vh; /* Full-height: remove this if you want "auto" height */ + float: left; + padding: 10px 0px 10px 5px; + margin:24px 20px 20px 0; + border: 1px solid; + border-radius: 4px; + display: flex; + position: sticky; + top: 0; + overflow-wrap: break-word; + overflow-x: none; + overflow-y: scroll; + background-color: #fbfbfb; + border-color: #e7e7e7; + scrollbar-width: thin; + scrollbar-color: rgb(194,194,194) rgb(249,249,249); +} + +.sidebarcontainer::-webkit-scrollbar { + width: 10px; /* Scrollbar width on Chromium-based browsers */ + border: solid 1px rgb(229,229,229); + background-color: rgb(249,249,249); +} + +.sidebarcontainer::-webkit-scrollbar:horizontal { + display: none; +} + +.sidebarcontainer::-webkit-scrollbar-track { + box-shadow: inset 0 0 5px 5px transparent; + border: solid 1px transparent; +} + +.sidebarcontainer::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 5px 5px rgb(194,194,194); + border: solid 2px transparent; + border-radius: 5px; +} + + +/* The sidebar menu */ + +.sidebar { + /*! padding-bottom: 10px; */ + width: 100%; +} + +.sidebar > div { + width: 100%; + padding-top: 7px; +} + +.sidebar > div:first-child { + padding-top: 0; + margin-top: -4px; +} + +.sidebar > div:last-child { + padding-bottom: 15px; +} + +.sidebar > div:nth-child(2) { + background-color: RGBA(0,10,10, 0.03); + box-shadow: -5px 5px 0px 10px RGBA(0,10,10, 0.03); + margin-top: 20px; +} + +.sidebar ul { + display: block; + margin: 0 0 5px 0; + padding: 0 0 0 10px; + width: 100%; +} + +.sidebar li { + width: 100%; + padding: 0; + display: flex; + overflow: hidden; + flex-wrap: wrap; + word-break: break-word; +} + +.sidebar li p { + margin: 0; + width: 100%; +} + +.sidebar li ul { + margin: 0 0 2px 0; + padding: 0 0 0 7px; + border: 0; +} + +/* Generated TOC */ +.sidebar ul.rst-simple, .sidebar ul.rst-simple ul { + margin: 0 0 5px 0; + padding: 0 0 0 15px; + margin: 0; + border-left: 1px solid #e7e7e7; +} + +.sidebar li a { + display: inline-block; + width: 100%; + padding-top: 3px; + padding-bottom: 3px; + color: #414141; +} + +.sidebar li a:hover { + color: #C7354E; +} + +.sidebar > div ul > li > .itemName > code, .sidebar > div ul > li > .itemName > code > a { + background-color: transparent; +} + +.sidebar ul > li > .itemName { + width: 100%; +} + +.sidebar > div ul > li > .itemName > code { + padding: 0; + width: 100%; +} + +.sidebar .thingTitle { + margin-bottom: 7px; + margin-top: 7px; + overflow: hidden; + color: #555; + font-size: 18px; + display: flex; + flex-wrap: wrap; + align-items: baseline; + word-break: break-word; + padding: 0 15px 3px 1px; + box-shadow: -10px 12px 0px -11px #888; +} + +.sidebar .thingTitle > span { + margin-right: 7px; +} + +.sidebar .thingTitle > code { + font-size: 16px; + color: #555; + background-color: transparent; + padding-left: 0; + padding-right: 0; + display: flex; +} + +.sidebar .thingTitle > code a { + background-color: transparent; +} + +.sidebar .childrenKindTitle { + color: #414141; + margin-left: 4px; + margin-bottom: 3px; + font-size: 15px; + /*! border-bottom: solid 1px #9d9d9d; */ + box-shadow: -11px 11px 0px -10px #aeaeaec4; + font-style: italic; +} + + +/* Style page content */ +#main { + + /* Same as the width of the sidebar + 20px*/ + display: flex; + flex-direction: column; +} + +/* Special case for the --nosidebar option */ +.nosidebar { + margin-left: 10px!important; +} + +/* For bigger displays, i.e. full screen */ +@media only screen and (min-width: 1330px) { + .sidebarcontainer { + width: 317px; /* Set the width of the sidebar: 310px + 2px for the border + 5px for the scrollbar */ + } +} + +/* For smaller displays, i.e. half screen */ +@media only screen and (max-width: 1100px) { + .sidebarcontainer { + width: 257px; /* Set the width of the sidebar: 250px + 2px for the border + 5px for the scrollbar */ + } +} + +/* For smaller displays mobile phone */ +@media only screen and (max-width: 900px) { + .sidebarcontainer { + width: 207px; /* Set the width of the sidebar: 200px + 2px for the border + 5px for the scrollbar */ + } +} + + +nav.foot { + margin-top: 20px; + background-color: #fff; + text-align: center; + border-width: 1px 0 0 0; + border-radius: 0; +} + +nav.foot address { + padding-top: 15px; + text-align: center; +} + +#collapseSideBar { + border-radius: 4px; + color: rgb(68, 68, 68); + font-size: 1.2em; + display: block; + float: left; + width: 0; + padding: 0; + margin: 0; + position: sticky; + top: 0; + right: 0; +} + +#collapseSideBar > a:hover{ + background-color: #e1e1e1; + text-decoration: none; +} + +#collapseSideBar > a { + height: 42px; + width: 15px; + font-size: 1.2em; + color: #333; + padding: 1px; + background-color: #e7e7e7; + border-radius: 0 4px 0 4px; + margin: -11px 0 0 -15px; + text-align: center; + display: flex; + align-items: center; + justify-content: center; + border: solid 1px #e7e7e7; +} + +/* collapsed */ + +body.sidebar-collapsed .sidebar { + display: none; +} + +body.sidebar-collapsed .sidebarcontainer { + border: none; + padding: 0; + width: 5px; + overflow: visible; + background-color: transparent; +} + +body.sidebar-collapsed #main { + margin: 0 0 0 25px!important; +} + +body.sidebar-collapsed #collapseSideBar { + left: 1px; +} + +body.sidebar-collapsed #collapseSideBar > a { + margin-top: -1px; + margin-left: 0; + border-radius: 4px; + background-color: #f8f8f8; +} + +body.sidebar-collapsed #collapseSideBar > a:hover { + background-color: #e7e7e7; +} + +/* On smaller screens, where width is less than 650px, simply hide sidebar */ +@media screen and (max-width: 650px) { + .sidebar { + display: none; + } + #main { + margin: 0; + } + .sidebarcontainer { + display: none!important; + } + #collapseSideBar { + display: none; + } +} + +/* Style for expandable content */ + +input.tocChildrenToggle { + display: none; + } + +.lbl-toggle { + display: block; + width: 18px; + font-weight: bold; + font-family: monospace; + font-size: 12px; + text-transform: uppercase; + text-align: center; + color: #333; + /* background: #0069ff; */ + cursor: pointer; + border-radius: 7px; + transition: all 0.1s ease-out; + margin: 0 0 0 0; + padding: 5px 2px 0 2px; + color: rgb(163, 163, 163); + position: absolute; +} + +.lbl-toggle::before { + content: " "; + display: inline-block; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid currentColor; + vertical-align: middle; + margin-right: 0.7rem; + transform: translateY(-2px); + } + +.lbl-toggle:hover { + color: #333; + } + +.tocChildrenToggle:checked + .lbl-toggle::before { + transform: rotate(90deg) translateX(-3px); + } + +.expandableContent { + height: 0px; + overflow: hidden; + flex-basis: 100%; + padding: 0 0 0 8px; + margin-left: 5px; + border-left: 1px solid #e7e7e7; +} + +.expandableContent > div { + margin-top: 5px; +} + +.tocChildrenToggle:checked ~ .expandableContent { + height: auto; +} + +.tocChildrenToggle:not(:checked) ~ .expandableContent .lbl-toggle { + position: relative; +} + +.tocChildrenToggle:checked + .lbl-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + color: #333; + } + +.expandableContent .childrenKindTitle { + font-size: 14px; + /* margin-left: 5px; */ +} + +.expandableItem { + display: flex; + flex-wrap: wrap; +} + +.expandableItem > code { + width: calc(100% - 20px)!important; + margin-left: 18px; +} + +/* Special cases to display the current object name in the sidebar */ +.thisobject a { + font-weight: bold; +} +.expandableItem label.notExpandable { + cursor: not-allowed; +} +/* Version modified style */ +.rst-versionmodified { + display: block; + font-weight: bold; +} + +/* Search */ + +/* clears the ‘X’ from search input for Chrome */ +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-results-button, +input[type="search"]::-webkit-search-results-decoration { display: none; } + +.navlinks > #search-box-container { + padding: 0 0 8px 15px; + align-self: flex-end; + margin-left: auto; + display: none; +} + +#search-results { + margin-top: 5px; +} + +#search-results tr{ + display:block; + border-bottom: 0.5px solid #CCC; +} + +#search-results tr { + border-bottom: 1px #ddd solid; + padding-bottom: 1px; +} + +#search-results tr td { + border-left: 1px #ddd solid; + padding: 2px; +} + +#search-results tr td:first-child { + width: 120px; +} + +#search-results tr:last-child{ + border-bottom: none; +} + +#search-results tr article, #search-results tr article *{ + display:inline; +} + +#search-results section { + padding: 5px 0 0 8px; +} + +.search-help-hidden #search-help-box{ + display: none!important; +} + +#search-help-button{ + background-color: #e6e6e6; +} + +.search-help-hidden #search-help-button{ + background-color: rgb(255, 255, 255); +} + +.search-help-hidden #search-help-button:hover { + background-color: #e6e6e6; +} + +#search-results-container { + padding: 10px; + width: 100%; + max-width: 850px; + max-height: calc(100vh - 70px); + right: 0; + position: absolute; + overflow-x: hidden; + overflow-y: scroll; + background-color: #fbfbfb; + border: 1px solid #CCC; + border-radius: 4px; + z-index: 500; + margin-top: -9px; + word-break: break-word; +} + +#search-status{ + padding-bottom:2px; +} + +#search-buttons{ + float: right; +} + +#search-buttons > span { + padding: 0.3em 0.4em 0.4em; +} + +#toggle-search-in-docstrings-checkbox{ + margin-top: -2.5px; + cursor: pointer; +} + +/* Constant values repr */ +pre.constant-value { padding: .5em; } +.rst-variable-linewrap { color: #604000; font-weight: bold; } +.rst-variable-ellipsis { color: #604000; font-weight: bold; } +.rst-variable-quote { color: #604000; font-weight: bold; } + +/* Those two are currently not used */ +.rst-variable-group { color: #000000; } +.rst-variable-op { color: #000000; } + +.rst-variable-string { color: #337ab7; } +.rst-variable-unknown { color: #a00000; font-weight: bold; } +.rst-re { color: #000000; } +.rst-re-char { color: #337ab7; } +.rst-re-op { color: #fc7844; } +.rst-re-group { color: #309078; } +.rst-re-ref { color: #890000; } + +/* highlight the targeted item with "#" */ +#childList a:target ~ .functionHeader, #childList a:target ~ .functionBody{ + background-color: rgb(253, 255, 223); +} +#childList a:target ~ .functionHeader{ + box-shadow: 0px 0px 0px 10px rgb(253, 255, 223); +} +#childList a:target ~ .functionBody{ + box-shadow: -2px -8px 0px 13px rgb(253 255 223); +} +/* in class hierarchy */ +#summaryTree a:target ~ div { + background-color: rgb(253, 255, 223); + box-shadow: 0px 0px 0px 7px rgb(253, 255, 223); +} +#summaryTree div { + display: inline-table; +} + +/* deprecations uses a orange text */ +.rst-deprecated > .rst-versionmodified{ + color:#aa6708; +} + +/* CSS for anchor links */ +.headerLink{ + display:none; + color:black; + float:right; + margin-left:5px; + padding-left:5px; + padding-right:5px; +} +@media (hover) { + /* See https://css-tricks.com/annoying-mobile-double-tap-link-issue/ */ + .headerLink:hover{ + text-decoration:none; + background-color: #ccc; + } + #childList > div:hover .headerLink{ + display:inline-block; + } +} +#childList a:target ~ .functionHeader .headerLink{ + display: inline-block +} diff --git a/docs/pydoc/bootstrap.min.css b/docs/pydoc/bootstrap.min.css new file mode 100644 index 00000000000..cd1c616ad86 --- /dev/null +++ b/docs/pydoc/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px)and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px)and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/docs/pydoc/classIndex.html b/docs/pydoc/classIndex.html new file mode 100644 index 00000000000..a8c407ecb6f --- /dev/null +++ b/docs/pydoc/classIndex.html @@ -0,0 +1,167 @@ + + + + + + + + Class Hierarchy + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/extra.css b/docs/pydoc/extra.css new file mode 100644 index 00000000000..e69de29bb2d diff --git a/docs/pydoc/fonts/info.svg b/docs/pydoc/fonts/info.svg new file mode 100644 index 00000000000..8f48f86cbbb --- /dev/null +++ b/docs/pydoc/fonts/info.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/docs/pydoc/fonts/x-circle.svg b/docs/pydoc/fonts/x-circle.svg new file mode 100644 index 00000000000..ce37cdc3658 --- /dev/null +++ b/docs/pydoc/fonts/x-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/docs/pydoc/fullsearchindex.json b/docs/pydoc/fullsearchindex.json new file mode 100644 index 00000000000..7842f691eb1 --- /dev/null +++ b/docs/pydoc/fullsearchindex.json @@ -0,0 +1 @@ +{"version": "2.3.9", "fields": ["name", "names", "qname", "docstring", "kind"], "fieldVectors": [["name/googleapiclient", [0, 58.09]], ["names/googleapiclient", [0, 11.944]], ["qname/googleapiclient", [0, 19.363]], ["docstring/googleapiclient", []], ["kind/googleapiclient", [1, -11.444]], ["name/googleapiclient._auth", [2, 68.257]], ["names/googleapiclient._auth", [3, 11.323]], ["qname/googleapiclient._auth", [4, 22.752]], ["docstring/googleapiclient._auth", [3, 12.025, 5, 12.683, 6, 12.683, 7, 5.85, 8, 13.565, 9, 11.061]], ["kind/googleapiclient._auth", [10, -7.558]], ["name/googleapiclient._helpers", [11, 68.257]], ["names/googleapiclient._helpers", [12, 14.034]], ["qname/googleapiclient._helpers", [13, 22.752]], ["docstring/googleapiclient._helpers", [5, 13.179, 7, 6.079, 14, 5.163, 15, 14.096, 16, 11.949]], ["kind/googleapiclient._helpers", [10, -7.558]], ["name/googleapiclient.channel", [17, 38.11]], ["names/googleapiclient.channel", [17, 7.836]], ["qname/googleapiclient.channel", [18, 22.752]], ["docstring/googleapiclient.channel", [7, 0.837, 14, 0.711, 17, 7.073, 19, 7.664, 20, 2.124, 21, 0.695, 22, 3.346, 23, 1.942, 24, 2.656, 25, 4.873, 26, 1.016, 27, 2.133, 28, 1.029, 29, 2.133, 30, 1.721, 31, 2.133, 32, 3.411, 33, 3.578, 34, 3.597, 35, 1.483, 36, 5.529, 37, 1.483, 38, 2.233, 39, 1.942, 40, 3.002, 41, 0.98, 42, 10.578, 43, 1.282, 44, 1.404, 45, 1.257, 46, 1.942, 47, 3.172, 48, 4.989, 49, 2.133, 50, 2.159, 51, 3.932, 52, 2.819, 53, 2.819, 54, 0.656, 55, 1.816, 56, 2.133, 57, 0.507, 58, 4.977, 59, 1.234, 60, 2.133, 61, 2.133, 62, 2.133, 63, 2.133, 64, 1.309, 65, 1.404, 66, 1.483, 67, 0.936, 68, 1.942, 69, 2.133, 70, 1.816, 71, 1.942, 72, 1.646, 73, 3.932, 74, 2.133, 75, 2.954, 76, 2.819, 77, 2.133, 78, 1.212, 79, 2.133, 80, 1.942, 81, 1.721, 82, 1.942, 83, 2.133, 84, 1.646, 85, 1.257, 86, 1.646, 87, 1.53, 88, 1.816, 89, 2.133, 90, 2.133, 91, 1.404, 92, 1.646, 93, 2.133, 94, 1.816, 95, 5.468, 96, 5.468, 97, 3.578, 98, 4.058, 99, 3.693, 100, 3.932, 101, 3.8, 102, 1.942, 103, 2.133, 104, 2.133]], ["kind/googleapiclient.channel", [10, -7.558]], ["name/googleapiclient.discovery", [105, 46.107]], ["names/googleapiclient.discovery", [105, 9.48]], ["qname/googleapiclient.discovery", [106, 22.752]], ["docstring/googleapiclient.discovery", [26, 8.131, 28, 8.234, 107, 13.171, 108, 8.031, 109, 9.288, 110, 12.953]], ["kind/googleapiclient.discovery", [10, -7.558]], ["name/googleapiclient.discovery_cache", [111, 68.257]], ["names/googleapiclient.discovery_cache", [105, 7.458, 112, 6.638]], ["qname/googleapiclient.discovery_cache", [113, 22.752]], ["docstring/googleapiclient.discovery_cache", [16, 12.435, 108, 7.582, 114, 8.849, 115, 7.774]], ["kind/googleapiclient.discovery_cache", [1, -11.444]], ["name/googleapiclient.discovery_cache.appengine_memcache", [116, 68.257]], ["names/googleapiclient.discovery_cache.appengine_memcache", [117, 11.041, 118, 11.041]], ["qname/googleapiclient.discovery_cache.appengine_memcache", [119, 22.752]], ["docstring/googleapiclient.discovery_cache.appengine_memcache", [26, 6.841, 91, 9.449, 108, 6.757, 114, 7.886, 115, 6.928, 120, 10.299, 121, 11.082]], ["kind/googleapiclient.discovery_cache.appengine_memcache", [10, -7.558]], ["name/googleapiclient.discovery_cache.base", [26, 32.51]], ["names/googleapiclient.discovery_cache.base", [26, 6.684]], ["qname/googleapiclient.discovery_cache.base", [122, 22.752]], ["docstring/googleapiclient.discovery_cache.base", [21, 5.043, 108, 7.285, 114, 8.503, 115, 7.47, 123, 13.179]], ["kind/googleapiclient.discovery_cache.base", [10, -7.558]], ["name/googleapiclient.discovery_cache.file_cache", [124, 68.257]], ["names/googleapiclient.discovery_cache.file_cache", [112, 6.638, 125, 5.542]], ["qname/googleapiclient.discovery_cache.file_cache", [126, 22.752]], ["docstring/googleapiclient.discovery_cache.file_cache", [26, 4.138, 36, 6.039, 108, 4.087, 114, 9.986, 115, 4.191, 125, 8.544, 127, 5.577, 128, 6.704, 129, 6.039, 130, 8.688, 131, 6.449, 132, 8.688, 133, 8.688, 134, 7.394, 135, 3.317, 136, 8.688, 137, 7.01, 138, 6.704]], ["kind/googleapiclient.discovery_cache.file_cache", [10, -7.558]], ["name/googleapiclient.errors", [139, 62.127]], ["names/googleapiclient.errors", [139, 12.774]], ["qname/googleapiclient.errors", [140, 22.752]], ["docstring/googleapiclient.errors", [109, 13.087, 125, 7.209, 141, 6.757, 142, 9.449, 143, 14.726]], ["kind/googleapiclient.errors", [10, -7.558]], ["name/googleapiclient.http", [144, 23.891]], ["names/googleapiclient.http", [144, 4.912]], ["qname/googleapiclient.http", [145, 20.709]], ["docstring/googleapiclient.http", [20, 5.85, 21, 4.922, 54, 1.806, 72, 8.354, 127, 6.95, 144, 5.291, 146, 9.214, 147, 4.81, 148, 9.855, 149, 9.214, 150, 3.526, 151, 7.764, 152, 7.314]], ["kind/googleapiclient.http", [10, -7.558]], ["name/googleapiclient.mimeparse", [153, 62.127]], ["names/googleapiclient.mimeparse", [153, 12.774]], ["qname/googleapiclient.mimeparse", [154, 22.752]], ["docstring/googleapiclient.mimeparse", [14, 1.411, 85, 4.266, 92, 3.265, 98, 5.372, 135, 1.615, 142, 2.784, 144, 1.481, 155, 8.839, 156, 6.453, 157, 4.231, 158, 3.414, 159, 3.034, 160, 3.851, 161, 3.034, 162, 5.84, 163, 5.046, 164, 3.87, 165, 6.802, 166, 3.14, 167, 3.851, 168, 4.231, 169, 4.231, 170, 4.231, 171, 3.034, 172, 4.231, 173, 4.231, 174, 4.231, 175, 4.231, 176, 3.601, 177, 3.265, 178, 3.601, 179, 4.231, 180, 4.231, 181, 6.802, 182, 9.738, 183, 3.405, 184, 3.601, 185, 3.601, 186, 3.851, 187, 3.265, 188, 4.231, 189, 3.851, 190, 4.231, 191, 3.851, 192, 3.851]], ["kind/googleapiclient.mimeparse", [10, -7.558]], ["name/googleapiclient.model", [193, 35.761]], ["names/googleapiclient.model", [193, 7.353]], ["qname/googleapiclient.model", [194, 22.752]], ["docstring/googleapiclient.model", [20, 4.799, 21, 2.893, 28, 4.285, 37, 6.174, 147, 2.827, 150, 4.27, 193, 6.87, 195, 5.35, 196, 5.844, 197, 6.174, 198, 6.593, 199, 4.399, 200, 6.001, 201, 3.987, 202, 8.883, 203, 8.883, 204, 5.34, 205, 6.37, 206, 5.572, 207, 4.399, 208, 5.452]], ["kind/googleapiclient.model", [10, -7.558]], ["name/googleapiclient.sample_tools", [209, 68.257]], ["names/googleapiclient.sample_tools", [210, 11.041, 211, 11.041]], ["qname/googleapiclient.sample_tools", [212, 22.752]], ["docstring/googleapiclient.sample_tools", [15, 11.789, 16, 9.994, 25, 9.288, 213, 9.614, 214, 15.538, 215, 11.789, 216, 12.953, 217, 10.451, 218, 9.288]], ["kind/googleapiclient.sample_tools", [10, -7.558]], ["name/googleapiclient.schema", [219, 33.353]], ["names/googleapiclient.schema", [219, 6.857]], ["qname/googleapiclient.schema", [220, 22.752]], ["docstring/googleapiclient.schema", [7, 2.053, 23, 2.658, 26, 1.391, 28, 2.523, 34, 1.921, 40, 1.603, 42, 6.676, 48, 3.281, 57, 0.695, 108, 3.341, 115, 1.409, 129, 2.03, 134, 4.451, 150, 2.313, 156, 4.856, 201, 1.31, 219, 6.283, 221, 2.485, 222, 1.508, 223, 2.253, 224, 3.357, 225, 2.03, 226, 2.094, 227, 1.578, 228, 2.92, 229, 2.92, 230, 10.072, 231, 2.658, 232, 8.652, 233, 3.246, 234, 4.673, 235, 8.652, 236, 7.103, 237, 5.23, 238, 2.92, 239, 1.427, 240, 2.92, 241, 4.76, 242, 3.441, 243, 3.75, 244, 4.035, 245, 6.981, 246, 5.23, 247, 5.23, 248, 4.22, 249, 6.465, 250, 2.92, 251, 2.658, 252, 2.92, 253, 2.92, 254, 2.485, 255, 2.485, 256, 2.356, 257, 2.92, 258, 1.553, 259, 2.356, 260, 2.658, 261, 1.326]], ["kind/googleapiclient.schema", [10, -7.558]], ["name/googleapiclient.version", [262, 38.776]], ["names/googleapiclient.version", [262, 7.973]], ["qname/googleapiclient.version", [263, 22.752]], ["docstring/googleapiclient.version", []], ["kind/googleapiclient.version", [10, -7.558]], ["name/googleapiclient._auth.HAS_GOOGLE_AUTH", [264, 34.129]], ["names/googleapiclient._auth.HAS_GOOGLE_AUTH", [3, 3.672, 265, 3.511, 266, 3.672]], ["qname/googleapiclient._auth.HAS_GOOGLE_AUTH", [267, 11.376]], ["docstring/googleapiclient._auth.HAS_GOOGLE_AUTH", []], ["kind/googleapiclient._auth.HAS_GOOGLE_AUTH", [268, -1.193]], ["name/googleapiclient._auth.HAS_OAUTH2CLIENT", [269, 34.129]], ["names/googleapiclient._auth.HAS_OAUTH2CLIENT", [8, 5.025, 265, 4.26]], ["qname/googleapiclient._auth.HAS_OAUTH2CLIENT", [270, 11.376]], ["docstring/googleapiclient._auth.HAS_OAUTH2CLIENT", []], ["kind/googleapiclient._auth.HAS_OAUTH2CLIENT", [268, -1.193]], ["name/googleapiclient._auth.credentials_from_file", [271, 34.129]], ["names/googleapiclient._auth.credentials_from_file", [125, 2.284, 272, 2.994, 273, 3.074]], ["qname/googleapiclient._auth.credentials_from_file", [274, 11.376]], ["docstring/googleapiclient._auth.credentials_from_file", [57, 1.917, 125, 4.045, 275, 5.443, 276, 6.858]], ["kind/googleapiclient._auth.credentials_from_file", [14, -2.096]], ["name/googleapiclient._auth.default_credentials", [277, 34.129]], ["names/googleapiclient._auth.default_credentials", [239, 2.698, 272, 3.632]], ["qname/googleapiclient._auth.default_credentials", [278, 11.376]], ["docstring/googleapiclient._auth.default_credentials", [57, 1.917, 218, 5.778, 239, 3.938, 275, 5.443]], ["kind/googleapiclient._auth.default_credentials", [14, -2.096]], ["name/googleapiclient._auth.with_scopes", [279, 34.129]], ["names/googleapiclient._auth.with_scopes", [280, 5.025, 281, 5.521]], ["qname/googleapiclient._auth.with_scopes", [282, 11.376]], ["docstring/googleapiclient._auth.with_scopes", [57, 1.19, 163, 2.661, 275, 6.146, 283, 8.76, 284, 4.554, 285, 1.27, 286, 4.554, 287, 4.037, 288, 4.554, 289, 5.003, 290, 5.003, 291, 5.003]], ["kind/googleapiclient._auth.with_scopes", [14, -2.096]], ["name/googleapiclient._auth.authorized_http", [292, 34.129]], ["names/googleapiclient._auth.authorized_http", [144, 1.932, 293, 5.521]], ["qname/googleapiclient._auth.authorized_http", [294, 11.376]], ["docstring/googleapiclient._auth.authorized_http", [7, 1.964, 57, 1.7, 107, 5.515, 144, 2.502, 227, 2.703, 275, 5.634, 285, 1.27, 286, 4.554, 287, 4.037, 288, 4.554, 295, 4.968, 296, 5.003, 297, 5.003]], ["kind/googleapiclient._auth.authorized_http", [14, -2.096]], ["name/googleapiclient._auth.refresh_credentials", [298, 34.129]], ["names/googleapiclient._auth.refresh_credentials", [272, 3.632, 299, 4.698]], ["qname/googleapiclient._auth.refresh_credentials", [300, 11.376]], ["docstring/googleapiclient._auth.refresh_credentials", []], ["kind/googleapiclient._auth.refresh_credentials", [14, -2.096]], ["name/googleapiclient._auth.apply_credentials", [301, 34.129]], ["names/googleapiclient._auth.apply_credentials", [272, 3.632, 302, 5.025]], ["qname/googleapiclient._auth.apply_credentials", [303, 11.376]], ["docstring/googleapiclient._auth.apply_credentials", []], ["kind/googleapiclient._auth.apply_credentials", [14, -2.096]], ["name/googleapiclient._auth.is_valid", [304, 34.129]], ["names/googleapiclient._auth.is_valid", [87, 3.959, 305, 5.025]], ["qname/googleapiclient._auth.is_valid", [306, 11.376]], ["docstring/googleapiclient._auth.is_valid", []], ["kind/googleapiclient._auth.is_valid", [14, -2.096]], ["name/googleapiclient._auth.get_credentials_from_http", [307, 34.129]], ["names/googleapiclient._auth.get_credentials_from_http", [45, 2.281, 144, 1.355, 272, 2.546, 273, 2.614]], ["qname/googleapiclient._auth.get_credentials_from_http", [308, 11.376]], ["docstring/googleapiclient._auth.get_credentials_from_http", []], ["kind/googleapiclient._auth.get_credentials_from_http", [14, -2.096]], ["name/googleapiclient._helpers.logger", [309, 20.517]], ["names/googleapiclient._helpers.logger", [309, 4.218]], ["qname/googleapiclient._helpers.logger", [310, 11.376]], ["docstring/googleapiclient._helpers.logger", []], ["kind/googleapiclient._helpers.logger", [268, -1.193]], ["name/googleapiclient._helpers.POSITIONAL_WARNING", [311, 34.129]], ["names/googleapiclient._helpers.POSITIONAL_WARNING", [312, 4.098, 313, 5.521]], ["qname/googleapiclient._helpers.POSITIONAL_WARNING", [314, 11.376]], ["docstring/googleapiclient._helpers.POSITIONAL_WARNING", []], ["kind/googleapiclient._helpers.POSITIONAL_WARNING", [315, -2.422]], ["name/googleapiclient._helpers.POSITIONAL_EXCEPTION", [316, 34.129]], ["names/googleapiclient._helpers.POSITIONAL_EXCEPTION", [312, 4.098, 317, 3.193]], ["qname/googleapiclient._helpers.POSITIONAL_EXCEPTION", [318, 11.376]], ["docstring/googleapiclient._helpers.POSITIONAL_EXCEPTION", []], ["kind/googleapiclient._helpers.POSITIONAL_EXCEPTION", [315, -2.422]], ["name/googleapiclient._helpers.POSITIONAL_IGNORE", [319, 34.129]], ["names/googleapiclient._helpers.POSITIONAL_IGNORE", [312, 4.098, 320, 5.521]], ["qname/googleapiclient._helpers.POSITIONAL_IGNORE", [321, 11.376]], ["docstring/googleapiclient._helpers.POSITIONAL_IGNORE", []], ["kind/googleapiclient._helpers.POSITIONAL_IGNORE", [315, -2.422]], ["name/googleapiclient._helpers.POSITIONAL_SET", [322, 34.129]], ["names/googleapiclient._helpers.POSITIONAL_SET", [41, 2.535, 312, 4.098]], ["qname/googleapiclient._helpers.POSITIONAL_SET", [323, 11.376]], ["docstring/googleapiclient._helpers.POSITIONAL_SET", []], ["kind/googleapiclient._helpers.POSITIONAL_SET", [315, -2.422]], ["name/googleapiclient._helpers._SYM_LINK_MESSAGE", [324, 34.129]], ["names/googleapiclient._helpers._SYM_LINK_MESSAGE", [325, 4.55, 326, 3.873, 327, 3.511]], ["qname/googleapiclient._helpers._SYM_LINK_MESSAGE", [328, 11.376]], ["docstring/googleapiclient._helpers._SYM_LINK_MESSAGE", []], ["kind/googleapiclient._helpers._SYM_LINK_MESSAGE", [315, -2.422]], ["name/googleapiclient._helpers._IS_DIR_MESSAGE", [329, 34.129]], ["names/googleapiclient._helpers._IS_DIR_MESSAGE", [305, 4.142, 327, 3.511, 330, 4.142]], ["qname/googleapiclient._helpers._IS_DIR_MESSAGE", [331, 11.376]], ["docstring/googleapiclient._helpers._IS_DIR_MESSAGE", []], ["kind/googleapiclient._helpers._IS_DIR_MESSAGE", [315, -2.422]], ["name/googleapiclient._helpers._MISSING_FILE_MESSAGE", [332, 34.129]], ["names/googleapiclient._helpers._MISSING_FILE_MESSAGE", [125, 2.284, 327, 3.511, 333, 4.55]], ["qname/googleapiclient._helpers._MISSING_FILE_MESSAGE", [334, 11.376]], ["docstring/googleapiclient._helpers._MISSING_FILE_MESSAGE", []], ["kind/googleapiclient._helpers._MISSING_FILE_MESSAGE", [315, -2.422]], ["name/googleapiclient._helpers.positional", [312, 25.331]], ["names/googleapiclient._helpers.positional", [312, 5.208]], ["qname/googleapiclient._helpers.positional", [335, 11.376]], ["docstring/googleapiclient._helpers.positional", [7, 0.843, 14, 0.391, 20, 0.634, 21, 0.699, 38, 0.667, 40, 1.179, 41, 0.986, 42, 3.294, 54, 0.196, 57, 0.279, 58, 3.886, 64, 0.721, 67, 0.515, 81, 0.947, 88, 0.999, 142, 2.411, 143, 1.732, 159, 1.54, 183, 2.256, 207, 1.063, 213, 0.872, 239, 0.574, 261, 0.533, 285, 0.298, 336, 3.665, 337, 2.147, 338, 0.872, 339, 3.869, 340, 3.886, 341, 0.999, 342, 2.147, 343, 1.174, 344, 5.259, 345, 1.069, 346, 1.069, 347, 3.633, 348, 2.147, 349, 1.174, 350, 2.147, 351, 2.147, 352, 1.174, 353, 2.147, 354, 1.174, 355, 1.174, 356, 2.271, 357, 1.174, 358, 1.954, 359, 1.174, 360, 1.174, 361, 1.174, 362, 1.174, 363, 0.947, 364, 1.174, 365, 1.174, 366, 1.174, 367, 1.174, 368, 1.174, 369, 0.667, 370, 1.174, 371, 0.999, 372, 0.999, 373, 1.174, 374, 1.174, 375, 2.147, 376, 1.174, 377, 2.147, 378, 2.147, 379, 1.174, 380, 1.174, 381, 0.906, 382, 0.842, 383, 1.174, 384, 2.147, 385, 1.174, 386, 1.174, 387, 0.872, 388, 1.174, 389, 0.999, 390, 1.174, 391, 1.174, 392, 1.174, 393, 1.069, 394, 0.667, 395, 1.174, 396, 1.174, 397, 1.174, 398, 1.174, 399, 1.174]], ["kind/googleapiclient._helpers.positional", [14, -2.096]], ["name/googleapiclient._helpers.parse_unique_urlencoded", [400, 34.129]], ["names/googleapiclient._helpers.parse_unique_urlencoded", [401, 3.873, 402, 4.55, 403, 4.55]], ["qname/googleapiclient._helpers.parse_unique_urlencoded", [404, 11.376]], ["docstring/googleapiclient._helpers.parse_unique_urlencoded", [50, 4.624, 57, 1.011, 67, 3.333, 85, 2.506, 135, 2.899, 183, 2.0, 197, 2.955, 217, 3.43, 233, 1.247, 285, 1.079, 356, 2.261, 405, 3.048, 406, 4.251, 407, 2.227, 408, 3.618, 409, 5.12, 410, 2.555, 411, 3.869]], ["kind/googleapiclient._helpers.parse_unique_urlencoded", [14, -2.096]], ["name/googleapiclient._helpers.update_query_params", [412, 34.129]], ["names/googleapiclient._helpers.update_query_params", [413, 3.873, 414, 3.377, 415, 2.994]], ["qname/googleapiclient._helpers.update_query_params", [416, 11.376]], ["docstring/googleapiclient._helpers.update_query_params", [44, 3.124, 50, 1.609, 57, 0.697, 65, 1.927, 67, 2.084, 78, 1.664, 87, 3.404, 101, 3.3, 131, 2.174, 141, 1.378, 183, 3.559, 196, 1.927, 217, 2.364, 227, 1.583, 233, 0.859, 285, 0.744, 410, 1.761, 417, 3.827, 418, 5.258, 419, 3.674, 420, 2.667, 421, 2.101, 422, 1.927, 423, 2.26, 424, 2.493, 425, 2.93, 426, 2.493]], ["kind/googleapiclient._helpers.update_query_params", [14, -2.096]], ["name/googleapiclient._helpers._add_query_parameter", [427, 34.129]], ["names/googleapiclient._helpers._add_query_parameter", [414, 3.377, 428, 2.735, 429, 3.511]], ["qname/googleapiclient._helpers._add_query_parameter", [430, 11.376]], ["docstring/googleapiclient._helpers._add_query_parameter", [57, 0.847, 65, 3.649, 67, 3.373, 101, 2.476, 183, 3.918, 233, 1.998, 261, 2.517, 285, 0.905, 407, 4.363, 418, 5.789, 423, 2.749, 428, 3.334, 431, 3.242, 432, 2.476, 433, 1.866]], ["kind/googleapiclient._helpers._add_query_parameter", [14, -2.096]], ["name/googleapiclient.errors.__author__", [434, 24.472]], ["names/googleapiclient.errors.__author__", [295, 4.877]], ["qname/googleapiclient.errors.__author__", [435, 11.376]], ["docstring/googleapiclient.errors.__author__", []], ["kind/googleapiclient.errors.__author__", [268, -1.193]], ["name/googleapiclient.errors.Error", [141, 32.11]], ["names/googleapiclient.errors.Error", [141, 6.602]], ["qname/googleapiclient.errors.Error", [436, 22.752]], ["docstring/googleapiclient.errors.Error", [26, 8.002, 141, 7.904, 158, 13.556]], ["kind/googleapiclient.errors.Error", [317, -7.273]], ["name/googleapiclient.errors.HttpError", [437, 55.074]], ["names/googleapiclient.errors.HttpError", [141, 5.194, 144, 3.865]], ["qname/googleapiclient.errors.HttpError", [438, 15.369]], ["docstring/googleapiclient.errors.HttpError", [144, 5.641, 421, 11.557, 439, 10.109, 440, 12.435]], ["kind/googleapiclient.errors.HttpError", [317, -7.273]], ["name/googleapiclient.errors.HttpError.__init__", [441, 16.462]], ["names/googleapiclient.errors.HttpError.__init__", [442, 3.301]], ["qname/googleapiclient.errors.HttpError.__init__", [443, 11.376]], ["docstring/googleapiclient.errors.HttpError.__init__", []], ["kind/googleapiclient.errors.HttpError.__init__", [54, -1.049]], ["name/googleapiclient.errors.HttpError.resp", [59, 19.741]], ["names/googleapiclient.errors.HttpError.resp", [59, 4.059]], ["qname/googleapiclient.errors.HttpError.resp", [444, 11.376]], ["docstring/googleapiclient.errors.HttpError.resp", []], ["kind/googleapiclient.errors.HttpError.resp", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.HttpError.content", [135, 13.03]], ["names/googleapiclient.errors.HttpError.content", [135, 2.679]], ["qname/googleapiclient.errors.HttpError.content", [446, 11.376]], ["docstring/googleapiclient.errors.HttpError.content", []], ["kind/googleapiclient.errors.HttpError.content", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.HttpError.uri", [417, 15.316]], ["names/googleapiclient.errors.HttpError.uri", [417, 3.149]], ["qname/googleapiclient.errors.HttpError.uri", [447, 11.376]], ["docstring/googleapiclient.errors.HttpError.uri", []], ["kind/googleapiclient.errors.HttpError.uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.HttpError.error_details", [448, 34.129]], ["names/googleapiclient.errors.HttpError.error_details", [141, 2.597, 449, 5.521]], ["qname/googleapiclient.errors.HttpError.error_details", [450, 11.376]], ["docstring/googleapiclient.errors.HttpError.error_details", []], ["kind/googleapiclient.errors.HttpError.error_details", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.HttpError.reason", [451, 25.331]], ["names/googleapiclient.errors.HttpError.reason", [451, 5.208]], ["qname/googleapiclient.errors.HttpError.reason", [452, 11.376]], ["docstring/googleapiclient.errors.HttpError.reason", []], ["kind/googleapiclient.errors.HttpError.reason", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.HttpError.status_code", [453, 34.129]], ["names/googleapiclient.errors.HttpError.status_code", [25, 3.959, 454, 5.521]], ["qname/googleapiclient.errors.HttpError.status_code", [455, 11.376]], ["docstring/googleapiclient.errors.HttpError.status_code", [25, 5.343, 57, 1.772, 135, 2.845, 144, 2.608, 195, 3.04, 456, 4.783]], ["kind/googleapiclient.errors.HttpError.status_code", [457, -4.85]], ["name/googleapiclient.errors.HttpError._get_reason", [458, 34.129]], ["names/googleapiclient.errors.HttpError._get_reason", [45, 3.254, 451, 4.098]], ["qname/googleapiclient.errors.HttpError._get_reason", [459, 11.376]], ["docstring/googleapiclient.errors.HttpError._get_reason", [135, 2.956, 141, 3.643, 195, 3.159, 451, 5.747, 460, 7.743]], ["kind/googleapiclient.errors.HttpError._get_reason", [54, -1.049]], ["name/googleapiclient.errors.HttpError.__repr__", [461, 31.064]], ["names/googleapiclient.errors.HttpError.__repr__", [462, 6.387]], ["qname/googleapiclient.errors.HttpError.__repr__", [463, 11.376]], ["docstring/googleapiclient.errors.HttpError.__repr__", []], ["kind/googleapiclient.errors.HttpError.__repr__", [54, -1.049]], ["name/googleapiclient.errors.InvalidJsonError", [464, 68.257]], ["names/googleapiclient.errors.InvalidJsonError", [141, 4.281, 201, 4.084, 421, 6.526]], ["qname/googleapiclient.errors.InvalidJsonError", [465, 22.752]], ["docstring/googleapiclient.errors.InvalidJsonError", [57, 3.996, 85, 9.903, 201, 7.54]], ["kind/googleapiclient.errors.InvalidJsonError", [317, -7.273]], ["name/googleapiclient.errors.UnknownFileType", [466, 68.257]], ["names/googleapiclient.errors.UnknownFileType", [125, 4.568, 156, 3.994, 467, 5.987]], ["qname/googleapiclient.errors.UnknownFileType", [468, 22.752]], ["docstring/googleapiclient.errors.UnknownFileType", [125, 8.089, 156, 7.073, 440, 12.435, 467, 10.603]], ["kind/googleapiclient.errors.UnknownFileType", [317, -7.273]], ["name/googleapiclient.errors.UnknownLinkType", [469, 68.257]], ["names/googleapiclient.errors.UnknownLinkType", [156, 3.994, 326, 7.745, 467, 5.987]], ["qname/googleapiclient.errors.UnknownLinkType", [470, 22.752]], ["docstring/googleapiclient.errors.UnknownLinkType", [156, 7.073, 326, 13.716, 440, 12.435, 467, 10.603]], ["kind/googleapiclient.errors.UnknownLinkType", [317, -7.273]], ["name/googleapiclient.errors.UnknownApiNameOrVersion", [471, 68.257]], ["names/googleapiclient.errors.UnknownApiNameOrVersion", [28, 3.248, 261, 3.057, 262, 3.825, 467, 4.43, 472, 6.129]], ["qname/googleapiclient.errors.UnknownApiNameOrVersion", [473, 22.752]], ["docstring/googleapiclient.errors.UnknownApiNameOrVersion", [28, 7.774, 101, 11.202, 261, 7.316, 262, 9.156]], ["kind/googleapiclient.errors.UnknownApiNameOrVersion", [317, -7.273]], ["name/googleapiclient.errors.UnacceptableMimeTypeError", [474, 68.257]], ["names/googleapiclient.errors.UnacceptableMimeTypeError", [141, 3.641, 155, 4.653, 156, 3.397, 475, 7.74]], ["qname/googleapiclient.errors.UnacceptableMimeTypeError", [476, 22.752]], ["docstring/googleapiclient.errors.UnacceptableMimeTypeError", [477, 16.801, 478, 13.556, 479, 15.292]], ["kind/googleapiclient.errors.UnacceptableMimeTypeError", [317, -7.273]], ["name/googleapiclient.errors.MediaUploadSizeError", [480, 68.257]], ["names/googleapiclient.errors.MediaUploadSizeError", [141, 3.641, 164, 3.158, 481, 3.397, 482, 3.597]], ["qname/googleapiclient.errors.MediaUploadSizeError", [483, 22.752]], ["docstring/googleapiclient.errors.MediaUploadSizeError", [54, 2.689, 164, 6.576, 484, 12.435, 485, 9.323]], ["kind/googleapiclient.errors.MediaUploadSizeError", [317, -7.273]], ["name/googleapiclient.errors.ResumableUploadError", [486, 68.257]], ["names/googleapiclient.errors.ResumableUploadError", [141, 4.281, 481, 3.994, 487, 5.708]], ["qname/googleapiclient.errors.ResumableUploadError", [488, 22.752]], ["docstring/googleapiclient.errors.ResumableUploadError", [141, 7.285, 422, 10.188, 481, 6.796, 489, 14.096, 490, 9.504]], ["kind/googleapiclient.errors.ResumableUploadError", [317, -7.273]], ["name/googleapiclient.errors.InvalidChunkSizeError", [491, 68.257]], ["names/googleapiclient.errors.InvalidChunkSizeError", [141, 3.641, 421, 5.55, 482, 3.597, 492, 4.477]], ["qname/googleapiclient.errors.InvalidChunkSizeError", [493, 22.752]], ["docstring/googleapiclient.errors.InvalidChunkSizeError", [87, 12.047, 227, 9.077, 494, 11.349]], ["kind/googleapiclient.errors.InvalidChunkSizeError", [317, -7.273]], ["name/googleapiclient.errors.InvalidNotificationError", [495, 68.257]], ["names/googleapiclient.errors.InvalidNotificationError", [141, 4.281, 421, 6.526, 496, 7.343]], ["qname/googleapiclient.errors.InvalidNotificationError", [497, 22.752]], ["docstring/googleapiclient.errors.InvalidNotificationError", [17, 9.38, 19, 12.047, 421, 12.047]], ["kind/googleapiclient.errors.InvalidNotificationError", [317, -7.273]], ["name/googleapiclient.errors.BatchError", [498, 58.09]], ["names/googleapiclient.errors.BatchError", [141, 5.194, 499, 6.926]], ["qname/googleapiclient.errors.BatchError", [500, 19.363]], ["docstring/googleapiclient.errors.BatchError", [141, 7.285, 422, 10.188, 479, 14.096, 489, 14.096, 499, 9.714]], ["kind/googleapiclient.errors.BatchError", [317, -7.273]], ["name/googleapiclient.errors.BatchError.__init__", [441, 16.462]], ["names/googleapiclient.errors.BatchError.__init__", [442, 3.301]], ["qname/googleapiclient.errors.BatchError.__init__", [501, 11.376]], ["docstring/googleapiclient.errors.BatchError.__init__", []], ["kind/googleapiclient.errors.BatchError.__init__", [54, -1.049]], ["name/googleapiclient.errors.BatchError.resp", [59, 19.741]], ["names/googleapiclient.errors.BatchError.resp", [59, 4.059]], ["qname/googleapiclient.errors.BatchError.resp", [502, 11.376]], ["docstring/googleapiclient.errors.BatchError.resp", []], ["kind/googleapiclient.errors.BatchError.resp", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.BatchError.content", [135, 13.03]], ["names/googleapiclient.errors.BatchError.content", [135, 2.679]], ["qname/googleapiclient.errors.BatchError.content", [503, 11.376]], ["docstring/googleapiclient.errors.BatchError.content", []], ["kind/googleapiclient.errors.BatchError.content", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.BatchError.reason", [451, 25.331]], ["names/googleapiclient.errors.BatchError.reason", [451, 5.208]], ["qname/googleapiclient.errors.BatchError.reason", [504, 11.376]], ["docstring/googleapiclient.errors.BatchError.reason", []], ["kind/googleapiclient.errors.BatchError.reason", [268, -0.886, 445, -1.11]], ["name/googleapiclient.errors.BatchError.__repr__", [461, 31.064]], ["names/googleapiclient.errors.BatchError.__repr__", [462, 6.387]], ["qname/googleapiclient.errors.BatchError.__repr__", [505, 11.376]], ["docstring/googleapiclient.errors.BatchError.__repr__", []], ["kind/googleapiclient.errors.BatchError.__repr__", [54, -1.049]], ["name/googleapiclient.errors.UnexpectedMethodError", [506, 55.074]], ["names/googleapiclient.errors.UnexpectedMethodError", [54, 1.518, 141, 4.281, 507, 7.745]], ["qname/googleapiclient.errors.UnexpectedMethodError", [508, 22.752]], ["docstring/googleapiclient.errors.UnexpectedMethodError", [38, 8.798, 142, 10.188, 356, 8.237, 440, 11.949, 509, 11.949]], ["kind/googleapiclient.errors.UnexpectedMethodError", [317, -7.273]], ["name/googleapiclient.errors.UnexpectedMethodError.__init__", [441, 16.462]], ["names/googleapiclient.errors.UnexpectedMethodError.__init__", [442, 3.301]], ["qname/googleapiclient.errors.UnexpectedMethodError.__init__", [510, 11.376]], ["docstring/googleapiclient.errors.UnexpectedMethodError.__init__", [258, 4.666, 506, 7.078]], ["kind/googleapiclient.errors.UnexpectedMethodError.__init__", [54, -1.049]], ["name/googleapiclient.errors.UnexpectedBodyError", [511, 62.127]], ["names/googleapiclient.errors.UnexpectedBodyError", [141, 4.281, 507, 7.745, 512, 5.987]], ["qname/googleapiclient.errors.UnexpectedBodyError", [513, 22.752]], ["docstring/googleapiclient.errors.UnexpectedBodyError", [142, 10.188, 356, 8.237, 440, 11.949, 509, 11.949, 514, 6.872]], ["kind/googleapiclient.errors.UnexpectedBodyError", [317, -7.273]], ["name/googleapiclient.errors.UnexpectedBodyError.__init__", [441, 16.462]], ["names/googleapiclient.errors.UnexpectedBodyError.__init__", [442, 3.301]], ["qname/googleapiclient.errors.UnexpectedBodyError.__init__", [515, 11.376]], ["docstring/googleapiclient.errors.UnexpectedBodyError.__init__", [258, 4.666, 506, 7.078]], ["kind/googleapiclient.errors.UnexpectedBodyError.__init__", [54, -1.049]], ["name/googleapiclient.channel.EPOCH", [516, 25.331]], ["names/googleapiclient.channel.EPOCH", [516, 5.208]], ["qname/googleapiclient.channel.EPOCH", [517, 11.376]], ["docstring/googleapiclient.channel.EPOCH", []], ["kind/googleapiclient.channel.EPOCH", [315, -2.422]], ["name/googleapiclient.channel.CHANNEL_PARAMS", [518, 34.129]], ["names/googleapiclient.channel.CHANNEL_PARAMS", [17, 3.082, 415, 3.632]], ["qname/googleapiclient.channel.CHANNEL_PARAMS", [519, 11.376]], ["docstring/googleapiclient.channel.CHANNEL_PARAMS", []], ["kind/googleapiclient.channel.CHANNEL_PARAMS", [315, -2.422]], ["name/googleapiclient.channel.X_GOOG_CHANNEL_ID", [520, 34.129]], ["names/googleapiclient.channel.X_GOOG_CHANNEL_ID", [17, 2.161, 32, 1.942, 521, 2.872, 522, 2.872]], ["qname/googleapiclient.channel.X_GOOG_CHANNEL_ID", [523, 11.376]], ["docstring/googleapiclient.channel.X_GOOG_CHANNEL_ID", []], ["kind/googleapiclient.channel.X_GOOG_CHANNEL_ID", [315, -2.422]], ["name/googleapiclient.channel.X_GOOG_MESSAGE_NUMBER", [524, 34.129]], ["names/googleapiclient.channel.X_GOOG_MESSAGE_NUMBER", [327, 2.986, 394, 2.199, 521, 2.872, 522, 2.872]], ["qname/googleapiclient.channel.X_GOOG_MESSAGE_NUMBER", [525, 11.376]], ["docstring/googleapiclient.channel.X_GOOG_MESSAGE_NUMBER", []], ["kind/googleapiclient.channel.X_GOOG_MESSAGE_NUMBER", [315, -2.422]], ["name/googleapiclient.channel.X_GOOG_RESOURCE_STATE", [526, 34.129]], ["names/googleapiclient.channel.X_GOOG_RESOURCE_STATE", [99, 2.614, 521, 2.872, 522, 2.872, 527, 2.484]], ["qname/googleapiclient.channel.X_GOOG_RESOURCE_STATE", [528, 11.376]], ["docstring/googleapiclient.channel.X_GOOG_RESOURCE_STATE", []], ["kind/googleapiclient.channel.X_GOOG_RESOURCE_STATE", [315, -2.422]], ["name/googleapiclient.channel.X_GOOG_RESOURCE_URI", [529, 34.129]], ["names/googleapiclient.channel.X_GOOG_RESOURCE_URI", [417, 1.737, 521, 2.872, 522, 2.872, 527, 2.484]], ["qname/googleapiclient.channel.X_GOOG_RESOURCE_URI", [530, 11.376]], ["docstring/googleapiclient.channel.X_GOOG_RESOURCE_URI", []], ["kind/googleapiclient.channel.X_GOOG_RESOURCE_URI", [315, -2.422]], ["name/googleapiclient.channel.X_GOOG_RESOURCE_ID", [531, 34.129]], ["names/googleapiclient.channel.X_GOOG_RESOURCE_ID", [32, 1.942, 521, 2.872, 522, 2.872, 527, 2.484]], ["qname/googleapiclient.channel.X_GOOG_RESOURCE_ID", [532, 11.376]], ["docstring/googleapiclient.channel.X_GOOG_RESOURCE_ID", []], ["kind/googleapiclient.channel.X_GOOG_RESOURCE_ID", [315, -2.422]], ["name/googleapiclient.channel._upper_header_keys", [533, 34.129]], ["names/googleapiclient.channel._upper_header_keys", [75, 2.458, 82, 4.142, 534, 4.55]], ["qname/googleapiclient.channel._upper_header_keys", [535, 11.376]], ["docstring/googleapiclient.channel._upper_header_keys", []], ["kind/googleapiclient.channel._upper_header_keys", [14, -2.096]], ["name/googleapiclient.channel.Notification", [496, 55.074]], ["names/googleapiclient.channel.Notification", [496, 11.323]], ["qname/googleapiclient.channel.Notification", [536, 22.752]], ["docstring/googleapiclient.channel.Notification", [14, 2.375, 17, 3.978, 19, 9.766, 32, 3.576, 57, 1.695, 64, 6.807, 66, 4.952, 99, 7.492, 262, 4.047, 394, 4.047, 405, 7.953, 417, 3.197, 537, 5.497, 538, 4.047, 539, 5.749, 540, 7.125, 541, 5.497, 542, 6.485, 543, 4.121, 544, 8.96, 545, 8.188, 546, 10.096, 547, 5.109, 548, 5.288, 549, 6.063]], ["kind/googleapiclient.channel.Notification", [21, -4.094]], ["name/googleapiclient.channel.Notification.__init__", [441, 16.462]], ["names/googleapiclient.channel.Notification.__init__", [442, 3.301]], ["qname/googleapiclient.channel.Notification.__init__", [550, 11.376]], ["docstring/googleapiclient.channel.Notification.__init__", [19, 4.276, 32, 1.965, 53, 2.807, 64, 3.66, 66, 2.721, 97, 3.563, 99, 4.028, 101, 2.721, 102, 3.563, 197, 2.721, 258, 2.082, 285, 0.994, 394, 2.224, 405, 2.807, 542, 3.563, 543, 2.264, 544, 4.753, 545, 4.343, 546, 5.428, 547, 2.807, 548, 2.905, 551, 3.02]], ["kind/googleapiclient.channel.Notification.__init__", [54, -1.049]], ["name/googleapiclient.channel.Notification.message_number", [552, 34.129]], ["names/googleapiclient.channel.Notification.message_number", [327, 4.26, 394, 3.136]], ["qname/googleapiclient.channel.Notification.message_number", [553, 11.376]], ["docstring/googleapiclient.channel.Notification.message_number", []], ["kind/googleapiclient.channel.Notification.message_number", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Notification.state", [99, 23.054]], ["names/googleapiclient.channel.Notification.state", [99, 4.74]], ["qname/googleapiclient.channel.Notification.state", [554, 11.376]], ["docstring/googleapiclient.channel.Notification.state", []], ["kind/googleapiclient.channel.Notification.state", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Notification.resource_uri", [551, 26.333]], ["names/googleapiclient.channel.Notification.resource_uri", [417, 2.477, 527, 3.544]], ["qname/googleapiclient.channel.Notification.resource_uri", [555, 11.376]], ["docstring/googleapiclient.channel.Notification.resource_uri", []], ["kind/googleapiclient.channel.Notification.resource_uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Notification.resource_id", [66, 23.721]], ["names/googleapiclient.channel.Notification.resource_id", [32, 2.771, 527, 3.544]], ["qname/googleapiclient.channel.Notification.resource_id", [556, 11.376]], ["docstring/googleapiclient.channel.Notification.resource_id", []], ["kind/googleapiclient.channel.Notification.resource_id", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel", [17, 38.11]], ["names/googleapiclient.channel.Channel", [17, 7.836]], ["qname/googleapiclient.channel.Channel", [557, 22.752]], ["docstring/googleapiclient.channel.Channel", [5, 3.222, 7, 1.486, 14, 1.262, 17, 8.213, 19, 2.715, 28, 1.826, 32, 4.376, 35, 2.631, 40, 2.079, 53, 4.716, 57, 0.901, 64, 2.323, 66, 2.631, 78, 2.151, 92, 2.921, 156, 3.827, 183, 1.781, 196, 2.491, 233, 2.558, 242, 2.491, 262, 2.151, 381, 2.921, 382, 2.715, 410, 2.276, 419, 2.323, 516, 2.81, 537, 2.921, 538, 2.151, 539, 3.055, 541, 2.921, 543, 2.19, 544, 8.509, 545, 3.954, 547, 6.252, 548, 2.81, 549, 5.597, 551, 2.921, 558, 3.055, 559, 3.446, 560, 5.986, 561, 3.446, 562, 3.446, 563, 3.222, 564, 3.222, 565, 2.81, 566, 7.421, 567, 3.222, 568, 2.921, 569, 3.446, 570, 5.075, 571, 2.375, 572, 3.446, 573, 2.921, 574, 3.446, 575, 3.446, 576, 2.81, 577, 3.446]], ["kind/googleapiclient.channel.Channel", [21, -4.094]], ["name/googleapiclient.channel.Channel.__init__", [441, 16.462]], ["names/googleapiclient.channel.Channel.__init__", [442, 3.301]], ["qname/googleapiclient.channel.Channel.__init__", [578, 11.376]], ["docstring/googleapiclient.channel.Channel.__init__", [7, 0.672, 14, 0.571, 17, 4.285, 25, 1.228, 28, 0.826, 32, 2.025, 35, 1.19, 38, 0.973, 40, 0.94, 41, 0.787, 43, 1.811, 44, 1.127, 53, 2.161, 64, 1.051, 66, 1.19, 78, 0.973, 92, 2.325, 156, 2.131, 183, 0.806, 196, 1.982, 198, 1.271, 233, 1.183, 242, 1.127, 258, 0.911, 262, 0.973, 285, 0.435, 339, 1.382, 381, 1.322, 382, 1.228, 410, 1.03, 419, 1.051, 516, 1.271, 543, 0.991, 544, 4.014, 545, 1.811, 547, 2.893, 548, 1.271, 549, 2.564, 551, 1.322, 560, 2.743, 561, 1.559, 562, 1.559, 563, 1.458, 564, 1.458, 565, 1.271, 566, 3.433, 567, 1.458, 568, 1.322, 569, 1.559, 570, 2.325, 571, 1.074, 572, 1.559, 573, 1.322, 574, 1.559, 575, 1.559, 576, 1.271, 577, 1.559, 579, 1.322, 580, 1.713, 581, 1.713, 582, 1.458, 583, 0.897]], ["kind/googleapiclient.channel.Channel.__init__", [54, -1.049]], ["name/googleapiclient.channel.Channel.type", [156, 14.978]], ["names/googleapiclient.channel.Channel.type", [156, 3.079]], ["qname/googleapiclient.channel.Channel.type", [584, 11.376]], ["docstring/googleapiclient.channel.Channel.type", []], ["kind/googleapiclient.channel.Channel.type", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.id", [32, 17.129]], ["names/googleapiclient.channel.Channel.id", [32, 3.522]], ["qname/googleapiclient.channel.Channel.id", [585, 11.376]], ["docstring/googleapiclient.channel.Channel.id", []], ["kind/googleapiclient.channel.Channel.id", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.token", [242, 22.453]], ["names/googleapiclient.channel.Channel.token", [242, 4.616]], ["qname/googleapiclient.channel.Channel.token", [586, 11.376]], ["docstring/googleapiclient.channel.Channel.token", []], ["kind/googleapiclient.channel.Channel.token", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.address", [547, 24.472]], ["names/googleapiclient.channel.Channel.address", [547, 5.032]], ["qname/googleapiclient.channel.Channel.address", [587, 11.376]], ["docstring/googleapiclient.channel.Channel.address", []], ["kind/googleapiclient.channel.Channel.address", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.expiration", [588, 31.064]], ["names/googleapiclient.channel.Channel.expiration", [588, 6.387]], ["qname/googleapiclient.channel.Channel.expiration", [589, 11.376]], ["docstring/googleapiclient.channel.Channel.expiration", []], ["kind/googleapiclient.channel.Channel.expiration", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.params", [415, 22.453]], ["names/googleapiclient.channel.Channel.params", [415, 4.616]], ["qname/googleapiclient.channel.Channel.params", [590, 11.376]], ["docstring/googleapiclient.channel.Channel.params", []], ["kind/googleapiclient.channel.Channel.params", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.resource_id", [66, 23.721]], ["names/googleapiclient.channel.Channel.resource_id", [32, 2.771, 527, 3.544]], ["qname/googleapiclient.channel.Channel.resource_id", [591, 11.376]], ["docstring/googleapiclient.channel.Channel.resource_id", []], ["kind/googleapiclient.channel.Channel.resource_id", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.resource_uri", [551, 26.333]], ["names/googleapiclient.channel.Channel.resource_uri", [417, 2.477, 527, 3.544]], ["qname/googleapiclient.channel.Channel.resource_uri", [592, 11.376]], ["docstring/googleapiclient.channel.Channel.resource_uri", []], ["kind/googleapiclient.channel.Channel.resource_uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.channel.Channel.body", [512, 22.453]], ["names/googleapiclient.channel.Channel.body", [512, 4.616]], ["qname/googleapiclient.channel.Channel.body", [593, 11.376]], ["docstring/googleapiclient.channel.Channel.body", [17, 4.141, 33, 4.796, 53, 3.778, 54, 0.879, 57, 1.253, 67, 2.313, 78, 4.213, 208, 3.234, 339, 4.252, 514, 3.291, 538, 2.994, 583, 2.761, 594, 3.305, 595, 4.485]], ["kind/googleapiclient.channel.Channel.body", [54, -1.049]], ["name/googleapiclient.channel.Channel.update", [413, 29.045]], ["names/googleapiclient.channel.Channel.update", [413, 5.972]], ["qname/googleapiclient.channel.Channel.update", [596, 11.376]], ["docstring/googleapiclient.channel.Channel.update", [17, 3.433, 22, 3.469, 53, 5.913, 54, 0.68, 57, 0.969, 59, 2.358, 65, 4.045, 66, 2.833, 70, 3.469, 71, 3.71, 78, 2.315, 147, 1.957, 195, 3.021, 200, 2.753, 285, 1.035, 410, 2.45, 545, 2.45, 597, 5.233, 598, 3.469]], ["kind/googleapiclient.channel.Channel.update", [54, -1.049]], ["name/googleapiclient.channel.notification_from_headers", [599, 34.129]], ["names/googleapiclient.channel.notification_from_headers", [273, 3.074, 496, 3.672, 600, 3.263]], ["qname/googleapiclient.channel.notification_from_headers", [601, 11.376]], ["docstring/googleapiclient.channel.notification_from_headers", [17, 3.557, 19, 6.055, 47, 4.128, 57, 1.217, 75, 3.442, 78, 1.827, 85, 1.895, 87, 2.305, 144, 1.125, 147, 2.027, 150, 2.075, 204, 1.933, 285, 0.816, 356, 1.71, 394, 1.827, 410, 1.933, 411, 2.926, 421, 2.305, 521, 2.386, 522, 2.386, 543, 1.86, 565, 2.386, 602, 2.235, 603, 3.215, 604, 3.215, 605, 2.926]], ["kind/googleapiclient.channel.notification_from_headers", [14, -2.096]], ["name/googleapiclient.channel.new_webhook_channel", [559, 31.064]], ["names/googleapiclient.channel.new_webhook_channel", [17, 2.541, 44, 2.994, 47, 3.672]], ["qname/googleapiclient.channel.new_webhook_channel", [606, 11.376]], ["docstring/googleapiclient.channel.new_webhook_channel", [7, 1.548, 17, 4.052, 19, 2.828, 22, 3.356, 24, 1.581, 41, 1.075, 43, 1.407, 44, 1.54, 47, 3.182, 53, 1.678, 54, 0.391, 67, 1.027, 166, 1.737, 183, 1.101, 195, 0.955, 196, 1.54, 233, 0.687, 239, 1.144, 242, 1.54, 285, 0.594, 407, 2.066, 410, 1.407, 419, 1.437, 431, 2.13, 433, 1.226, 544, 2.595, 547, 1.678, 564, 1.992, 565, 1.737, 566, 3.356, 567, 1.992, 568, 1.806, 570, 4.627, 571, 2.474, 576, 2.927, 583, 1.226, 607, 1.992, 608, 2.341, 609, 2.13, 610, 2.474, 611, 1.678, 612, 1.889, 613, 1.678, 614, 1.992, 615, 2.13, 616, 2.341]], ["kind/googleapiclient.channel.new_webhook_channel", [14, -2.096]], ["name/googleapiclient.discovery.__author__", [434, 24.472]], ["names/googleapiclient.discovery.__author__", [295, 4.877]], ["qname/googleapiclient.discovery.__author__", [617, 11.376]], ["docstring/googleapiclient.discovery.__author__", []], ["kind/googleapiclient.discovery.__author__", [268, -1.193]], ["name/googleapiclient.discovery.HAS_UNIVERSE", [618, 34.129]], ["names/googleapiclient.discovery.HAS_UNIVERSE", [265, 4.26, 619, 4.26]], ["qname/googleapiclient.discovery.HAS_UNIVERSE", [620, 11.376]], ["docstring/googleapiclient.discovery.HAS_UNIVERSE", []], ["kind/googleapiclient.discovery.HAS_UNIVERSE", [268, -1.193]], ["name/googleapiclient.mimeparse.__version__", [621, 31.064]], ["names/googleapiclient.mimeparse.__version__", [262, 3.986]], ["qname/googleapiclient.mimeparse.__version__", [622, 11.376]], ["docstring/googleapiclient.mimeparse.__version__", []], ["kind/googleapiclient.mimeparse.__version__", [268, -1.193]], ["name/googleapiclient.mimeparse.__author__", [434, 24.472]], ["names/googleapiclient.mimeparse.__author__", [295, 4.877]], ["qname/googleapiclient.mimeparse.__author__", [623, 11.376]], ["docstring/googleapiclient.mimeparse.__author__", []], ["kind/googleapiclient.mimeparse.__author__", [268, -1.193]], ["name/googleapiclient.mimeparse.__email__", [624, 34.129]], ["names/googleapiclient.mimeparse.__email__", [625, 7.017]], ["qname/googleapiclient.mimeparse.__email__", [626, 11.376]], ["docstring/googleapiclient.mimeparse.__email__", []], ["kind/googleapiclient.mimeparse.__email__", [268, -1.193]], ["name/googleapiclient.mimeparse.__license__", [627, 34.129]], ["names/googleapiclient.mimeparse.__license__", [628, 7.017]], ["qname/googleapiclient.mimeparse.__license__", [629, 11.376]], ["docstring/googleapiclient.mimeparse.__license__", []], ["kind/googleapiclient.mimeparse.__license__", [268, -1.193]], ["name/googleapiclient.mimeparse.__credits__", [630, 34.129]], ["names/googleapiclient.mimeparse.__credits__", [631, 7.017]], ["qname/googleapiclient.mimeparse.__credits__", [632, 11.376]], ["docstring/googleapiclient.mimeparse.__credits__", []], ["kind/googleapiclient.mimeparse.__credits__", [268, -1.193]], ["name/googleapiclient.mimeparse.parse_mime_type", [633, 34.129]], ["names/googleapiclient.mimeparse.parse_mime_type", [155, 2.735, 156, 1.997, 401, 3.873]], ["qname/googleapiclient.mimeparse.parse_mime_type", [634, 11.376]], ["docstring/googleapiclient.mimeparse.parse_mime_type", [34, 2.681, 40, 2.238, 57, 0.969, 78, 2.315, 85, 3.624, 155, 3.696, 156, 3.249, 164, 2.509, 165, 4.409, 176, 3.469, 177, 3.145, 181, 2.923, 183, 1.917, 218, 2.923, 419, 3.774, 635, 3.71, 636, 2.753, 637, 3.71, 638, 4.076, 639, 4.076, 640, 3.71]], ["kind/googleapiclient.mimeparse.parse_mime_type", [14, -2.096]], ["name/googleapiclient.mimeparse.parse_media_range", [641, 34.129]], ["names/googleapiclient.mimeparse.parse_media_range", [164, 1.857, 401, 3.873, 642, 4.55]], ["qname/googleapiclient.mimeparse.parse_media_range", [643, 11.376]], ["docstring/googleapiclient.mimeparse.parse_media_range", [14, 1.108, 34, 2.186, 40, 1.825, 57, 0.79, 67, 1.458, 78, 2.983, 80, 3.025, 85, 3.095, 156, 1.458, 164, 3.019, 165, 5.305, 176, 2.828, 177, 2.564, 181, 3.766, 183, 1.563, 218, 2.383, 239, 1.624, 284, 3.025, 419, 3.996, 573, 2.564, 635, 3.025, 636, 2.245, 637, 3.025, 640, 3.025, 644, 3.323, 645, 3.323, 646, 3.025, 647, 3.323]], ["kind/googleapiclient.mimeparse.parse_media_range", [14, -2.096]], ["name/googleapiclient.mimeparse.fitness_and_quality_parsed", [648, 34.129]], ["names/googleapiclient.mimeparse.fitness_and_quality_parsed", [649, 3.87, 650, 3.523, 651, 3.123, 652, 3.523]], ["qname/googleapiclient.mimeparse.fitness_and_quality_parsed", [653, 11.376]], ["docstring/googleapiclient.mimeparse.fitness_and_quality_parsed", [57, 0.753, 67, 2.216, 85, 3.716, 155, 3.036, 156, 2.216, 161, 5.16, 162, 2.553, 163, 2.686, 164, 2.061, 165, 3.622, 178, 2.692, 181, 2.269, 182, 2.441, 183, 1.488, 186, 2.88, 227, 1.709, 432, 2.199, 636, 2.137, 654, 4.075, 655, 5.086, 656, 2.88, 657, 2.88, 658, 3.164, 659, 3.164, 660, 2.269, 661, 2.88, 662, 2.441, 663, 2.88]], ["kind/googleapiclient.mimeparse.fitness_and_quality_parsed", [14, -2.096]], ["name/googleapiclient.mimeparse.quality_parsed", [664, 34.129]], ["names/googleapiclient.mimeparse.quality_parsed", [651, 4.454, 652, 5.025]], ["qname/googleapiclient.mimeparse.quality_parsed", [665, 11.376]], ["docstring/googleapiclient.mimeparse.quality_parsed", [14, 1.09, 57, 0.777, 85, 3.796, 131, 2.426, 142, 2.15, 155, 3.116, 156, 2.275, 161, 5.256, 162, 2.637, 163, 2.757, 164, 2.115, 165, 3.716, 178, 2.781, 181, 2.343, 182, 3.999, 183, 1.537, 227, 1.766, 432, 2.272, 654, 4.182, 655, 5.197, 656, 2.975, 657, 2.975, 661, 2.975, 662, 2.522, 663, 2.975, 666, 3.268]], ["kind/googleapiclient.mimeparse.quality_parsed", [14, -2.096]], ["name/googleapiclient.mimeparse.quality", [651, 27.537]], ["names/googleapiclient.mimeparse.quality", [651, 5.662]], ["qname/googleapiclient.mimeparse.quality", [667, 11.376]], ["docstring/googleapiclient.mimeparse.quality", [40, 2.285, 57, 1.486, 155, 3.755, 156, 2.741, 162, 5.04, 163, 2.214, 164, 2.548, 165, 5.376, 181, 4.479, 182, 4.819, 185, 3.542, 668, 3.788, 669, 4.162, 670, 4.162, 671, 4.162, 672, 4.162, 673, 4.162, 674, 4.162]], ["kind/googleapiclient.mimeparse.quality", [14, -2.096]], ["name/googleapiclient.mimeparse.best_match", [189, 31.064]], ["names/googleapiclient.mimeparse.best_match", [161, 3.959, 655, 4.454]], ["qname/googleapiclient.mimeparse.best_match", [675, 11.376]], ["docstring/googleapiclient.mimeparse.best_match", [20, 3.139, 57, 0.667, 67, 2.011, 75, 3.139, 76, 2.011, 144, 0.982, 155, 4.033, 156, 2.944, 161, 2.011, 163, 3.933, 164, 1.144, 165, 2.011, 181, 2.011, 182, 2.164, 191, 2.553, 192, 2.553, 206, 1.759, 226, 2.011, 233, 0.823, 259, 2.263, 485, 1.623, 654, 2.263, 655, 2.263, 668, 2.553, 676, 2.805, 677, 2.082, 678, 2.553, 679, 2.387, 680, 2.805, 681, 2.805, 682, 2.805, 683, 2.805, 684, 2.805, 685, 2.805, 686, 2.805]], ["kind/googleapiclient.mimeparse.best_match", [14, -2.096]], ["name/googleapiclient.mimeparse._filter_blank", [687, 34.129]], ["names/googleapiclient.mimeparse._filter_blank", [688, 5.521, 689, 5.521]], ["qname/googleapiclient.mimeparse._filter_blank", [690, 11.376]], ["docstring/googleapiclient.mimeparse._filter_blank", []], ["kind/googleapiclient.mimeparse._filter_blank", [14, -2.096]], ["name/googleapiclient.http.__author__", [434, 24.472]], ["names/googleapiclient.http.__author__", [295, 4.877]], ["qname/googleapiclient.http.__author__", [691, 11.376]], ["docstring/googleapiclient.http.__author__", []], ["kind/googleapiclient.http.__author__", [268, -1.193]], ["name/googleapiclient.model.__author__", [434, 24.472]], ["names/googleapiclient.model.__author__", [295, 4.877]], ["qname/googleapiclient.model.__author__", [692, 11.376]], ["docstring/googleapiclient.model.__author__", []], ["kind/googleapiclient.model.__author__", [268, -1.193]], ["name/googleapiclient.version.__version__", [621, 31.064]], ["names/googleapiclient.version.__version__", [262, 3.986]], ["qname/googleapiclient.version.__version__", [693, 11.376]], ["docstring/googleapiclient.version.__version__", []], ["kind/googleapiclient.version.__version__", [268, -1.193]], ["name/googleapiclient.model._PY_VERSION", [694, 34.129]], ["names/googleapiclient.model._PY_VERSION", [262, 3.136, 695, 5.521]], ["qname/googleapiclient.model._PY_VERSION", [696, 11.376]], ["docstring/googleapiclient.model._PY_VERSION", []], ["kind/googleapiclient.model._PY_VERSION", [315, -2.422]], ["name/googleapiclient.model.LOGGER", [309, 20.517]], ["names/googleapiclient.model.LOGGER", [309, 4.218]], ["qname/googleapiclient.model.LOGGER", [697, 11.376]], ["docstring/googleapiclient.model.LOGGER", []], ["kind/googleapiclient.model.LOGGER", [315, -2.422]], ["name/googleapiclient.model.dump_request_response", [698, 34.129]], ["names/googleapiclient.model.dump_request_response", [147, 1.448, 699, 4.55, 700, 2.585]], ["qname/googleapiclient.model.dump_request_response", [701, 11.376]], ["docstring/googleapiclient.model.dump_request_response", []], ["kind/googleapiclient.model.dump_request_response", [268, -1.193]], ["name/googleapiclient.model._abstract", [702, 34.129]], ["names/googleapiclient.model._abstract", [123, 5.972]], ["qname/googleapiclient.model._abstract", [703, 11.376]], ["docstring/googleapiclient.model._abstract", []], ["kind/googleapiclient.model._abstract", [14, -2.096]], ["name/googleapiclient.model.Model", [193, 35.761]], ["names/googleapiclient.model.Model", [193, 7.353]], ["qname/googleapiclient.model.Model", [704, 22.752]], ["docstring/googleapiclient.model.Model", [21, 4.655, 26, 4.766, 37, 6.955, 72, 7.72, 150, 3.258, 193, 8.739, 199, 7.079, 200, 6.759, 201, 4.49, 205, 7.175, 206, 6.276, 207, 4.954, 208, 6.141, 705, 7.175, 706, 6.015]], ["kind/googleapiclient.model.Model", [21, -4.094]], ["name/googleapiclient.model.Model.request", [147, 10.86]], ["names/googleapiclient.model.Model.request", [147, 2.233]], ["qname/googleapiclient.model.Model.request", [707, 11.376]], ["docstring/googleapiclient.model.Model.request", [57, 0.607, 65, 1.679, 75, 3.797, 147, 2.556, 150, 1.38, 177, 1.969, 183, 2.558, 199, 2.099, 205, 1.83, 206, 1.601, 207, 1.264, 233, 1.244, 285, 0.648, 410, 4.224, 417, 1.145, 418, 4.402, 514, 3.118, 636, 1.724, 679, 2.172, 708, 2.323, 709, 4.628, 710, 4.628, 711, 2.721, 712, 2.172, 713, 1.969, 714, 2.172]], ["kind/googleapiclient.model.Model.request", [54, -1.049]], ["name/googleapiclient.model.Model.response", [700, 19.388]], ["names/googleapiclient.model.Model.response", [700, 3.986]], ["qname/googleapiclient.model.Model.response", [715, 11.376]], ["docstring/googleapiclient.model.Model.response", [35, 2.721, 57, 0.931, 59, 2.264, 75, 2.115, 135, 1.495, 144, 2.087, 150, 1.942, 195, 3.296, 199, 1.938, 204, 2.353, 205, 2.807, 206, 2.455, 207, 2.953, 233, 1.148, 285, 0.994, 356, 2.082, 438, 2.644, 456, 2.513, 514, 2.646, 706, 2.353, 716, 3.02, 717, 3.331, 718, 2.905]], ["kind/googleapiclient.model.Model.response", [54, -1.049]], ["name/googleapiclient.model.BaseModel", [719, 68.257]], ["names/googleapiclient.model.BaseModel", [26, 5.259, 193, 5.785]], ["qname/googleapiclient.model.BaseModel", [720, 22.752]], ["docstring/googleapiclient.model.BaseModel", [7, 3.965, 21, 3.289, 26, 3.014, 54, 1.056, 57, 1.505, 67, 6.903, 72, 4.882, 75, 5.457, 135, 3.856, 144, 3.536, 147, 2.013, 156, 2.777, 159, 4.537, 183, 2.977, 193, 3.315, 195, 2.582, 199, 3.133, 222, 5.215, 255, 5.385, 418, 4.398, 485, 5.843, 541, 7.794, 721, 4.537, 722, 6.328, 723, 6.328, 724, 6.328, 725, 6.328, 726, 4.696, 727, 4.882, 728, 4.696]], ["kind/googleapiclient.model.BaseModel", [21, -4.094]], ["name/googleapiclient.model.BaseModel.accept", [485, 19.741]], ["names/googleapiclient.model.BaseModel.accept", [485, 4.059]], ["qname/googleapiclient.model.BaseModel.accept", [729, 11.376]], ["docstring/googleapiclient.model.BaseModel.accept", []], ["kind/googleapiclient.model.BaseModel.accept", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.BaseModel.content_type", [730, 26.333]], ["names/googleapiclient.model.BaseModel.content_type", [135, 2.108, 156, 2.423]], ["qname/googleapiclient.model.BaseModel.content_type", [731, 11.376]], ["docstring/googleapiclient.model.BaseModel.content_type", []], ["kind/googleapiclient.model.BaseModel.content_type", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.BaseModel.no_content_response", [732, 26.333]], ["names/googleapiclient.model.BaseModel.no_content_response", [135, 1.737, 700, 2.585, 733, 3.511]], ["qname/googleapiclient.model.BaseModel.no_content_response", [734, 11.376]], ["docstring/googleapiclient.model.BaseModel.no_content_response", []], ["kind/googleapiclient.model.BaseModel.no_content_response", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.BaseModel.alt_param", [726, 25.331]], ["names/googleapiclient.model.BaseModel.alt_param", [419, 3.388, 728, 4.098]], ["qname/googleapiclient.model.BaseModel.alt_param", [735, 11.376]], ["docstring/googleapiclient.model.BaseModel.alt_param", []], ["kind/googleapiclient.model.BaseModel.alt_param", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.BaseModel._log_request", [736, 34.129]], ["names/googleapiclient.model.BaseModel._log_request", [147, 1.757, 387, 4.098]], ["qname/googleapiclient.model.BaseModel._log_request", [737, 11.376]], ["docstring/googleapiclient.model.BaseModel._log_request", [147, 3.044, 387, 5.747, 597, 6.59, 738, 7.048]], ["kind/googleapiclient.model.BaseModel._log_request", [54, -1.049]], ["name/googleapiclient.model.BaseModel.request", [147, 10.86]], ["names/googleapiclient.model.BaseModel.request", [147, 2.233]], ["qname/googleapiclient.model.BaseModel.request", [739, 11.376]], ["docstring/googleapiclient.model.BaseModel.request", [57, 0.615, 65, 1.701, 75, 3.824, 147, 2.571, 150, 1.395, 177, 1.995, 183, 2.582, 199, 2.122, 201, 1.923, 207, 1.28, 233, 1.257, 285, 0.656, 410, 4.255, 417, 1.16, 418, 4.437, 514, 3.141, 636, 1.746, 708, 2.353, 709, 4.671, 710, 4.671, 711, 2.751, 712, 2.2, 713, 1.995, 714, 2.2]], ["kind/googleapiclient.model.BaseModel.request", [54, -1.049]], ["name/googleapiclient.model.BaseModel._build_query", [740, 34.129]], ["names/googleapiclient.model.BaseModel._build_query", [414, 4.098, 594, 3.463]], ["qname/googleapiclient.model.BaseModel._build_query", [741, 11.376]], ["docstring/googleapiclient.model.BaseModel._build_query", [57, 1.253, 144, 1.844, 183, 3.489, 233, 2.176, 285, 1.338, 408, 4.485, 410, 3.168, 417, 2.365, 418, 6.473, 419, 3.234, 594, 3.305, 742, 4.796]], ["kind/googleapiclient.model.BaseModel._build_query", [54, -1.049]], ["name/googleapiclient.model.BaseModel._log_response", [743, 34.129]], ["names/googleapiclient.model.BaseModel._log_response", [387, 4.098, 700, 3.136]], ["qname/googleapiclient.model.BaseModel._log_response", [744, 11.376]], ["docstring/googleapiclient.model.BaseModel._log_response", [147, 2.464, 195, 3.159, 387, 5.747, 597, 6.59, 738, 7.048]], ["kind/googleapiclient.model.BaseModel._log_response", [54, -1.049]], ["name/googleapiclient.model.BaseModel.response", [700, 19.388]], ["names/googleapiclient.model.BaseModel.response", [700, 3.986]], ["qname/googleapiclient.model.BaseModel.response", [745, 11.376]], ["docstring/googleapiclient.model.BaseModel.response", [35, 2.721, 57, 0.931, 59, 2.264, 75, 2.115, 135, 1.495, 144, 2.087, 150, 1.942, 195, 3.296, 199, 1.938, 204, 2.353, 205, 2.807, 206, 2.455, 207, 2.953, 233, 1.148, 285, 0.994, 356, 2.082, 438, 2.644, 456, 2.513, 514, 2.646, 706, 2.353, 716, 3.02, 717, 3.331, 718, 2.905]], ["kind/googleapiclient.model.BaseModel.response", [54, -1.049]], ["name/googleapiclient.model.BaseModel.serialize", [746, 24.472]], ["names/googleapiclient.model.BaseModel.serialize", [746, 5.032]], ["qname/googleapiclient.model.BaseModel.serialize", [747, 11.376]], ["docstring/googleapiclient.model.BaseModel.serialize", [57, 1.253, 147, 1.677, 150, 2.794, 152, 3.559, 199, 3.672, 207, 3.672, 233, 1.546, 285, 1.338, 514, 3.291, 713, 4.066, 748, 3.559, 749, 3.911]], ["kind/googleapiclient.model.BaseModel.serialize", [54, -1.049]], ["name/googleapiclient.model.BaseModel.deserialize", [750, 21.907]], ["names/googleapiclient.model.BaseModel.deserialize", [750, 4.504]], ["qname/googleapiclient.model.BaseModel.deserialize", [751, 11.376]], ["docstring/googleapiclient.model.BaseModel.deserialize", [57, 1.19, 135, 1.91, 144, 1.751, 150, 2.328, 152, 3.38, 195, 2.917, 199, 2.477, 207, 3.539, 222, 2.583, 233, 2.097, 285, 1.27, 514, 3.172, 706, 3.008, 748, 3.38]], ["kind/googleapiclient.model.BaseModel.deserialize", [54, -1.049]], ["name/googleapiclient.model.JsonModel", [752, 62.127]], ["names/googleapiclient.model.JsonModel", [193, 5.785, 201, 4.955]], ["qname/googleapiclient.model.JsonModel", [753, 22.752]], ["docstring/googleapiclient.model.JsonModel", [21, 3.625, 37, 7.737, 144, 3.896, 147, 3.542, 150, 3.625, 193, 5.832, 195, 4.542, 199, 7.63, 201, 6.915, 207, 5.512, 208, 6.832, 514, 4.94, 706, 6.692]], ["kind/googleapiclient.model.JsonModel", [21, -4.094]], ["name/googleapiclient.model.JsonModel.accept", [485, 19.741]], ["names/googleapiclient.model.JsonModel.accept", [485, 4.059]], ["qname/googleapiclient.model.JsonModel.accept", [754, 11.376]], ["docstring/googleapiclient.model.JsonModel.accept", []], ["kind/googleapiclient.model.JsonModel.accept", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.JsonModel.content_type", [730, 26.333]], ["names/googleapiclient.model.JsonModel.content_type", [135, 2.108, 156, 2.423]], ["qname/googleapiclient.model.JsonModel.content_type", [755, 11.376]], ["docstring/googleapiclient.model.JsonModel.content_type", []], ["kind/googleapiclient.model.JsonModel.content_type", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.JsonModel.alt_param", [726, 25.331]], ["names/googleapiclient.model.JsonModel.alt_param", [419, 3.388, 728, 4.098]], ["qname/googleapiclient.model.JsonModel.alt_param", [756, 11.376]], ["docstring/googleapiclient.model.JsonModel.alt_param", []], ["kind/googleapiclient.model.JsonModel.alt_param", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.JsonModel.__init__", [441, 16.462]], ["names/googleapiclient.model.JsonModel.__init__", [442, 3.301]], ["qname/googleapiclient.model.JsonModel.__init__", [757, 11.376]], ["docstring/googleapiclient.model.JsonModel.__init__", [147, 2.061, 195, 2.642, 285, 1.645, 439, 4.062, 538, 3.679, 752, 5.895, 758, 6.476, 759, 4.501, 760, 5.895, 761, 5.512]], ["kind/googleapiclient.model.JsonModel.__init__", [54, -1.049]], ["name/googleapiclient.model.JsonModel._data_wrapper", [762, 34.129]], ["names/googleapiclient.model.JsonModel._data_wrapper", [439, 3.463, 761, 4.698]], ["qname/googleapiclient.model.JsonModel._data_wrapper", [763, 11.376]], ["docstring/googleapiclient.model.JsonModel._data_wrapper", []], ["kind/googleapiclient.model.JsonModel._data_wrapper", [268, -0.886, 445, -1.11]], ["name/googleapiclient.model.JsonModel.serialize", [746, 24.472]], ["names/googleapiclient.model.JsonModel.serialize", [746, 5.032]], ["qname/googleapiclient.model.JsonModel.serialize", [764, 11.376]], ["docstring/googleapiclient.model.JsonModel.serialize", [57, 1.253, 147, 1.677, 150, 2.794, 152, 3.559, 199, 3.672, 207, 3.672, 233, 1.546, 285, 1.338, 514, 3.291, 713, 4.066, 748, 3.559, 749, 3.911]], ["kind/googleapiclient.model.JsonModel.serialize", [54, -1.049]], ["name/googleapiclient.model.JsonModel.deserialize", [750, 21.907]], ["names/googleapiclient.model.JsonModel.deserialize", [750, 4.504]], ["qname/googleapiclient.model.JsonModel.deserialize", [765, 11.376]], ["docstring/googleapiclient.model.JsonModel.deserialize", [57, 1.19, 135, 1.91, 144, 1.751, 150, 2.328, 152, 3.38, 195, 2.917, 199, 2.477, 207, 3.539, 222, 2.583, 233, 2.097, 285, 1.27, 514, 3.172, 706, 3.008, 748, 3.38]], ["kind/googleapiclient.model.JsonModel.deserialize", [54, -1.049]], ["name/googleapiclient.model.JsonModel.no_content_response", [732, 26.333]], ["names/googleapiclient.model.JsonModel.no_content_response", [135, 1.737, 700, 2.585, 733, 3.511]], ["qname/googleapiclient.model.JsonModel.no_content_response", [766, 11.376]], ["docstring/googleapiclient.model.JsonModel.no_content_response", []], ["kind/googleapiclient.model.JsonModel.no_content_response", [457, -4.85]], ["name/googleapiclient.model.RawModel", [767, 68.257]], ["names/googleapiclient.model.RawModel", [193, 5.785, 768, 9.397]], ["qname/googleapiclient.model.RawModel", [769, 22.752]], ["docstring/googleapiclient.model.RawModel", [21, 3.102, 37, 6.62, 57, 3.282, 144, 3.334, 147, 4.391, 150, 3.102, 193, 4.99, 195, 3.886, 199, 6.832, 201, 6.192, 207, 4.716, 208, 5.845, 514, 4.226, 706, 5.726, 768, 8.106, 770, 8.669, 771, 5.509]], ["kind/googleapiclient.model.RawModel", [21, -4.094]], ["name/googleapiclient.model.RawModel.accept", [485, 19.741]], ["names/googleapiclient.model.RawModel.accept", [485, 4.059]], ["qname/googleapiclient.model.RawModel.accept", [772, 11.376]], ["docstring/googleapiclient.model.RawModel.accept", []], ["kind/googleapiclient.model.RawModel.accept", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.RawModel.content_type", [730, 26.333]], ["names/googleapiclient.model.RawModel.content_type", [135, 2.108, 156, 2.423]], ["qname/googleapiclient.model.RawModel.content_type", [773, 11.376]], ["docstring/googleapiclient.model.RawModel.content_type", []], ["kind/googleapiclient.model.RawModel.content_type", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.RawModel.alt_param", [726, 25.331]], ["names/googleapiclient.model.RawModel.alt_param", [419, 3.388, 728, 4.098]], ["qname/googleapiclient.model.RawModel.alt_param", [774, 11.376]], ["docstring/googleapiclient.model.RawModel.alt_param", []], ["kind/googleapiclient.model.RawModel.alt_param", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.RawModel.deserialize", [750, 21.907]], ["names/googleapiclient.model.RawModel.deserialize", [750, 4.504]], ["qname/googleapiclient.model.RawModel.deserialize", [775, 11.376]], ["docstring/googleapiclient.model.RawModel.deserialize", [57, 1.19, 135, 1.91, 144, 1.751, 150, 2.328, 152, 3.38, 195, 2.917, 199, 2.477, 207, 3.539, 222, 2.583, 233, 2.097, 285, 1.27, 514, 3.172, 706, 3.008, 748, 3.38]], ["kind/googleapiclient.model.RawModel.deserialize", [54, -1.049]], ["name/googleapiclient.model.RawModel.no_content_response", [732, 26.333]], ["names/googleapiclient.model.RawModel.no_content_response", [135, 1.737, 700, 2.585, 733, 3.511]], ["qname/googleapiclient.model.RawModel.no_content_response", [776, 11.376]], ["docstring/googleapiclient.model.RawModel.no_content_response", []], ["kind/googleapiclient.model.RawModel.no_content_response", [457, -4.85]], ["name/googleapiclient.model.MediaModel", [777, 68.257]], ["names/googleapiclient.model.MediaModel", [164, 4.505, 193, 5.785]], ["qname/googleapiclient.model.MediaModel", [778, 22.752]], ["docstring/googleapiclient.model.MediaModel", [21, 3.178, 37, 6.783, 57, 3.34, 144, 3.416, 147, 4.469, 150, 3.178, 164, 3.982, 193, 5.113, 195, 3.982, 199, 6.953, 201, 4.38, 207, 4.832, 208, 5.99, 514, 4.331, 706, 5.867, 768, 8.306, 771, 5.645]], ["kind/googleapiclient.model.MediaModel", [21, -4.094]], ["name/googleapiclient.model.MediaModel.accept", [485, 19.741]], ["names/googleapiclient.model.MediaModel.accept", [485, 4.059]], ["qname/googleapiclient.model.MediaModel.accept", [779, 11.376]], ["docstring/googleapiclient.model.MediaModel.accept", []], ["kind/googleapiclient.model.MediaModel.accept", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.MediaModel.content_type", [730, 26.333]], ["names/googleapiclient.model.MediaModel.content_type", [135, 2.108, 156, 2.423]], ["qname/googleapiclient.model.MediaModel.content_type", [780, 11.376]], ["docstring/googleapiclient.model.MediaModel.content_type", []], ["kind/googleapiclient.model.MediaModel.content_type", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.MediaModel.alt_param", [726, 25.331]], ["names/googleapiclient.model.MediaModel.alt_param", [419, 3.388, 728, 4.098]], ["qname/googleapiclient.model.MediaModel.alt_param", [781, 11.376]], ["docstring/googleapiclient.model.MediaModel.alt_param", []], ["kind/googleapiclient.model.MediaModel.alt_param", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.MediaModel.deserialize", [750, 21.907]], ["names/googleapiclient.model.MediaModel.deserialize", [750, 4.504]], ["qname/googleapiclient.model.MediaModel.deserialize", [782, 11.376]], ["docstring/googleapiclient.model.MediaModel.deserialize", [57, 1.19, 135, 1.91, 144, 1.751, 150, 2.328, 152, 3.38, 195, 2.917, 199, 2.477, 207, 3.539, 222, 2.583, 233, 2.097, 285, 1.27, 514, 3.172, 706, 3.008, 748, 3.38]], ["kind/googleapiclient.model.MediaModel.deserialize", [54, -1.049]], ["name/googleapiclient.model.MediaModel.no_content_response", [732, 26.333]], ["names/googleapiclient.model.MediaModel.no_content_response", [135, 1.737, 700, 2.585, 733, 3.511]], ["qname/googleapiclient.model.MediaModel.no_content_response", [783, 11.376]], ["docstring/googleapiclient.model.MediaModel.no_content_response", []], ["kind/googleapiclient.model.MediaModel.no_content_response", [457, -4.85]], ["name/googleapiclient.model.ProtocolBufferModel", [784, 62.127]], ["names/googleapiclient.model.ProtocolBufferModel", [193, 4.768, 785, 7.343, 786, 7.343]], ["qname/googleapiclient.model.ProtocolBufferModel", [787, 22.752]], ["docstring/googleapiclient.model.ProtocolBufferModel", [21, 3.625, 144, 3.896, 147, 3.542, 193, 5.832, 195, 4.542, 199, 7.63, 514, 4.94, 598, 9.473, 706, 6.692, 785, 12.433, 786, 12.433, 788, 11.132]], ["kind/googleapiclient.model.ProtocolBufferModel", [21, -4.094]], ["name/googleapiclient.model.ProtocolBufferModel.accept", [485, 19.741]], ["names/googleapiclient.model.ProtocolBufferModel.accept", [485, 4.059]], ["qname/googleapiclient.model.ProtocolBufferModel.accept", [789, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel.accept", []], ["kind/googleapiclient.model.ProtocolBufferModel.accept", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.ProtocolBufferModel.content_type", [730, 26.333]], ["names/googleapiclient.model.ProtocolBufferModel.content_type", [135, 2.108, 156, 2.423]], ["qname/googleapiclient.model.ProtocolBufferModel.content_type", [790, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel.content_type", []], ["kind/googleapiclient.model.ProtocolBufferModel.content_type", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.ProtocolBufferModel.alt_param", [726, 25.331]], ["names/googleapiclient.model.ProtocolBufferModel.alt_param", [419, 3.388, 728, 4.098]], ["qname/googleapiclient.model.ProtocolBufferModel.alt_param", [791, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel.alt_param", []], ["kind/googleapiclient.model.ProtocolBufferModel.alt_param", [21, -1.52, 268, -0.886]], ["name/googleapiclient.model.ProtocolBufferModel.__init__", [441, 16.462]], ["names/googleapiclient.model.ProtocolBufferModel.__init__", [442, 3.301]], ["qname/googleapiclient.model.ProtocolBufferModel.__init__", [792, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel.__init__", [7, 2.532, 21, 2.1, 28, 2.095, 57, 1.033, 144, 1.521, 195, 2.631, 199, 3.809, 227, 2.347, 285, 1.103, 538, 2.468, 706, 3.877, 784, 3.954, 785, 6.206, 786, 6.206, 793, 4.344]], ["kind/googleapiclient.model.ProtocolBufferModel.__init__", [54, -1.049]], ["name/googleapiclient.model.ProtocolBufferModel._protocol_buffer", [794, 34.129]], ["names/googleapiclient.model.ProtocolBufferModel._protocol_buffer", [785, 4.454, 786, 4.454]], ["qname/googleapiclient.model.ProtocolBufferModel._protocol_buffer", [795, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel._protocol_buffer", []], ["kind/googleapiclient.model.ProtocolBufferModel._protocol_buffer", [268, -0.886, 445, -1.11]], ["name/googleapiclient.model.ProtocolBufferModel.serialize", [746, 24.472]], ["names/googleapiclient.model.ProtocolBufferModel.serialize", [746, 5.032]], ["qname/googleapiclient.model.ProtocolBufferModel.serialize", [796, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel.serialize", [57, 1.253, 147, 1.677, 150, 2.794, 152, 3.559, 199, 3.672, 207, 3.672, 233, 1.546, 285, 1.338, 514, 3.291, 713, 4.066, 748, 3.559, 749, 3.911]], ["kind/googleapiclient.model.ProtocolBufferModel.serialize", [54, -1.049]], ["name/googleapiclient.model.ProtocolBufferModel.deserialize", [750, 21.907]], ["names/googleapiclient.model.ProtocolBufferModel.deserialize", [750, 4.504]], ["qname/googleapiclient.model.ProtocolBufferModel.deserialize", [797, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel.deserialize", [57, 1.19, 135, 1.91, 144, 1.751, 150, 2.328, 152, 3.38, 195, 2.917, 199, 2.477, 207, 3.539, 222, 2.583, 233, 2.097, 285, 1.27, 514, 3.172, 706, 3.008, 748, 3.38]], ["kind/googleapiclient.model.ProtocolBufferModel.deserialize", [54, -1.049]], ["name/googleapiclient.model.ProtocolBufferModel.no_content_response", [732, 26.333]], ["names/googleapiclient.model.ProtocolBufferModel.no_content_response", [135, 1.737, 700, 2.585, 733, 3.511]], ["qname/googleapiclient.model.ProtocolBufferModel.no_content_response", [798, 11.376]], ["docstring/googleapiclient.model.ProtocolBufferModel.no_content_response", []], ["kind/googleapiclient.model.ProtocolBufferModel.no_content_response", [457, -4.85]], ["name/googleapiclient.model.makepatch", [799, 31.064]], ["names/googleapiclient.model.makepatch", [799, 6.387]], ["qname/googleapiclient.model.makepatch", [800, 11.376]], ["docstring/googleapiclient.model.makepatch", [20, 1.311, 30, 1.958, 37, 1.687, 40, 1.332, 43, 1.459, 48, 3.29, 52, 1.74, 54, 0.875, 57, 0.577, 65, 2.674, 150, 1.998, 222, 2.099, 260, 2.209, 285, 0.616, 341, 2.065, 514, 1.077, 538, 1.379, 545, 3.689, 576, 1.801, 583, 1.271, 602, 1.687, 749, 1.801, 801, 5.223, 802, 1.958, 803, 2.427, 804, 1.74, 805, 1.801, 806, 5.223, 807, 4.4, 808, 1.958, 809, 2.065, 810, 2.427, 811, 2.427, 812, 2.427, 813, 2.427, 814, 2.427, 815, 2.427, 816, 2.427, 817, 2.427, 818, 2.427]], ["kind/googleapiclient.model.makepatch", [14, -2.096]], ["name/googleapiclient.http.LOGGER", [309, 20.517]], ["names/googleapiclient.http.LOGGER", [309, 4.218]], ["qname/googleapiclient.http.LOGGER", [819, 11.376]], ["docstring/googleapiclient.http.LOGGER", []], ["kind/googleapiclient.http.LOGGER", [315, -2.422]], ["name/googleapiclient.http.DEFAULT_CHUNK_SIZE", [820, 34.129]], ["names/googleapiclient.http.DEFAULT_CHUNK_SIZE", [239, 2.223, 482, 2.115, 492, 2.632]], ["qname/googleapiclient.http.DEFAULT_CHUNK_SIZE", [821, 11.376]], ["docstring/googleapiclient.http.DEFAULT_CHUNK_SIZE", []], ["kind/googleapiclient.http.DEFAULT_CHUNK_SIZE", [315, -2.422]], ["name/googleapiclient.http.MAX_URI_LENGTH", [822, 34.129]], ["names/googleapiclient.http.MAX_URI_LENGTH", [417, 2.042, 823, 3.163, 824, 3.672]], ["qname/googleapiclient.http.MAX_URI_LENGTH", [825, 11.376]], ["docstring/googleapiclient.http.MAX_URI_LENGTH", []], ["kind/googleapiclient.http.MAX_URI_LENGTH", [315, -2.422]], ["name/googleapiclient.http.MAX_BATCH_LIMIT", [826, 34.129]], ["names/googleapiclient.http.MAX_BATCH_LIMIT", [499, 2.854, 611, 3.263, 823, 3.163]], ["qname/googleapiclient.http.MAX_BATCH_LIMIT", [827, 11.376]], ["docstring/googleapiclient.http.MAX_BATCH_LIMIT", []], ["kind/googleapiclient.http.MAX_BATCH_LIMIT", [315, -2.422]], ["name/googleapiclient.http._TOO_MANY_REQUESTS", [828, 34.129]], ["names/googleapiclient.http._TOO_MANY_REQUESTS", [829, 4.55, 830, 4.55, 831, 4.142]], ["qname/googleapiclient.http._TOO_MANY_REQUESTS", [832, 11.376]], ["docstring/googleapiclient.http._TOO_MANY_REQUESTS", []], ["kind/googleapiclient.http._TOO_MANY_REQUESTS", [315, -2.422]], ["name/googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC", [833, 34.129]], ["names/googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC", [144, 1.355, 239, 1.891, 834, 3.523, 835, 3.87]], ["qname/googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC", [836, 11.376]], ["docstring/googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC", []], ["kind/googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC", [315, -2.422]], ["name/googleapiclient.http._LEGACY_BATCH_URI", [837, 34.129]], ["names/googleapiclient.http._LEGACY_BATCH_URI", [417, 2.042, 499, 2.854, 838, 4.55]], ["qname/googleapiclient.http._LEGACY_BATCH_URI", [839, 11.376]], ["docstring/googleapiclient.http._LEGACY_BATCH_URI", []], ["kind/googleapiclient.http._LEGACY_BATCH_URI", [315, -2.422]], ["name/googleapiclient.http._should_retry_response", [840, 34.129]], ["names/googleapiclient.http._should_retry_response", [700, 2.585, 841, 4.55, 842, 4.142]], ["qname/googleapiclient.http._should_retry_response", [843, 11.376]], ["docstring/googleapiclient.http._should_retry_response", [35, 3.477, 57, 1.19, 135, 2.729, 184, 4.258, 195, 3.712, 285, 1.27, 456, 3.211, 514, 2.22, 844, 3.587, 845, 5.126, 846, 5.003, 847, 2.842, 848, 3.713, 849, 3.38]], ["kind/googleapiclient.http._should_retry_response", [14, -2.096]], ["name/googleapiclient.http._retry_request", [850, 34.129]], ["names/googleapiclient.http._retry_request", [147, 1.757, 842, 5.025]], ["qname/googleapiclient.http._retry_request", [851, 11.376]], ["docstring/googleapiclient.http._retry_request", [7, 1.956, 14, 0.754, 37, 1.571, 54, 0.639, 57, 1.185, 59, 1.308, 67, 0.992, 98, 1.678, 128, 1.744, 135, 0.863, 141, 2.344, 144, 2.658, 147, 2.268, 150, 0.736, 151, 1.621, 156, 0.992, 195, 0.922, 285, 0.972, 339, 1.824, 387, 1.678, 393, 2.057, 394, 1.284, 417, 1.718, 571, 2.402, 573, 1.744, 583, 1.184, 613, 1.621, 845, 4.705, 852, 2.26, 853, 1.824, 854, 3.829, 855, 2.26, 856, 2.26, 857, 1.678, 858, 2.26, 859, 3.259, 860, 1.924, 861, 1.678, 862, 2.26, 863, 2.26]], ["kind/googleapiclient.http._retry_request", [14, -2.096]], ["name/googleapiclient.http.MediaUploadProgress", [864, 68.257]], ["names/googleapiclient.http.MediaUploadProgress", [164, 3.713, 481, 3.994, 865, 5.987]], ["qname/googleapiclient.http.MediaUploadProgress", [866, 22.752]], ["docstring/googleapiclient.http.MediaUploadProgress", [456, 10.785, 481, 7.373, 490, 10.311]], ["kind/googleapiclient.http.MediaUploadProgress", [21, -4.094]], ["name/googleapiclient.http.MediaUploadProgress.__init__", [441, 16.462]], ["names/googleapiclient.http.MediaUploadProgress.__init__", [442, 3.301]], ["qname/googleapiclient.http.MediaUploadProgress.__init__", [867, 11.376]], ["docstring/googleapiclient.http.MediaUploadProgress.__init__", [171, 3.415, 258, 2.533, 285, 1.209, 433, 2.495, 481, 3.028, 482, 2.213, 543, 3.991, 571, 2.987, 598, 4.053, 771, 3.991, 868, 3.674, 869, 4.335, 870, 4.335, 871, 4.795, 872, 4.335, 873, 4.762, 874, 4.762]], ["kind/googleapiclient.http.MediaUploadProgress.__init__", [54, -1.049]], ["name/googleapiclient.http.MediaUploadProgress.resumable_progress", [868, 26.333]], ["names/googleapiclient.http.MediaUploadProgress.resumable_progress", [487, 3.463, 865, 3.632]], ["qname/googleapiclient.http.MediaUploadProgress.resumable_progress", [875, 11.376]], ["docstring/googleapiclient.http.MediaUploadProgress.resumable_progress", []], ["kind/googleapiclient.http.MediaUploadProgress.resumable_progress", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaUploadProgress.total_size", [876, 31.064]], ["names/googleapiclient.http.MediaUploadProgress.total_size", [482, 2.566, 871, 3.837]], ["qname/googleapiclient.http.MediaUploadProgress.total_size", [877, 11.376]], ["docstring/googleapiclient.http.MediaUploadProgress.total_size", []], ["kind/googleapiclient.http.MediaUploadProgress.total_size", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaUploadProgress.progress", [865, 22.453]], ["names/googleapiclient.http.MediaUploadProgress.progress", [865, 4.616]], ["qname/googleapiclient.http.MediaUploadProgress.progress", [878, 11.376]], ["docstring/googleapiclient.http.MediaUploadProgress.progress", [57, 1.869, 171, 5.634, 467, 3.768, 481, 3.448, 482, 2.662, 871, 3.98, 879, 5.213, 880, 7.152, 881, 5.213, 882, 5.213]], ["kind/googleapiclient.http.MediaUploadProgress.progress", [54, -1.049]], ["name/googleapiclient.http.MediaDownloadProgress", [883, 62.127]], ["names/googleapiclient.http.MediaDownloadProgress", [164, 3.713, 865, 5.987, 884, 6.325]], ["qname/googleapiclient.http.MediaDownloadProgress", [885, 22.752]], ["docstring/googleapiclient.http.MediaDownloadProgress", [456, 10.785, 490, 10.311, 884, 11.677]], ["kind/googleapiclient.http.MediaDownloadProgress", [21, -4.094]], ["name/googleapiclient.http.MediaDownloadProgress.__init__", [441, 16.462]], ["names/googleapiclient.http.MediaDownloadProgress.__init__", [442, 3.301]], ["qname/googleapiclient.http.MediaDownloadProgress.__init__", [886, 11.376]], ["docstring/googleapiclient.http.MediaDownloadProgress.__init__", [35, 4.099, 171, 4.229, 258, 3.137, 285, 1.498, 543, 4.637, 771, 4.637, 868, 4.55, 869, 5.368, 870, 5.368, 871, 4.099, 884, 4.099]], ["kind/googleapiclient.http.MediaDownloadProgress.__init__", [54, -1.049]], ["name/googleapiclient.http.MediaDownloadProgress.resumable_progress", [868, 26.333]], ["names/googleapiclient.http.MediaDownloadProgress.resumable_progress", [487, 3.463, 865, 3.632]], ["qname/googleapiclient.http.MediaDownloadProgress.resumable_progress", [887, 11.376]], ["docstring/googleapiclient.http.MediaDownloadProgress.resumable_progress", []], ["kind/googleapiclient.http.MediaDownloadProgress.resumable_progress", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaDownloadProgress.total_size", [876, 31.064]], ["names/googleapiclient.http.MediaDownloadProgress.total_size", [482, 2.566, 871, 3.837]], ["qname/googleapiclient.http.MediaDownloadProgress.total_size", [888, 11.376]], ["docstring/googleapiclient.http.MediaDownloadProgress.total_size", []], ["kind/googleapiclient.http.MediaDownloadProgress.total_size", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaDownloadProgress.progress", [865, 22.453]], ["names/googleapiclient.http.MediaDownloadProgress.progress", [865, 4.616]], ["qname/googleapiclient.http.MediaDownloadProgress.progress", [889, 11.376]], ["docstring/googleapiclient.http.MediaDownloadProgress.progress", [57, 1.869, 171, 5.634, 467, 3.768, 482, 2.662, 871, 3.98, 879, 5.213, 880, 7.152, 881, 5.213, 882, 5.213, 884, 5.461]], ["kind/googleapiclient.http.MediaDownloadProgress.progress", [54, -1.049]], ["name/googleapiclient.http.MediaUpload", [890, 43.815]], ["names/googleapiclient.http.MediaUpload", [164, 4.505, 481, 4.846]], ["qname/googleapiclient.http.MediaUpload", [891, 22.752]], ["docstring/googleapiclient.http.MediaUpload", [7, 3.668, 9, 1.978, 20, 5.637, 21, 3.043, 24, 1.8, 26, 1.269, 40, 1.463, 54, 0.445, 57, 1.146, 64, 1.635, 70, 4.099, 91, 1.753, 101, 1.852, 109, 1.911, 120, 1.911, 143, 2.15, 144, 1.686, 147, 1.533, 150, 3.043, 158, 2.15, 164, 3.296, 200, 1.8, 207, 1.319, 245, 2.15, 345, 4.384, 382, 1.911, 439, 1.671, 481, 5.36, 482, 2.238, 492, 2.786, 494, 1.8, 539, 2.15, 571, 1.671, 583, 1.396, 595, 2.268, 605, 2.425, 611, 1.911, 705, 1.911, 721, 4.726, 802, 2.15, 805, 1.978, 847, 1.514, 890, 6.697, 892, 1.753, 893, 2.425, 894, 4.816, 895, 2.665, 896, 2.665, 897, 2.665, 898, 2.665, 899, 2.268, 900, 2.268, 901, 2.268, 902, 2.665, 903, 4.816, 904, 2.665, 905, 6.497, 906, 3.454, 907, 2.15, 908, 3.454, 909, 4.099, 910, 6.591, 911, 3.886, 912, 2.268, 913, 2.056, 914, 2.425, 915, 2.268, 916, 2.15, 917, 2.425, 918, 2.268, 919, 2.665, 920, 2.665]], ["kind/googleapiclient.http.MediaUpload", [21, -4.094]], ["name/googleapiclient.http.MediaUpload.chunksize", [921, 24.472]], ["names/googleapiclient.http.MediaUpload.chunksize", [921, 5.032]], ["qname/googleapiclient.http.MediaUpload.chunksize", [922, 11.376]], ["docstring/googleapiclient.http.MediaUpload.chunksize", [57, 1.648, 481, 3.041, 482, 4.146, 490, 4.253, 492, 5.16, 771, 4.008]], ["kind/googleapiclient.http.MediaUpload.chunksize", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.mimetype", [923, 26.333]], ["names/googleapiclient.http.MediaUpload.mimetype", [923, 5.414]], ["qname/googleapiclient.http.MediaUpload.mimetype", [924, 11.376]], ["docstring/googleapiclient.http.MediaUpload.mimetype", [57, 1.772, 155, 5.615, 156, 4.099, 514, 3.307]], ["kind/googleapiclient.http.MediaUpload.mimetype", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.size", [482, 15.861]], ["names/googleapiclient.http.MediaUpload.size", [482, 3.261]], ["qname/googleapiclient.http.MediaUpload.size", [925, 11.376]], ["docstring/googleapiclient.http.MediaUpload.size", [57, 1.648, 433, 3.631, 467, 4.559, 481, 3.041, 482, 4.585, 514, 3.075]], ["kind/googleapiclient.http.MediaUpload.size", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.resumable", [487, 21.407]], ["names/googleapiclient.http.MediaUpload.resumable", [487, 4.401]], ["qname/googleapiclient.http.MediaUpload.resumable", [926, 11.376]], ["docstring/googleapiclient.http.MediaUpload.resumable", [57, 1.648, 481, 3.915, 490, 5.474, 844, 4.969, 847, 3.937, 849, 4.681]], ["kind/googleapiclient.http.MediaUpload.resumable", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.getbytes", [927, 27.537]], ["names/googleapiclient.http.MediaUpload.getbytes", [927, 5.662]], ["qname/googleapiclient.http.MediaUpload.getbytes", [928, 11.376]], ["docstring/googleapiclient.http.MediaUpload.getbytes", [55, 3.78, 57, 1.057, 125, 2.229, 164, 1.812, 233, 1.303, 285, 1.128, 338, 3.297, 394, 2.523, 543, 3.792, 771, 4.508, 824, 5.29, 929, 6.013, 930, 4.043, 931, 4.557, 932, 4.442, 933, 3.78, 934, 3.78]], ["kind/googleapiclient.http.MediaUpload.getbytes", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.has_stream", [912, 29.045]], ["names/googleapiclient.http.MediaUpload.has_stream", [265, 4.26, 905, 2.936]], ["qname/googleapiclient.http.MediaUpload.has_stream", [935, 11.376]], ["docstring/googleapiclient.http.MediaUpload.has_stream", [20, 3.542, 38, 2.523, 57, 1.854, 369, 2.523, 481, 1.949, 705, 3.185, 721, 4.701, 847, 3.725, 905, 4.145, 906, 3.185, 908, 3.185, 913, 3.427, 936, 3.297, 937, 3.584, 938, 3.427, 939, 5.059]], ["kind/googleapiclient.http.MediaUpload.has_stream", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.stream", [905, 18.153]], ["names/googleapiclient.http.MediaUpload.stream", [905, 3.732]], ["qname/googleapiclient.http.MediaUpload.stream", [940, 11.376]], ["docstring/googleapiclient.http.MediaUpload.stream", [20, 2.925, 57, 2.071, 64, 3.322, 67, 2.376, 439, 3.396, 481, 2.376, 705, 3.882, 721, 3.882, 847, 3.075, 905, 2.879, 908, 3.882, 937, 4.368, 938, 4.177, 939, 4.177]], ["kind/googleapiclient.http.MediaUpload.stream", [54, -1.049]], ["name/googleapiclient.http.MediaUpload._to_json", [941, 34.129]], ["names/googleapiclient.http.MediaUpload._to_json", [201, 2.477, 942, 3.463]], ["qname/googleapiclient.http.MediaUpload._to_json", [943, 11.376]], ["docstring/googleapiclient.http.MediaUpload._to_json", [14, 1.55, 16, 3.588, 43, 2.796, 57, 1.106, 86, 3.588, 201, 3.591, 208, 4.162, 233, 1.364, 261, 2.111, 285, 1.181, 369, 2.642, 583, 2.436, 808, 3.752, 890, 2.985, 944, 4.65, 945, 6.172, 946, 4.65, 947, 3.588]], ["kind/googleapiclient.http.MediaUpload._to_json", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.to_json", [948, 26.333]], ["names/googleapiclient.http.MediaUpload.to_json", [201, 2.477, 942, 3.463]], ["qname/googleapiclient.http.MediaUpload.to_json", [949, 11.376]], ["docstring/googleapiclient.http.MediaUpload.to_json", [43, 3.545, 57, 1.403, 201, 3.598, 208, 4.92, 233, 1.73, 369, 4.554, 583, 3.09, 808, 4.758, 890, 3.786, 947, 4.55]], ["kind/googleapiclient.http.MediaUpload.to_json", [54, -1.049]], ["name/googleapiclient.http.MediaUpload.new_from_json", [950, 34.129]], ["names/googleapiclient.http.MediaUpload.new_from_json", [44, 2.994, 201, 2.042, 273, 3.074]], ["qname/googleapiclient.http.MediaUpload.new_from_json", [951, 11.376]], ["docstring/googleapiclient.http.MediaUpload.new_from_json", [16, 3.674, 21, 1.551, 54, 0.795, 57, 1.133, 199, 2.358, 201, 3.096, 208, 2.923, 233, 1.397, 251, 4.335, 254, 4.053, 285, 1.209, 369, 2.705, 721, 4.947, 890, 4.429, 948, 6.259, 952, 4.335]], ["kind/googleapiclient.http.MediaUpload.new_from_json", [21, -1.52, 54, -0.779]], ["name/googleapiclient.http.MediaIoBaseUpload", [953, 58.09]], ["names/googleapiclient.http.MediaIoBaseUpload", [26, 3.687, 164, 3.158, 481, 3.397, 954, 7.045]], ["qname/googleapiclient.http.MediaIoBaseUpload", [955, 22.752]], ["docstring/googleapiclient.http.MediaIoBaseUpload", [7, 1.679, 9, 3.174, 20, 2.311, 21, 1.393, 24, 4.935, 41, 1.964, 48, 4.582, 52, 3.067, 91, 2.814, 120, 3.067, 125, 4.799, 127, 2.745, 128, 3.3, 147, 2.325, 150, 2.379, 164, 1.745, 200, 2.889, 207, 3.617, 276, 3.64, 439, 2.683, 481, 3.206, 482, 1.988, 484, 3.3, 494, 4.935, 583, 2.241, 611, 3.067, 660, 5.238, 802, 3.451, 804, 3.067, 890, 2.745, 899, 3.64, 905, 2.275, 906, 5.238, 907, 3.451, 909, 3.64, 911, 5.894, 913, 3.3, 915, 3.64, 916, 3.451, 918, 3.64, 956, 3.893, 957, 4.277, 958, 4.277, 959, 3.64, 960, 3.893, 961, 3.64, 962, 3.64, 963, 3.64, 964, 3.64, 965, 3.893, 966, 3.64, 967, 5.077, 968, 3.893, 969, 5.636, 970, 3.64, 971, 5.894, 972, 3.3]], ["kind/googleapiclient.http.MediaIoBaseUpload", [21, -4.094]], ["name/googleapiclient.http.MediaIoBaseUpload.__init__", [441, 16.462]], ["names/googleapiclient.http.MediaIoBaseUpload.__init__", [442, 3.301]], ["qname/googleapiclient.http.MediaIoBaseUpload.__init__", [973, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.__init__", [7, 1.475, 9, 1.64, 24, 1.493, 38, 1.255, 41, 1.015, 67, 0.97, 91, 1.454, 120, 1.585, 125, 2.9, 127, 2.411, 147, 1.195, 150, 0.72, 155, 1.329, 156, 0.97, 227, 1.194, 233, 0.648, 258, 1.175, 285, 0.561, 478, 1.783, 481, 2.842, 482, 1.027, 484, 1.705, 490, 2.305, 492, 2.173, 494, 2.538, 543, 1.278, 583, 1.158, 611, 1.585, 660, 2.694, 717, 1.881, 771, 2.173, 847, 1.255, 849, 1.493, 905, 1.998, 906, 1.585, 908, 1.585, 936, 1.64, 939, 1.705, 971, 3.031, 972, 1.705, 974, 2.898, 975, 2.21, 976, 3.757, 977, 3.757, 978, 3.757, 979, 1.705, 980, 1.881, 981, 1.783]], ["kind/googleapiclient.http.MediaIoBaseUpload.__init__", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload._fd", [982, 29.045]], ["names/googleapiclient.http.MediaIoBaseUpload._fd", [974, 5.414]], ["qname/googleapiclient.http.MediaIoBaseUpload._fd", [983, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload._fd", []], ["kind/googleapiclient.http.MediaIoBaseUpload._fd", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseUpload._mimetype", [984, 34.129]], ["names/googleapiclient.http.MediaIoBaseUpload._mimetype", [923, 5.414]], ["qname/googleapiclient.http.MediaIoBaseUpload._mimetype", [985, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload._mimetype", []], ["kind/googleapiclient.http.MediaIoBaseUpload._mimetype", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseUpload._chunksize", [986, 29.045]], ["names/googleapiclient.http.MediaIoBaseUpload._chunksize", [921, 5.032]], ["qname/googleapiclient.http.MediaIoBaseUpload._chunksize", [987, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload._chunksize", []], ["kind/googleapiclient.http.MediaIoBaseUpload._chunksize", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseUpload._resumable", [988, 34.129]], ["names/googleapiclient.http.MediaIoBaseUpload._resumable", [487, 4.401]], ["qname/googleapiclient.http.MediaIoBaseUpload._resumable", [989, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload._resumable", []], ["kind/googleapiclient.http.MediaIoBaseUpload._resumable", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseUpload._size", [990, 34.129]], ["names/googleapiclient.http.MediaIoBaseUpload._size", [482, 3.261]], ["qname/googleapiclient.http.MediaIoBaseUpload._size", [991, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload._size", []], ["kind/googleapiclient.http.MediaIoBaseUpload._size", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseUpload.chunksize", [921, 24.472]], ["names/googleapiclient.http.MediaIoBaseUpload.chunksize", [921, 5.032]], ["qname/googleapiclient.http.MediaIoBaseUpload.chunksize", [992, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.chunksize", [57, 1.648, 481, 3.041, 482, 4.146, 490, 4.253, 492, 5.16, 771, 4.008]], ["kind/googleapiclient.http.MediaIoBaseUpload.chunksize", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload.mimetype", [923, 26.333]], ["names/googleapiclient.http.MediaIoBaseUpload.mimetype", [923, 5.414]], ["qname/googleapiclient.http.MediaIoBaseUpload.mimetype", [993, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.mimetype", [57, 1.772, 155, 5.615, 156, 4.099, 514, 3.307]], ["kind/googleapiclient.http.MediaIoBaseUpload.mimetype", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload.size", [482, 15.861]], ["names/googleapiclient.http.MediaIoBaseUpload.size", [482, 3.261]], ["qname/googleapiclient.http.MediaIoBaseUpload.size", [994, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.size", [57, 1.648, 433, 3.631, 467, 4.559, 481, 3.041, 482, 4.585, 514, 3.075]], ["kind/googleapiclient.http.MediaIoBaseUpload.size", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload.resumable", [487, 21.407]], ["names/googleapiclient.http.MediaIoBaseUpload.resumable", [487, 4.401]], ["qname/googleapiclient.http.MediaIoBaseUpload.resumable", [995, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.resumable", [57, 1.648, 481, 3.915, 490, 5.474, 844, 4.969, 847, 3.937, 849, 4.681]], ["kind/googleapiclient.http.MediaIoBaseUpload.resumable", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload.getbytes", [927, 27.537]], ["names/googleapiclient.http.MediaIoBaseUpload.getbytes", [927, 5.662]], ["qname/googleapiclient.http.MediaIoBaseUpload.getbytes", [996, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.getbytes", [55, 3.78, 57, 1.057, 125, 2.229, 164, 1.812, 233, 1.303, 285, 1.128, 338, 3.297, 394, 2.523, 543, 3.792, 771, 4.508, 824, 5.29, 929, 6.013, 930, 4.043, 931, 4.557, 933, 3.78, 934, 3.78, 997, 4.442]], ["kind/googleapiclient.http.MediaIoBaseUpload.getbytes", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload.has_stream", [912, 29.045]], ["names/googleapiclient.http.MediaIoBaseUpload.has_stream", [265, 4.26, 905, 2.936]], ["qname/googleapiclient.http.MediaIoBaseUpload.has_stream", [998, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.has_stream", [20, 3.542, 38, 2.523, 57, 1.854, 369, 2.523, 481, 1.949, 705, 3.185, 721, 4.701, 847, 3.725, 905, 4.145, 906, 3.185, 908, 3.185, 913, 3.427, 936, 3.297, 937, 3.584, 938, 3.427, 939, 5.059]], ["kind/googleapiclient.http.MediaIoBaseUpload.has_stream", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload.stream", [905, 18.153]], ["names/googleapiclient.http.MediaIoBaseUpload.stream", [905, 3.732]], ["qname/googleapiclient.http.MediaIoBaseUpload.stream", [999, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.stream", [20, 2.925, 57, 2.071, 64, 3.322, 67, 2.376, 439, 3.396, 481, 2.376, 705, 3.882, 721, 3.882, 847, 3.075, 905, 2.879, 908, 3.882, 937, 4.368, 938, 4.177, 939, 4.177]], ["kind/googleapiclient.http.MediaIoBaseUpload.stream", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseUpload.to_json", [948, 26.333]], ["names/googleapiclient.http.MediaIoBaseUpload.to_json", [201, 2.477, 942, 3.463]], ["qname/googleapiclient.http.MediaIoBaseUpload.to_json", [1000, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseUpload.to_json", [156, 3.687, 481, 3.687, 714, 7.149]], ["kind/googleapiclient.http.MediaIoBaseUpload.to_json", [54, -1.049]], ["name/googleapiclient.http.MediaFileUpload", [1001, 58.09]], ["names/googleapiclient.http.MediaFileUpload", [125, 4.568, 164, 3.713, 481, 3.994]], ["qname/googleapiclient.http.MediaFileUpload", [1002, 22.752]], ["docstring/googleapiclient.http.MediaFileUpload", [9, 3.281, 20, 2.388, 24, 2.986, 40, 2.427, 41, 2.03, 48, 2.772, 52, 3.169, 54, 0.737, 91, 2.908, 120, 3.169, 125, 4.918, 127, 2.837, 128, 3.41, 147, 2.391, 164, 1.803, 183, 2.079, 200, 2.986, 207, 2.189, 276, 3.762, 481, 3.297, 482, 2.054, 484, 3.41, 494, 5.075, 538, 2.511, 583, 3.936, 610, 2.772, 611, 3.169, 660, 5.387, 802, 3.566, 804, 3.169, 805, 3.281, 890, 2.837, 899, 3.762, 905, 2.351, 909, 3.762, 911, 6.062, 913, 3.41, 915, 3.762, 916, 3.566, 918, 3.762, 959, 3.762, 960, 4.023, 961, 3.762, 962, 3.762, 963, 3.762, 964, 3.762, 965, 4.023, 966, 3.762, 967, 5.222, 968, 4.023, 969, 5.797, 970, 3.762, 971, 6.062, 972, 3.41, 1001, 3.762, 1003, 4.023, 1004, 4.42, 1005, 4.023]], ["kind/googleapiclient.http.MediaFileUpload", [21, -4.094]], ["name/googleapiclient.http.MediaFileUpload.__init__", [441, 16.462]], ["names/googleapiclient.http.MediaFileUpload.__init__", [442, 3.301]], ["qname/googleapiclient.http.MediaFileUpload.__init__", [1006, 11.376]], ["docstring/googleapiclient.http.MediaFileUpload.__init__", [7, 1.002, 9, 1.894, 24, 1.724, 41, 1.172, 67, 1.12, 91, 1.679, 120, 1.83, 125, 3.527, 127, 2.721, 147, 1.349, 155, 2.548, 156, 1.86, 233, 1.244, 258, 1.357, 261, 1.158, 285, 0.648, 433, 1.337, 478, 2.059, 481, 2.779, 482, 1.186, 484, 1.969, 490, 2.602, 492, 2.452, 494, 2.864, 543, 1.476, 583, 1.337, 611, 1.83, 660, 3.04, 771, 1.476, 847, 1.45, 849, 1.724, 936, 1.894, 971, 3.421, 972, 1.969, 979, 1.969, 980, 2.172, 981, 2.059, 1007, 2.172, 1008, 2.552, 1009, 2.552]], ["kind/googleapiclient.http.MediaFileUpload.__init__", [54, -1.049]], ["name/googleapiclient.http.MediaFileUpload._fd", [982, 29.045]], ["names/googleapiclient.http.MediaFileUpload._fd", [974, 5.414]], ["qname/googleapiclient.http.MediaFileUpload._fd", [1010, 11.376]], ["docstring/googleapiclient.http.MediaFileUpload._fd", []], ["kind/googleapiclient.http.MediaFileUpload._fd", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaFileUpload._filename", [1011, 34.129]], ["names/googleapiclient.http.MediaFileUpload._filename", [1012, 5.972]], ["qname/googleapiclient.http.MediaFileUpload._filename", [1013, 11.376]], ["docstring/googleapiclient.http.MediaFileUpload._filename", []], ["kind/googleapiclient.http.MediaFileUpload._filename", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaFileUpload.__del__", [1014, 34.129]], ["names/googleapiclient.http.MediaFileUpload.__del__", [1015, 7.017]], ["qname/googleapiclient.http.MediaFileUpload.__del__", [1016, 11.376]], ["docstring/googleapiclient.http.MediaFileUpload.__del__", []], ["kind/googleapiclient.http.MediaFileUpload.__del__", [54, -1.049]], ["name/googleapiclient.http.MediaFileUpload.to_json", [948, 26.333]], ["names/googleapiclient.http.MediaFileUpload.to_json", [201, 2.477, 942, 3.463]], ["qname/googleapiclient.http.MediaFileUpload.to_json", [1017, 11.376]], ["docstring/googleapiclient.http.MediaFileUpload.to_json", [43, 3.545, 57, 1.403, 201, 3.598, 208, 4.92, 233, 1.73, 369, 4.554, 583, 3.09, 808, 4.758, 947, 4.55, 1001, 5.019]], ["kind/googleapiclient.http.MediaFileUpload.to_json", [54, -1.049]], ["name/googleapiclient.http.MediaFileUpload.from_json", [947, 26.333]], ["names/googleapiclient.http.MediaFileUpload.from_json", [201, 2.477, 273, 3.729]], ["qname/googleapiclient.http.MediaFileUpload.from_json", [1018, 11.376]], ["docstring/googleapiclient.http.MediaFileUpload.from_json", []], ["kind/googleapiclient.http.MediaFileUpload.from_json", [54, -0.779, 1019, -3.464]], ["name/googleapiclient.http.MediaInMemoryUpload", [1020, 62.127]], ["names/googleapiclient.http.MediaInMemoryUpload", [164, 3.158, 481, 3.397, 1021, 7.045, 1022, 7.74]], ["qname/googleapiclient.http.MediaInMemoryUpload", [1023, 22.752]], ["docstring/googleapiclient.http.MediaInMemoryUpload", [7, 5.257, 492, 7.746, 771, 7.746, 890, 8.596, 905, 7.123, 953, 11.396, 1024, 11.396, 1025, 12.188, 1026, 12.188]], ["kind/googleapiclient.http.MediaInMemoryUpload", [21, -4.094]], ["name/googleapiclient.http.MediaInMemoryUpload.__init__", [441, 16.462]], ["names/googleapiclient.http.MediaInMemoryUpload.__init__", [442, 3.301]], ["qname/googleapiclient.http.MediaInMemoryUpload.__init__", [1027, 11.376]], ["docstring/googleapiclient.http.MediaInMemoryUpload.__init__", [7, 1.983, 43, 1.902, 44, 2.081, 125, 2.535, 127, 2.031, 135, 1.208, 147, 1.007, 155, 1.902, 156, 1.388, 233, 1.482, 239, 1.546, 285, 0.803, 478, 2.553, 481, 2.766, 490, 3.1, 492, 1.83, 494, 2.137, 514, 2.241, 543, 1.83, 771, 2.921, 847, 1.797, 849, 2.137, 905, 2.686, 936, 2.348, 953, 2.692, 979, 2.441, 980, 2.692, 981, 2.553, 1020, 2.88, 1024, 2.692, 1025, 2.88, 1026, 2.88, 1028, 3.164]], ["kind/googleapiclient.http.MediaInMemoryUpload.__init__", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseDownload", [1029, 68.257]], ["names/googleapiclient.http.MediaIoBaseDownload", [26, 3.687, 164, 3.158, 884, 5.38, 954, 7.045]], ["qname/googleapiclient.http.MediaIoBaseDownload", [1030, 22.752]], ["docstring/googleapiclient.http.MediaIoBaseDownload", [7, 2.407, 21, 1.997, 24, 4.142, 40, 3.367, 48, 9.712, 125, 3.077, 147, 3.134, 150, 1.997, 164, 2.502, 171, 4.397, 207, 3.036, 224, 6.323, 456, 6.323, 545, 3.686, 849, 6.654, 884, 9.825, 906, 4.397, 907, 4.947, 956, 5.581, 1031, 6.131, 1032, 6.131, 1033, 6.131, 1034, 6.131, 1035, 6.131, 1036, 10.507, 1037, 6.131, 1038, 5.581, 1039, 5.581, 1040, 5.581, 1041, 5.581, 1042, 5.581]], ["kind/googleapiclient.http.MediaIoBaseDownload", [21, -4.094]], ["name/googleapiclient.http.MediaIoBaseDownload.__init__", [441, 16.462]], ["names/googleapiclient.http.MediaIoBaseDownload.__init__", [442, 3.301]], ["qname/googleapiclient.http.MediaIoBaseDownload.__init__", [1043, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload.__init__", [125, 3.346, 147, 2.121, 150, 1.48, 164, 1.854, 258, 2.417, 285, 1.154, 346, 4.136, 492, 3.856, 494, 3.069, 543, 2.628, 748, 3.069, 771, 3.856, 884, 4.634, 905, 2.417, 906, 3.258, 974, 3.506, 979, 3.506, 1044, 4.136]], ["kind/googleapiclient.http.MediaIoBaseDownload.__init__", [54, -1.049]], ["name/googleapiclient.http.MediaIoBaseDownload._fd", [982, 29.045]], ["names/googleapiclient.http.MediaIoBaseDownload._fd", [974, 5.414]], ["qname/googleapiclient.http.MediaIoBaseDownload._fd", [1045, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._fd", []], ["kind/googleapiclient.http.MediaIoBaseDownload._fd", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._request", [1046, 34.129]], ["names/googleapiclient.http.MediaIoBaseDownload._request", [147, 2.233]], ["qname/googleapiclient.http.MediaIoBaseDownload._request", [1047, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._request", []], ["kind/googleapiclient.http.MediaIoBaseDownload._request", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._uri", [1048, 34.129]], ["names/googleapiclient.http.MediaIoBaseDownload._uri", [417, 3.149]], ["qname/googleapiclient.http.MediaIoBaseDownload._uri", [1049, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._uri", []], ["kind/googleapiclient.http.MediaIoBaseDownload._uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._chunksize", [986, 29.045]], ["names/googleapiclient.http.MediaIoBaseDownload._chunksize", [921, 5.032]], ["qname/googleapiclient.http.MediaIoBaseDownload._chunksize", [1050, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._chunksize", []], ["kind/googleapiclient.http.MediaIoBaseDownload._chunksize", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._progress", [1051, 34.129]], ["names/googleapiclient.http.MediaIoBaseDownload._progress", [865, 4.616]], ["qname/googleapiclient.http.MediaIoBaseDownload._progress", [1052, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._progress", []], ["kind/googleapiclient.http.MediaIoBaseDownload._progress", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._total_size", [1053, 34.129]], ["names/googleapiclient.http.MediaIoBaseDownload._total_size", [482, 2.566, 871, 3.837]], ["qname/googleapiclient.http.MediaIoBaseDownload._total_size", [1054, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._total_size", []], ["kind/googleapiclient.http.MediaIoBaseDownload._total_size", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._done", [1055, 34.129]], ["names/googleapiclient.http.MediaIoBaseDownload._done", [1036, 5.972]], ["qname/googleapiclient.http.MediaIoBaseDownload._done", [1056, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._done", []], ["kind/googleapiclient.http.MediaIoBaseDownload._done", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._sleep", [1057, 31.064]], ["names/googleapiclient.http.MediaIoBaseDownload._sleep", [859, 5.972]], ["qname/googleapiclient.http.MediaIoBaseDownload._sleep", [1058, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._sleep", []], ["kind/googleapiclient.http.MediaIoBaseDownload._sleep", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._rand", [1059, 31.064]], ["names/googleapiclient.http.MediaIoBaseDownload._rand", [860, 5.972]], ["qname/googleapiclient.http.MediaIoBaseDownload._rand", [1060, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._rand", []], ["kind/googleapiclient.http.MediaIoBaseDownload._rand", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload._headers", [1061, 34.129]], ["names/googleapiclient.http.MediaIoBaseDownload._headers", [600, 5.032]], ["qname/googleapiclient.http.MediaIoBaseDownload._headers", [1062, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload._headers", []], ["kind/googleapiclient.http.MediaIoBaseDownload._headers", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.MediaIoBaseDownload.next_chunk", [1063, 31.064]], ["names/googleapiclient.http.MediaIoBaseDownload.next_chunk", [243, 3.959, 492, 3.193]], ["qname/googleapiclient.http.MediaIoBaseDownload.next_chunk", [1064, 11.376]], ["docstring/googleapiclient.http.MediaIoBaseDownload.next_chunk", [57, 0.697, 67, 1.286, 141, 1.378, 147, 1.511, 164, 1.937, 195, 1.195, 239, 1.432, 243, 2.101, 285, 0.744, 356, 2.525, 394, 1.664, 422, 1.927, 437, 2.364, 438, 1.979, 456, 1.881, 467, 1.927, 482, 1.362, 492, 1.695, 571, 1.838, 613, 2.101, 718, 2.174, 759, 2.036, 845, 3.404, 847, 1.664, 853, 2.364, 857, 2.174, 861, 2.174, 871, 2.036, 883, 2.667, 884, 3.3, 1036, 4.041, 1065, 2.101, 1066, 2.26, 1067, 2.26, 1068, 2.101, 1069, 2.493, 1070, 2.364, 1071, 2.493, 1072, 2.493, 1073, 2.26, 1074, 2.174]], ["kind/googleapiclient.http.MediaIoBaseDownload.next_chunk", [54, -1.049]], ["name/googleapiclient.http._StreamSlice", [1075, 68.257]], ["names/googleapiclient.http._StreamSlice", [905, 5.873, 1076, 10.05]], ["qname/googleapiclient.http._StreamSlice", [1077, 22.752]], ["docstring/googleapiclient.http._StreamSlice", [7, 2.747, 164, 2.856, 207, 3.465, 233, 2.053, 259, 5.647, 262, 3.976, 439, 4.39, 481, 3.071, 492, 6.327, 583, 3.667, 761, 5.956, 804, 5.018, 807, 5.018, 905, 9.731, 914, 9.956, 916, 5.647, 931, 7.603, 1076, 6.37, 1078, 6.999, 1079, 10.939, 1080, 5.647, 1081, 5.956, 1082, 6.999, 1083, 9.956, 1084, 6.999]], ["kind/googleapiclient.http._StreamSlice", [21, -4.094]], ["name/googleapiclient.http._StreamSlice.__init__", [441, 16.462]], ["names/googleapiclient.http._StreamSlice.__init__", [442, 3.301]], ["qname/googleapiclient.http._StreamSlice.__init__", [1085, 11.376]], ["docstring/googleapiclient.http._StreamSlice.__init__", [125, 2.576, 150, 1.671, 258, 2.73, 285, 1.303, 340, 4.672, 482, 2.385, 492, 4.211, 494, 3.467, 543, 4.211, 760, 4.672, 905, 3.872, 908, 3.68, 929, 5.617, 1086, 5.133]], ["kind/googleapiclient.http._StreamSlice.__init__", [54, -1.049]], ["name/googleapiclient.http._StreamSlice._stream", [1087, 34.129]], ["names/googleapiclient.http._StreamSlice._stream", [905, 3.732]], ["qname/googleapiclient.http._StreamSlice._stream", [1088, 11.376]], ["docstring/googleapiclient.http._StreamSlice._stream", []], ["kind/googleapiclient.http._StreamSlice._stream", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http._StreamSlice._begin", [1089, 34.129]], ["names/googleapiclient.http._StreamSlice._begin", [929, 5.414]], ["qname/googleapiclient.http._StreamSlice._begin", [1090, 11.376]], ["docstring/googleapiclient.http._StreamSlice._begin", []], ["kind/googleapiclient.http._StreamSlice._begin", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http._StreamSlice._chunksize", [986, 29.045]], ["names/googleapiclient.http._StreamSlice._chunksize", [921, 5.032]], ["qname/googleapiclient.http._StreamSlice._chunksize", [1091, 11.376]], ["docstring/googleapiclient.http._StreamSlice._chunksize", []], ["kind/googleapiclient.http._StreamSlice._chunksize", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http._StreamSlice.read", [931, 23.721]], ["names/googleapiclient.http._StreamSlice.read", [931, 4.877]], ["qname/googleapiclient.http._StreamSlice.read", [1092, 11.376]], ["docstring/googleapiclient.http._StreamSlice.read", [57, 1.288, 88, 7.41, 233, 1.588, 285, 1.375, 394, 3.075, 543, 3.131, 771, 4.372, 824, 4.368, 917, 4.927, 931, 5.253, 933, 4.607, 934, 4.607]], ["kind/googleapiclient.http._StreamSlice.read", [54, -1.049]], ["name/googleapiclient.http.HttpRequest", [1093, 41.891]], ["names/googleapiclient.http.HttpRequest", [144, 3.865, 147, 3.513]], ["qname/googleapiclient.http.HttpRequest", [1094, 22.752]], ["docstring/googleapiclient.http.HttpRequest", [127, 10.345, 144, 5.641, 146, 13.716, 147, 5.128]], ["kind/googleapiclient.http.HttpRequest", [21, -4.094]], ["name/googleapiclient.http.HttpRequest.__init__", [441, 16.462]], ["names/googleapiclient.http.HttpRequest.__init__", [442, 3.301]], ["qname/googleapiclient.http.HttpRequest.__init__", [1095, 11.376]], ["docstring/googleapiclient.http.HttpRequest.__init__", [7, 1.629, 28, 1.2, 38, 2.358, 52, 1.784, 54, 0.891, 57, 0.592, 64, 1.527, 75, 2.242, 135, 0.95, 141, 1.17, 142, 1.637, 144, 2.425, 147, 2.382, 150, 1.352, 195, 1.015, 213, 1.846, 233, 1.829, 258, 1.323, 285, 0.632, 356, 1.323, 405, 1.784, 410, 1.496, 417, 1.863, 433, 1.303, 439, 1.56, 490, 1.527, 514, 1.842, 548, 1.846, 804, 1.784, 890, 1.597, 1074, 1.846, 1093, 1.527, 1096, 1.637, 1097, 1.729, 1098, 1.729, 1099, 2.488, 1100, 1.784, 1101, 2.007, 1102, 2.488]], ["kind/googleapiclient.http.HttpRequest.__init__", [54, -1.049]], ["name/googleapiclient.http.HttpRequest.uri", [417, 15.316]], ["names/googleapiclient.http.HttpRequest.uri", [417, 3.149]], ["qname/googleapiclient.http.HttpRequest.uri", [1103, 11.376]], ["docstring/googleapiclient.http.HttpRequest.uri", []], ["kind/googleapiclient.http.HttpRequest.uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.method", [54, 5.694]], ["names/googleapiclient.http.HttpRequest.method", [54, 1.171]], ["qname/googleapiclient.http.HttpRequest.method", [1104, 11.376]], ["docstring/googleapiclient.http.HttpRequest.method", []], ["kind/googleapiclient.http.HttpRequest.method", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.body", [512, 22.453]], ["names/googleapiclient.http.HttpRequest.body", [512, 4.616]], ["qname/googleapiclient.http.HttpRequest.body", [1105, 11.376]], ["docstring/googleapiclient.http.HttpRequest.body", []], ["kind/googleapiclient.http.HttpRequest.body", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.headers", [600, 24.472]], ["names/googleapiclient.http.HttpRequest.headers", [600, 5.032]], ["qname/googleapiclient.http.HttpRequest.headers", [1106, 11.376]], ["docstring/googleapiclient.http.HttpRequest.headers", []], ["kind/googleapiclient.http.HttpRequest.headers", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.methodId", [1101, 27.537]], ["names/googleapiclient.http.HttpRequest.methodId", [32, 2.771, 54, 0.921]], ["qname/googleapiclient.http.HttpRequest.methodId", [1107, 11.376]], ["docstring/googleapiclient.http.HttpRequest.methodId", []], ["kind/googleapiclient.http.HttpRequest.methodId", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.http", [144, 11.946]], ["names/googleapiclient.http.HttpRequest.http", [144, 2.456]], ["qname/googleapiclient.http.HttpRequest.http", [1108, 11.376]], ["docstring/googleapiclient.http.HttpRequest.http", []], ["kind/googleapiclient.http.HttpRequest.http", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.postproc", [1097, 23.721]], ["names/googleapiclient.http.HttpRequest.postproc", [1097, 4.877]], ["qname/googleapiclient.http.HttpRequest.postproc", [1109, 11.376]], ["docstring/googleapiclient.http.HttpRequest.postproc", []], ["kind/googleapiclient.http.HttpRequest.postproc", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.resumable", [487, 21.407]], ["names/googleapiclient.http.HttpRequest.resumable", [487, 4.401]], ["qname/googleapiclient.http.HttpRequest.resumable", [1110, 11.376]], ["docstring/googleapiclient.http.HttpRequest.resumable", []], ["kind/googleapiclient.http.HttpRequest.resumable", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.response_callbacks", [1111, 34.129]], ["names/googleapiclient.http.HttpRequest.response_callbacks", [700, 3.136, 1112, 5.025]], ["qname/googleapiclient.http.HttpRequest.response_callbacks", [1113, 11.376]], ["docstring/googleapiclient.http.HttpRequest.response_callbacks", []], ["kind/googleapiclient.http.HttpRequest.response_callbacks", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest._in_error_state", [1114, 34.129]], ["names/googleapiclient.http.HttpRequest._in_error_state", [99, 3.074, 141, 2.141, 1021, 4.142]], ["qname/googleapiclient.http.HttpRequest._in_error_state", [1115, 11.376]], ["docstring/googleapiclient.http.HttpRequest._in_error_state", []], ["kind/googleapiclient.http.HttpRequest._in_error_state", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.body_size", [1116, 34.129]], ["names/googleapiclient.http.HttpRequest.body_size", [482, 2.566, 512, 3.632]], ["qname/googleapiclient.http.HttpRequest.body_size", [1117, 11.376]], ["docstring/googleapiclient.http.HttpRequest.body_size", []], ["kind/googleapiclient.http.HttpRequest.body_size", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.resumable_uri", [1118, 34.129]], ["names/googleapiclient.http.HttpRequest.resumable_uri", [417, 2.477, 487, 3.463]], ["qname/googleapiclient.http.HttpRequest.resumable_uri", [1119, 11.376]], ["docstring/googleapiclient.http.HttpRequest.resumable_uri", []], ["kind/googleapiclient.http.HttpRequest.resumable_uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.resumable_progress", [868, 26.333]], ["names/googleapiclient.http.HttpRequest.resumable_progress", [487, 3.463, 865, 3.632]], ["qname/googleapiclient.http.HttpRequest.resumable_progress", [1120, 11.376]], ["docstring/googleapiclient.http.HttpRequest.resumable_progress", []], ["kind/googleapiclient.http.HttpRequest.resumable_progress", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest._rand", [1059, 31.064]], ["names/googleapiclient.http.HttpRequest._rand", [860, 5.972]], ["qname/googleapiclient.http.HttpRequest._rand", [1121, 11.376]], ["docstring/googleapiclient.http.HttpRequest._rand", []], ["kind/googleapiclient.http.HttpRequest._rand", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest._sleep", [1057, 31.064]], ["names/googleapiclient.http.HttpRequest._sleep", [859, 5.972]], ["qname/googleapiclient.http.HttpRequest._sleep", [1122, 11.376]], ["docstring/googleapiclient.http.HttpRequest._sleep", []], ["kind/googleapiclient.http.HttpRequest._sleep", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequest.execute", [1123, 24.472]], ["names/googleapiclient.http.HttpRequest.execute", [1123, 5.032]], ["qname/googleapiclient.http.HttpRequest.execute", [1124, 11.376]], ["docstring/googleapiclient.http.HttpRequest.execute", [7, 1.101, 57, 0.667, 141, 1.32, 144, 1.604, 147, 2.135, 150, 1.892, 151, 2.011, 184, 2.387, 193, 1.47, 195, 1.87, 197, 1.95, 222, 1.448, 239, 1.371, 285, 0.712, 356, 2.438, 394, 1.594, 422, 1.845, 437, 2.263, 438, 1.895, 514, 1.245, 538, 1.594, 571, 1.759, 613, 2.011, 718, 2.082, 845, 3.286, 853, 2.263, 857, 2.082, 861, 2.082, 1065, 2.011, 1066, 2.164, 1067, 2.164, 1068, 2.011, 1069, 2.387, 1070, 2.263, 1071, 2.387, 1073, 2.164, 1074, 2.082, 1080, 2.263, 1093, 1.722, 1096, 1.845, 1097, 1.95]], ["kind/googleapiclient.http.HttpRequest.execute", [54, -1.049]], ["name/googleapiclient.http.HttpRequest.add_response_callback", [1125, 34.129]], ["names/googleapiclient.http.HttpRequest.add_response_callback", [428, 2.735, 700, 2.585, 1126, 3.511]], ["qname/googleapiclient.http.HttpRequest.add_response_callback", [1127, 11.376]], ["docstring/googleapiclient.http.HttpRequest.add_response_callback", [35, 3.868, 38, 3.162, 42, 4.294, 59, 3.219, 75, 3.007, 195, 2.271, 285, 1.413, 347, 4.737, 369, 3.162, 1126, 4.294, 1128, 5.566, 1129, 5.566, 1130, 5.066, 1131, 5.566, 1132, 5.566]], ["kind/googleapiclient.http.HttpRequest.add_response_callback", [54, -1.049]], ["name/googleapiclient.http.HttpRequest.next_chunk", [1063, 31.064]], ["names/googleapiclient.http.HttpRequest.next_chunk", [243, 3.959, 492, 3.193]], ["qname/googleapiclient.http.HttpRequest.next_chunk", [1133, 11.376]], ["docstring/googleapiclient.http.HttpRequest.next_chunk", [7, 1.512, 20, 0.873, 40, 0.887, 48, 2.921, 54, 0.269, 57, 0.384, 64, 0.991, 141, 0.76, 144, 1.001, 147, 1.482, 150, 1.516, 151, 2.051, 164, 1.571, 171, 1.158, 195, 1.9, 197, 1.122, 224, 1.037, 239, 0.789, 243, 1.158, 285, 0.41, 356, 1.522, 394, 0.917, 422, 1.062, 433, 2.018, 437, 1.303, 438, 1.091, 456, 2.472, 481, 2.337, 490, 2.363, 514, 1.269, 538, 0.917, 571, 1.013, 583, 0.846, 613, 1.158, 718, 1.199, 845, 2.051, 853, 1.303, 857, 1.199, 861, 1.199, 890, 1.037, 959, 1.374, 961, 1.374, 962, 1.374, 963, 1.374, 964, 1.374, 1005, 1.47, 1038, 1.47, 1039, 1.47, 1040, 1.47, 1041, 1.47, 1042, 1.47, 1065, 1.158, 1066, 1.246, 1067, 1.246, 1068, 1.158, 1069, 1.374, 1070, 1.303, 1071, 1.374, 1072, 1.374, 1073, 1.246, 1074, 1.199, 1080, 1.303, 1093, 0.991, 1096, 1.062, 1134, 1.615, 1135, 1.47, 1136, 1.615, 1137, 1.615, 1138, 1.615, 1139, 1.47, 1140, 1.47]], ["kind/googleapiclient.http.HttpRequest.next_chunk", [54, -1.049]], ["name/googleapiclient.http.HttpRequest._process_response", [1141, 34.129]], ["names/googleapiclient.http.HttpRequest._process_response", [129, 3.837, 700, 3.136]], ["qname/googleapiclient.http.HttpRequest._process_response", [1142, 11.376]], ["docstring/googleapiclient.http.HttpRequest._process_response", [57, 0.913, 59, 2.22, 127, 2.464, 129, 2.668, 135, 2.243, 150, 1.913, 164, 1.566, 195, 3.263, 233, 1.126, 285, 0.975, 356, 2.042, 433, 2.011, 438, 2.593, 456, 2.464, 481, 2.578, 490, 2.356, 492, 2.22, 514, 2.607, 716, 2.962, 718, 2.849, 1072, 3.267, 1139, 3.494, 1140, 3.494, 1143, 3.839]], ["kind/googleapiclient.http.HttpRequest._process_response", [54, -1.049]], ["name/googleapiclient.http.HttpRequest.to_json", [948, 26.333]], ["names/googleapiclient.http.HttpRequest.to_json", [201, 2.477, 942, 3.463]], ["qname/googleapiclient.http.HttpRequest.to_json", [1144, 11.376]], ["docstring/googleapiclient.http.HttpRequest.to_json", [57, 1.917, 201, 3.616, 208, 4.946, 1093, 4.946]], ["kind/googleapiclient.http.HttpRequest.to_json", [54, -1.049]], ["name/googleapiclient.http.HttpRequest.from_json", [947, 26.333]], ["names/googleapiclient.http.HttpRequest.from_json", [201, 2.477, 273, 3.729]], ["qname/googleapiclient.http.HttpRequest.from_json", [1145, 11.376]], ["docstring/googleapiclient.http.HttpRequest.from_json", [57, 1.772, 150, 2.427, 201, 3.344, 1093, 4.573, 1146, 6.342, 1147, 6.782]], ["kind/googleapiclient.http.HttpRequest.from_json", [54, -0.779, 1019, -3.464]], ["name/googleapiclient.http.HttpRequest.null_postproc", [1148, 34.129]], ["names/googleapiclient.http.HttpRequest.null_postproc", [1097, 3.837, 1149, 5.521]], ["qname/googleapiclient.http.HttpRequest.null_postproc", [1150, 11.376]], ["docstring/googleapiclient.http.HttpRequest.null_postproc", []], ["kind/googleapiclient.http.HttpRequest.null_postproc", [54, -0.779, 1019, -3.464]], ["name/googleapiclient.http.BatchHttpRequest", [1151, 58.09]], ["names/googleapiclient.http.BatchHttpRequest", [144, 3.185, 147, 2.896, 499, 5.708]], ["qname/googleapiclient.http.BatchHttpRequest", [1152, 22.752]], ["docstring/googleapiclient.http.BatchHttpRequest", [40, 2.732, 42, 9.619, 48, 5.207, 127, 3.194, 128, 3.839, 142, 9.85, 144, 1.742, 145, 4.529, 147, 1.583, 150, 1.62, 163, 4.415, 195, 6.109, 347, 7.064, 433, 4.349, 499, 5.207, 583, 6.531, 610, 3.121, 893, 4.529, 1093, 3.054, 1151, 7.064, 1153, 4.976, 1154, 10.735, 1155, 4.976, 1156, 4.976, 1157, 4.976, 1158, 4.976, 1159, 4.529, 1160, 4.976, 1161, 4.976, 1162, 4.976, 1163, 4.976, 1164, 4.976]], ["kind/googleapiclient.http.BatchHttpRequest", [21, -4.094]], ["name/googleapiclient.http.BatchHttpRequest.__init__", [441, 16.462]], ["names/googleapiclient.http.BatchHttpRequest.__init__", [442, 3.301]], ["qname/googleapiclient.http.BatchHttpRequest.__init__", [1165, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest.__init__", [32, 1.668, 38, 1.888, 129, 2.31, 141, 2.471, 142, 3.455, 144, 1.163, 147, 2.072, 150, 1.71, 183, 1.563, 187, 2.564, 195, 2.657, 196, 2.186, 222, 1.716, 233, 0.975, 258, 1.768, 285, 0.844, 338, 2.466, 417, 1.491, 422, 3.455, 433, 1.741, 438, 2.245, 499, 2.084, 749, 2.466, 804, 2.383, 1098, 2.31, 1126, 4.052, 1151, 2.828, 1166, 3.025, 1167, 3.025, 1168, 3.323]], ["kind/googleapiclient.http.BatchHttpRequest.__init__", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest._batch_uri", [1169, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._batch_uri", [417, 2.477, 499, 3.463]], ["qname/googleapiclient.http.BatchHttpRequest._batch_uri", [1170, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._batch_uri", []], ["kind/googleapiclient.http.BatchHttpRequest._batch_uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._callback", [1171, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._callback", [1126, 5.414]], ["qname/googleapiclient.http.BatchHttpRequest._callback", [1172, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._callback", []], ["kind/googleapiclient.http.BatchHttpRequest._callback", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._requests", [1173, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._requests", [831, 6.387]], ["qname/googleapiclient.http.BatchHttpRequest._requests", [1174, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._requests", []], ["kind/googleapiclient.http.BatchHttpRequest._requests", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._callbacks", [1175, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._callbacks", [1112, 6.387]], ["qname/googleapiclient.http.BatchHttpRequest._callbacks", [1176, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._callbacks", []], ["kind/googleapiclient.http.BatchHttpRequest._callbacks", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._order", [1177, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._order", [677, 5.208]], ["qname/googleapiclient.http.BatchHttpRequest._order", [1178, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._order", []], ["kind/googleapiclient.http.BatchHttpRequest._order", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._last_auto_id", [1179, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._last_auto_id", [32, 2.284, 613, 3.263, 1180, 3.873]], ["qname/googleapiclient.http.BatchHttpRequest._last_auto_id", [1181, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._last_auto_id", []], ["kind/googleapiclient.http.BatchHttpRequest._last_auto_id", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._base_id", [1182, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._base_id", [26, 2.629, 32, 2.771]], ["qname/googleapiclient.http.BatchHttpRequest._base_id", [1183, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._base_id", []], ["kind/googleapiclient.http.BatchHttpRequest._base_id", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._responses", [1184, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._responses", [1185, 5.972]], ["qname/googleapiclient.http.BatchHttpRequest._responses", [1186, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._responses", []], ["kind/googleapiclient.http.BatchHttpRequest._responses", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._refreshed_credentials", [1187, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._refreshed_credentials", [272, 3.632, 1188, 5.521]], ["qname/googleapiclient.http.BatchHttpRequest._refreshed_credentials", [1189, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._refreshed_credentials", []], ["kind/googleapiclient.http.BatchHttpRequest._refreshed_credentials", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials", [1190, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials", [272, 2.546, 299, 3.294, 302, 3.523, 650, 3.523]], ["qname/googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials", [1191, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials", [144, 2.75, 147, 2.854, 150, 1.865, 275, 3.868, 285, 1.454, 299, 4.874, 499, 3.592, 1093, 3.515, 1096, 3.768, 1192, 4.621, 1193, 5.213]], ["kind/googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest._id_to_header", [1194, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._id_to_header", [32, 2.284, 75, 2.458, 942, 2.854]], ["qname/googleapiclient.http.BatchHttpRequest._id_to_header", [1195, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._id_to_header", [32, 4.182, 57, 0.99, 67, 2.741, 75, 4.051, 135, 2.862, 147, 1.324, 204, 2.502, 233, 1.221, 285, 1.057, 405, 2.984, 408, 3.542, 548, 3.089, 563, 3.542, 901, 3.542, 1196, 6.246, 1197, 4.162, 1198, 4.162, 1199, 3.542]], ["kind/googleapiclient.http.BatchHttpRequest._id_to_header", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest._header_to_id", [1200, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._header_to_id", [32, 2.284, 75, 2.458, 942, 2.854]], ["qname/googleapiclient.http.BatchHttpRequest._header_to_id", [1201, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._header_to_id", [32, 4.364, 57, 1.419, 67, 3.17, 75, 4.697, 135, 2.758, 204, 2.353, 206, 3.741, 226, 2.807, 233, 1.148, 285, 0.994, 356, 2.082, 498, 3.331, 1202, 3.915, 1203, 3.915, 1204, 3.915, 1205, 3.563]], ["kind/googleapiclient.http.BatchHttpRequest._header_to_id", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest._serialize_request", [1206, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._serialize_request", [147, 1.757, 746, 3.959]], ["qname/googleapiclient.http.BatchHttpRequest._serialize_request", [1207, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._serialize_request", [57, 1.362, 147, 2.854, 150, 1.865, 199, 2.836, 204, 3.443, 206, 3.592, 233, 2.305, 285, 1.454, 1093, 4.822, 1208, 5.727]], ["kind/googleapiclient.http.BatchHttpRequest._serialize_request", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest._deserialize_response", [1209, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._deserialize_response", [700, 3.136, 750, 3.544]], ["qname/googleapiclient.http.BatchHttpRequest._deserialize_response", [1210, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._deserialize_response", [57, 1.732, 59, 2.969, 75, 2.773, 135, 2.779, 195, 2.094, 200, 3.467, 204, 3.086, 233, 2.482, 285, 1.303, 409, 4.141, 514, 2.278, 1211, 4.672, 1212, 4.672, 1213, 5.133]], ["kind/googleapiclient.http.BatchHttpRequest._deserialize_response", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest._new_id", [1214, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._new_id", [32, 2.771, 44, 3.632]], ["qname/googleapiclient.http.BatchHttpRequest._new_id", [1215, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._new_id", [7, 2.125, 32, 4.37, 43, 3.254, 44, 4.972, 57, 1.288, 233, 1.588, 394, 3.075, 405, 3.882, 432, 3.763, 969, 4.177, 1180, 4.607, 1216, 5.414, 1217, 4.927]], ["kind/googleapiclient.http.BatchHttpRequest._new_id", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest.add", [428, 20.517]], ["names/googleapiclient.http.BatchHttpRequest.add", [428, 4.218]], ["qname/googleapiclient.http.BatchHttpRequest.add", [1218, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest.add", [32, 3.242, 38, 0.94, 39, 2.662, 44, 1.089, 57, 0.394, 109, 1.187, 129, 1.151, 141, 1.848, 142, 2.584, 144, 0.579, 147, 2.188, 150, 0.952, 164, 0.675, 183, 0.779, 187, 1.277, 195, 2.209, 196, 1.089, 200, 1.118, 222, 0.855, 233, 0.486, 239, 0.809, 285, 0.42, 338, 1.229, 356, 1.555, 381, 1.277, 405, 4.287, 409, 1.336, 422, 1.924, 426, 2.489, 428, 1.758, 433, 1.532, 438, 1.118, 498, 1.409, 499, 1.834, 583, 2.058, 727, 2.256, 749, 1.229, 969, 1.277, 972, 1.277, 1093, 1.016, 1098, 1.151, 1126, 4.177, 1166, 1.507, 1167, 1.507, 1219, 5.978, 1220, 2.924, 1221, 1.151, 1222, 1.507, 1223, 1.336, 1224, 1.655, 1225, 1.655, 1226, 1.655]], ["kind/googleapiclient.http.BatchHttpRequest.add", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest._execute", [1227, 34.129]], ["names/googleapiclient.http.BatchHttpRequest._execute", [1123, 5.032]], ["qname/googleapiclient.http.BatchHttpRequest._execute", [1228, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest._execute", [7, 1.327, 32, 1.696, 129, 2.349, 141, 1.59, 144, 1.863, 147, 2.585, 150, 1.733, 163, 3.972, 195, 2.172, 199, 1.674, 206, 2.12, 213, 2.509, 285, 0.858, 356, 1.798, 422, 2.224, 426, 2.876, 499, 3.338, 500, 2.876, 677, 3.95, 804, 3.816, 1073, 2.608, 1074, 2.509, 1096, 2.224, 1222, 3.076, 1229, 3.076]], ["kind/googleapiclient.http.BatchHttpRequest._execute", [54, -1.049]], ["name/googleapiclient.http.BatchHttpRequest.execute", [1123, 24.472]], ["names/googleapiclient.http.BatchHttpRequest.execute", [1123, 5.032]], ["qname/googleapiclient.http.BatchHttpRequest.execute", [1230, 11.376]], ["docstring/googleapiclient.http.BatchHttpRequest.execute", [7, 2.118, 57, 0.818, 127, 2.207, 141, 1.618, 144, 2.639, 147, 2.399, 150, 2.168, 151, 2.466, 195, 1.403, 197, 3.75, 206, 2.157, 285, 0.873, 356, 1.829, 422, 2.262, 433, 1.801, 499, 3.384, 500, 2.926, 538, 1.953, 727, 2.653, 872, 3.13, 1073, 2.653, 1074, 2.552, 1080, 2.774, 1093, 2.11, 1096, 2.262, 1229, 3.13]], ["kind/googleapiclient.http.BatchHttpRequest.execute", [54, -1.049]], ["name/googleapiclient.http.HttpRequestMock", [1231, 62.127]], ["names/googleapiclient.http.HttpRequestMock", [144, 3.185, 147, 2.896, 1232, 6.148]], ["qname/googleapiclient.http.HttpRequestMock", [1233, 22.752]], ["docstring/googleapiclient.http.HttpRequestMock", [7, 5.638, 509, 11.082, 538, 8.159, 539, 11.589, 558, 11.589, 1093, 8.815, 1232, 9.702]], ["kind/googleapiclient.http.HttpRequestMock", [21, -4.094]], ["name/googleapiclient.http.HttpRequestMock.__init__", [441, 16.462]], ["names/googleapiclient.http.HttpRequestMock.__init__", [442, 3.301]], ["qname/googleapiclient.http.HttpRequestMock.__init__", [1234, 11.376]], ["docstring/googleapiclient.http.HttpRequestMock.__init__", [14, 1.448, 21, 1.415, 40, 2.385, 59, 2.513, 129, 3.019, 135, 1.659, 147, 1.382, 166, 3.224, 193, 2.276, 195, 2.631, 233, 1.274, 258, 2.311, 285, 1.103, 514, 1.928, 537, 3.352, 607, 3.697, 716, 3.352, 727, 3.352, 1097, 3.019, 1098, 3.019, 1221, 3.019, 1231, 3.954, 1235, 4.344, 1236, 4.344]], ["kind/googleapiclient.http.HttpRequestMock.__init__", [54, -1.049]], ["name/googleapiclient.http.HttpRequestMock.resp", [59, 19.741]], ["names/googleapiclient.http.HttpRequestMock.resp", [59, 4.059]], ["qname/googleapiclient.http.HttpRequestMock.resp", [1237, 11.376]], ["docstring/googleapiclient.http.HttpRequestMock.resp", []], ["kind/googleapiclient.http.HttpRequestMock.resp", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequestMock.content", [135, 13.03]], ["names/googleapiclient.http.HttpRequestMock.content", [135, 2.679]], ["qname/googleapiclient.http.HttpRequestMock.content", [1238, 11.376]], ["docstring/googleapiclient.http.HttpRequestMock.content", []], ["kind/googleapiclient.http.HttpRequestMock.content", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequestMock.postproc", [1097, 23.721]], ["names/googleapiclient.http.HttpRequestMock.postproc", [1097, 4.877]], ["qname/googleapiclient.http.HttpRequestMock.postproc", [1239, 11.376]], ["docstring/googleapiclient.http.HttpRequestMock.postproc", []], ["kind/googleapiclient.http.HttpRequestMock.postproc", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpRequestMock.execute", [1123, 24.472]], ["names/googleapiclient.http.HttpRequestMock.execute", [1123, 5.032]], ["qname/googleapiclient.http.HttpRequestMock.execute", [1240, 11.376]], ["docstring/googleapiclient.http.HttpRequestMock.execute", [131, 4.807, 144, 2.267, 147, 2.061, 151, 4.644, 195, 2.642, 381, 4.997, 1232, 4.375, 1241, 6.476, 1242, 6.476, 1243, 6.476]], ["kind/googleapiclient.http.HttpRequestMock.execute", [54, -1.049]], ["name/googleapiclient.http.RequestMockBuilder", [1244, 68.257]], ["names/googleapiclient.http.RequestMockBuilder", [147, 2.896, 1232, 6.148, 1245, 8.283]], ["qname/googleapiclient.http.RequestMockBuilder", [1246, 22.752]], ["docstring/googleapiclient.http.RequestMockBuilder", [32, 2.058, 38, 2.329, 40, 2.251, 41, 1.883, 48, 4.419, 54, 1.175, 57, 1.676, 76, 2.94, 78, 2.329, 108, 1.929, 115, 1.977, 135, 2.69, 138, 3.163, 147, 1.305, 159, 2.94, 166, 3.043, 185, 3.489, 195, 5.053, 198, 3.043, 230, 3.731, 233, 1.203, 249, 3.731, 258, 2.181, 356, 3.747, 358, 6.412, 410, 2.464, 433, 3.691, 439, 2.571, 509, 3.163, 511, 3.731, 514, 1.819, 544, 2.697, 583, 3.691, 636, 2.769, 716, 3.163, 727, 3.163, 847, 2.329, 1093, 2.516, 1101, 5.684, 1223, 3.308, 1232, 2.769, 1247, 4.1, 1248, 2.632, 1249, 3.731, 1250, 7.045, 1251, 6.412, 1252, 4.1, 1253, 4.1, 1254, 3.163, 1255, 4.1, 1256, 4.1, 1257, 4.1, 1258, 4.1, 1259, 4.1, 1260, 4.1, 1261, 3.731, 1262, 4.1, 1263, 3.731, 1264, 3.308, 1265, 4.1, 1266, 4.1]], ["kind/googleapiclient.http.RequestMockBuilder", [21, -4.094]], ["name/googleapiclient.http.RequestMockBuilder.__init__", [441, 16.462]], ["names/googleapiclient.http.RequestMockBuilder.__init__", [442, 3.301]], ["qname/googleapiclient.http.RequestMockBuilder.__init__", [1267, 11.376]], ["docstring/googleapiclient.http.RequestMockBuilder.__init__", [21, 1.275, 41, 1.798, 54, 0.653, 78, 2.224, 108, 1.842, 115, 1.888, 135, 1.495, 150, 1.942, 195, 1.597, 258, 2.082, 356, 2.082, 423, 3.02, 506, 3.159, 509, 3.02, 538, 2.224, 636, 2.644, 759, 2.721, 844, 2.807, 1098, 2.721, 1101, 4.812, 1221, 2.721, 1248, 2.513, 1249, 3.563, 1261, 3.563, 1263, 3.563, 1268, 3.915, 1269, 2.905, 1270, 3.915]], ["kind/googleapiclient.http.RequestMockBuilder.__init__", [54, -1.049]], ["name/googleapiclient.http.RequestMockBuilder.responses", [1185, 29.045]], ["names/googleapiclient.http.RequestMockBuilder.responses", [1185, 5.972]], ["qname/googleapiclient.http.RequestMockBuilder.responses", [1271, 11.376]], ["docstring/googleapiclient.http.RequestMockBuilder.responses", []], ["kind/googleapiclient.http.RequestMockBuilder.responses", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.RequestMockBuilder.check_unexpected", [1272, 34.129]], ["names/googleapiclient.http.RequestMockBuilder.check_unexpected", [507, 4.698, 614, 4.698]], ["qname/googleapiclient.http.RequestMockBuilder.check_unexpected", [1273, 11.376]], ["docstring/googleapiclient.http.RequestMockBuilder.check_unexpected", []], ["kind/googleapiclient.http.RequestMockBuilder.check_unexpected", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.RequestMockBuilder.__call__", [1274, 34.129]], ["names/googleapiclient.http.RequestMockBuilder.__call__", [38, 3.986]], ["qname/googleapiclient.http.RequestMockBuilder.__call__", [1275, 11.376]], ["docstring/googleapiclient.http.RequestMockBuilder.__call__", [54, 0.903, 72, 4.177, 150, 1.763, 166, 4.018, 183, 2.547, 195, 2.209, 234, 3.562, 594, 3.396, 705, 3.882, 907, 4.368, 1098, 3.763, 1205, 6.879, 1254, 4.177, 1276, 5.414, 1277, 5.414]], ["kind/googleapiclient.http.RequestMockBuilder.__call__", [54, -1.049]], ["name/googleapiclient.http.HttpMock", [1278, 68.257]], ["names/googleapiclient.http.HttpMock", [144, 3.865, 1232, 7.458]], ["qname/googleapiclient.http.HttpMock", [1279, 22.752]], ["docstring/googleapiclient.http.HttpMock", [1232, 11.852, 1280, 12.195]], ["kind/googleapiclient.http.HttpMock", [21, -4.094]], ["name/googleapiclient.http.HttpMock.__init__", [441, 16.462]], ["names/googleapiclient.http.HttpMock.__init__", [442, 3.301]], ["qname/googleapiclient.http.HttpMock.__init__", [1281, 11.376]], ["docstring/googleapiclient.http.HttpMock.__init__", [57, 1.446, 75, 4.421, 195, 3.339, 233, 1.783, 285, 1.544, 410, 3.654, 931, 4.225, 1007, 6.964, 1100, 4.359]], ["kind/googleapiclient.http.HttpMock.__init__", [54, -1.049]], ["name/googleapiclient.http.HttpMock.data", [439, 21.407]], ["names/googleapiclient.http.HttpMock.data", [439, 4.401]], ["qname/googleapiclient.http.HttpMock.data", [1282, 11.376]], ["docstring/googleapiclient.http.HttpMock.data", []], ["kind/googleapiclient.http.HttpMock.data", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMock.response_headers", [1283, 34.129]], ["names/googleapiclient.http.HttpMock.response_headers", [600, 3.959, 700, 3.136]], ["qname/googleapiclient.http.HttpMock.response_headers", [1284, 11.376]], ["docstring/googleapiclient.http.HttpMock.response_headers", []], ["kind/googleapiclient.http.HttpMock.response_headers", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMock.headers", [600, 24.472]], ["names/googleapiclient.http.HttpMock.headers", [600, 5.032]], ["qname/googleapiclient.http.HttpMock.headers", [1285, 11.376]], ["docstring/googleapiclient.http.HttpMock.headers", []], ["kind/googleapiclient.http.HttpMock.headers", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMock.uri", [417, 15.316]], ["names/googleapiclient.http.HttpMock.uri", [417, 3.149]], ["qname/googleapiclient.http.HttpMock.uri", [1286, 11.376]], ["docstring/googleapiclient.http.HttpMock.uri", []], ["kind/googleapiclient.http.HttpMock.uri", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMock.method", [54, 5.694]], ["names/googleapiclient.http.HttpMock.method", [54, 1.171]], ["qname/googleapiclient.http.HttpMock.method", [1287, 11.376]], ["docstring/googleapiclient.http.HttpMock.method", []], ["kind/googleapiclient.http.HttpMock.method", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMock.body", [512, 22.453]], ["names/googleapiclient.http.HttpMock.body", [512, 4.616]], ["qname/googleapiclient.http.HttpMock.body", [1288, 11.376]], ["docstring/googleapiclient.http.HttpMock.body", []], ["kind/googleapiclient.http.HttpMock.body", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMock.request", [147, 10.86]], ["names/googleapiclient.http.HttpMock.request", [147, 2.233]], ["qname/googleapiclient.http.HttpMock.request", [1289, 11.376]], ["docstring/googleapiclient.http.HttpMock.request", []], ["kind/googleapiclient.http.HttpMock.request", [54, -1.049]], ["name/googleapiclient.http.HttpMock.close", [1290, 26.333]], ["names/googleapiclient.http.HttpMock.close", [1290, 5.414]], ["qname/googleapiclient.http.HttpMock.close", [1291, 11.376]], ["docstring/googleapiclient.http.HttpMock.close", []], ["kind/googleapiclient.http.HttpMock.close", [54, -1.049]], ["name/googleapiclient.http.HttpMockSequence", [1292, 68.257]], ["names/googleapiclient.http.HttpMockSequence", [144, 3.185, 1232, 6.148, 1293, 8.283]], ["qname/googleapiclient.http.HttpMockSequence", [1294, 22.752]], ["docstring/googleapiclient.http.HttpMockSequence", [7, 1.643, 38, 4.075, 43, 2.517, 48, 4.499, 57, 2.983, 59, 2.421, 67, 1.837, 75, 5.084, 135, 3.593, 137, 3.378, 144, 1.465, 147, 3.991, 195, 5.581, 196, 2.754, 369, 4.075, 417, 1.879, 456, 6.041, 514, 5.565, 576, 3.107, 583, 2.193, 679, 3.563, 936, 8.276, 1232, 4.845, 1251, 6.529, 1280, 4.985, 1295, 3.81, 1296, 4.186, 1297, 4.186, 1298, 4.186, 1299, 4.186, 1300, 7.173, 1301, 4.186, 1302, 4.186, 1303, 4.186, 1304, 4.186, 1305, 4.186, 1306, 4.186, 1307, 4.186, 1308, 4.186, 1309, 4.186, 1310, 4.186]], ["kind/googleapiclient.http.HttpMockSequence", [21, -4.094]], ["name/googleapiclient.http.HttpMockSequence.__init__", [441, 16.462]], ["names/googleapiclient.http.HttpMockSequence.__init__", [442, 3.301]], ["qname/googleapiclient.http.HttpMockSequence.__init__", [1311, 11.376]], ["docstring/googleapiclient.http.HttpMockSequence.__init__", [75, 3.88, 285, 1.824, 409, 5.794, 514, 3.187, 1295, 6.536, 1312, 7.766]], ["kind/googleapiclient.http.HttpMockSequence.__init__", [54, -1.049]], ["name/googleapiclient.http.HttpMockSequence._iterable", [1313, 34.129]], ["names/googleapiclient.http.HttpMockSequence._iterable", [1314, 7.017]], ["qname/googleapiclient.http.HttpMockSequence._iterable", [1315, 11.376]], ["docstring/googleapiclient.http.HttpMockSequence._iterable", []], ["kind/googleapiclient.http.HttpMockSequence._iterable", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMockSequence.follow_redirects", [1316, 34.129]], ["names/googleapiclient.http.HttpMockSequence.follow_redirects", [255, 4.698, 1317, 5.521]], ["qname/googleapiclient.http.HttpMockSequence.follow_redirects", [1318, 11.376]], ["docstring/googleapiclient.http.HttpMockSequence.follow_redirects", []], ["kind/googleapiclient.http.HttpMockSequence.follow_redirects", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMockSequence.request_sequence", [1319, 34.129]], ["names/googleapiclient.http.HttpMockSequence.request_sequence", [147, 1.757, 1293, 5.025]], ["qname/googleapiclient.http.HttpMockSequence.request_sequence", [1320, 11.376]], ["docstring/googleapiclient.http.HttpMockSequence.request_sequence", []], ["kind/googleapiclient.http.HttpMockSequence.request_sequence", [268, -0.886, 445, -1.11]], ["name/googleapiclient.http.HttpMockSequence.request", [147, 10.86]], ["names/googleapiclient.http.HttpMockSequence.request", [147, 2.233]], ["qname/googleapiclient.http.HttpMockSequence.request", [1321, 11.376]], ["docstring/googleapiclient.http.HttpMockSequence.request", []], ["kind/googleapiclient.http.HttpMockSequence.request", [54, -1.049]], ["name/googleapiclient.http.set_user_agent", [1322, 34.129]], ["names/googleapiclient.http.set_user_agent", [41, 2.09, 579, 3.511, 1323, 4.142]], ["qname/googleapiclient.http.set_user_agent", [1324, 11.376]], ["docstring/googleapiclient.http.set_user_agent", [3, 2.594, 40, 1.765, 41, 2.35, 48, 3.209, 57, 0.765, 67, 1.411, 75, 1.737, 76, 2.305, 91, 2.115, 134, 2.736, 144, 1.791, 147, 1.023, 233, 0.943, 285, 0.816, 369, 2.906, 571, 2.017, 579, 4.916, 583, 1.684, 806, 2.736, 1154, 2.305, 1280, 2.235, 1323, 5.799, 1325, 2.481, 1326, 3.215, 1327, 4.656, 1328, 2.926, 1329, 3.215, 1330, 2.926, 1331, 3.215, 1332, 3.215, 1333, 3.215, 1334, 2.594]], ["kind/googleapiclient.http.set_user_agent", [14, -2.096]], ["name/googleapiclient.http.tunnel_patch", [1335, 34.129]], ["names/googleapiclient.http.tunnel_patch", [801, 4.698, 1336, 5.025]], ["qname/googleapiclient.http.tunnel_patch", [1337, 11.376]], ["docstring/googleapiclient.http.tunnel_patch", [7, 2.008, 20, 1.737, 30, 2.594, 40, 1.765, 48, 3.209, 54, 0.536, 57, 0.765, 91, 2.115, 144, 1.791, 147, 1.023, 245, 2.594, 285, 0.816, 369, 2.906, 568, 2.481, 576, 2.386, 583, 1.684, 607, 2.736, 613, 2.305, 801, 4.354, 806, 2.736, 911, 2.594, 1130, 2.926, 1154, 2.305, 1192, 2.594, 1280, 2.235, 1325, 2.481, 1327, 4.656, 1328, 2.926, 1330, 2.926, 1336, 2.926, 1338, 3.215, 1339, 3.215, 1340, 2.594, 1341, 2.926, 1342, 3.215]], ["kind/googleapiclient.http.tunnel_patch", [14, -2.096]], ["name/googleapiclient.http.build_http", [1343, 34.129]], ["names/googleapiclient.http.build_http", [144, 1.932, 594, 3.463]], ["qname/googleapiclient.http.build_http", [1344, 11.376]], ["docstring/googleapiclient.http.build_http", [7, 1.869, 38, 2.705, 41, 2.187, 52, 3.415, 54, 0.795, 57, 1.133, 144, 1.667, 147, 1.515, 150, 2.247, 213, 3.535, 239, 3.371, 594, 2.987, 834, 6.279, 1280, 4.795, 1345, 4.762, 1346, 4.762, 1347, 3.842]], ["kind/googleapiclient.http.build_http", [14, -2.096]], ["name/googleapiclient.schema.__author__", [434, 24.472]], ["names/googleapiclient.schema.__author__", [295, 4.877]], ["qname/googleapiclient.schema.__author__", [1348, 11.376]], ["docstring/googleapiclient.schema.__author__", []], ["kind/googleapiclient.schema.__author__", [268, -1.193]], ["name/googleapiclient.schema.Schemas", [1349, 55.074]], ["names/googleapiclient.schema.Schemas", [1349, 11.323]], ["qname/googleapiclient.schema.Schemas", [1350, 22.752]], ["docstring/googleapiclient.schema.Schemas", [28, 8.463, 219, 8.573]], ["kind/googleapiclient.schema.Schemas", [21, -4.094]], ["name/googleapiclient.schema.Schemas.__init__", [441, 16.462]], ["names/googleapiclient.schema.Schemas.__init__", [442, 3.301]], ["qname/googleapiclient.schema.Schemas.__init__", [1351, 11.376]], ["docstring/googleapiclient.schema.Schemas.__init__", [108, 3.931, 115, 3.025, 150, 2.042, 219, 3.064, 222, 3.238, 258, 3.336, 261, 2.847, 285, 1.592, 1352, 6.271, 1353, 6.271]], ["kind/googleapiclient.schema.Schemas.__init__", [54, -1.049]], ["name/googleapiclient.schema.Schemas.schemas", [1349, 27.537]], ["names/googleapiclient.schema.Schemas.schemas", [1349, 5.662]], ["qname/googleapiclient.schema.Schemas.schemas", [1354, 11.376]], ["docstring/googleapiclient.schema.Schemas.schemas", []], ["kind/googleapiclient.schema.Schemas.schemas", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema.Schemas.pretty", [1355, 25.331]], ["names/googleapiclient.schema.Schemas.pretty", [1355, 5.208]], ["qname/googleapiclient.schema.Schemas.pretty", [1356, 11.376]], ["docstring/googleapiclient.schema.Schemas.pretty", []], ["kind/googleapiclient.schema.Schemas.pretty", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema.Schemas._prettyPrintByName", [1357, 34.129]], ["names/googleapiclient.schema.Schemas._prettyPrintByName", [224, 2.484, 261, 1.757, 1355, 2.872, 1358, 3.523]], ["qname/googleapiclient.schema.Schemas._prettyPrintByName", [1359, 11.376]], ["docstring/googleapiclient.schema.Schemas._prettyPrintByName", [7, 1.424, 57, 0.863, 98, 2.692, 108, 1.707, 115, 1.75, 150, 1.832, 163, 1.93, 219, 3.792, 223, 2.799, 224, 2.329, 225, 3.909, 226, 2.601, 227, 1.96, 233, 2.277, 261, 3.523, 285, 0.921, 432, 2.521, 602, 2.521, 1360, 4.175, 1361, 2.927, 1362, 2.927, 1363, 2.601]], ["kind/googleapiclient.schema.Schemas._prettyPrintByName", [54, -1.049]], ["name/googleapiclient.schema.Schemas.prettyPrintByName", [1364, 34.129]], ["names/googleapiclient.schema.Schemas.prettyPrintByName", [224, 2.484, 261, 1.757, 1355, 2.872, 1358, 3.523]], ["qname/googleapiclient.schema.Schemas.prettyPrintByName", [1365, 11.376]], ["docstring/googleapiclient.schema.Schemas.prettyPrintByName", [57, 1.081, 108, 2.137, 115, 2.192, 150, 2.171, 219, 3.859, 223, 3.506, 224, 2.917, 225, 4.634, 226, 3.258, 227, 2.455, 233, 2.317, 261, 3.585, 285, 1.154, 602, 3.158, 1363, 3.258]], ["kind/googleapiclient.schema.Schemas.prettyPrintByName", [54, -1.049]], ["name/googleapiclient.schema.Schemas._prettyPrintSchema", [1366, 34.129]], ["names/googleapiclient.schema.Schemas._prettyPrintSchema", [219, 2.223, 224, 2.921, 1355, 3.377]], ["qname/googleapiclient.schema.Schemas._prettyPrintSchema", [1367, 11.376]], ["docstring/googleapiclient.schema.Schemas._prettyPrintSchema", [7, 1.478, 57, 0.896, 85, 2.22, 98, 2.795, 150, 2.297, 163, 2.003, 201, 1.69, 219, 4.175, 223, 2.906, 224, 2.417, 225, 4.024, 226, 2.7, 227, 2.034, 233, 2.069, 261, 1.709, 285, 0.956, 432, 2.617, 602, 2.617, 1360, 4.297, 1361, 3.038, 1362, 3.038, 1363, 2.7]], ["kind/googleapiclient.schema.Schemas._prettyPrintSchema", [54, -1.049]], ["name/googleapiclient.schema.Schemas.prettyPrintSchema", [1368, 34.129]], ["names/googleapiclient.schema.Schemas.prettyPrintSchema", [219, 2.223, 224, 2.921, 1355, 3.377]], ["qname/googleapiclient.schema.Schemas.prettyPrintSchema", [1369, 11.376]], ["docstring/googleapiclient.schema.Schemas.prettyPrintSchema", [57, 1.133, 85, 2.807, 150, 2.642, 201, 2.137, 219, 4.346, 223, 3.674, 224, 3.057, 225, 4.795, 226, 3.415, 227, 2.573, 233, 2.024, 285, 1.209, 602, 3.31, 1363, 3.415]], ["kind/googleapiclient.schema.Schemas.prettyPrintSchema", [54, -1.049]], ["name/googleapiclient.schema.Schemas.get", [45, 20.116]], ["names/googleapiclient.schema.Schemas.get", [45, 4.136]], ["qname/googleapiclient.schema.Schemas.get", [1370, 11.376]], ["docstring/googleapiclient.schema.Schemas.get", [57, 1.288, 67, 2.376, 150, 1.763, 201, 2.429, 219, 4.255, 222, 2.795, 233, 1.588, 239, 2.645, 261, 4.278, 285, 1.375, 662, 4.177]], ["kind/googleapiclient.schema.Schemas.get", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct", [1371, 68.257]], ["names/googleapiclient.schema._SchemaToStruct", [219, 4.447, 942, 5.708, 1372, 9.101]], ["qname/googleapiclient.schema._SchemaToStruct", [1373, 22.752]], ["docstring/googleapiclient.schema._SchemaToStruct", [150, 5.248, 204, 9.689, 219, 7.875, 225, 11.202]], ["kind/googleapiclient.schema._SchemaToStruct", [21, -4.094]], ["name/googleapiclient.schema._SchemaToStruct.__init__", [441, 16.462]], ["names/googleapiclient.schema._SchemaToStruct.__init__", [442, 3.301]], ["qname/googleapiclient.schema._SchemaToStruct.__init__", [1374, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.__init__", [7, 1.744, 85, 3.864, 98, 3.297, 137, 3.584, 150, 1.446, 163, 3.487, 201, 1.993, 219, 3.808, 258, 2.363, 261, 2.016, 285, 1.128, 432, 3.087, 543, 2.569, 1360, 4.866, 1361, 3.584, 1362, 3.584, 1375, 3.78, 1376, 3.297, 1377, 4.442]], ["kind/googleapiclient.schema._SchemaToStruct.__init__", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct.value", [1378, 25.331]], ["names/googleapiclient.schema._SchemaToStruct.value", [1378, 5.208]], ["qname/googleapiclient.schema._SchemaToStruct.value", [1379, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.value", []], ["kind/googleapiclient.schema._SchemaToStruct.value", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema._SchemaToStruct.string", [233, 10.012]], ["names/googleapiclient.schema._SchemaToStruct.string", [233, 2.059]], ["qname/googleapiclient.schema._SchemaToStruct.string", [1380, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.string", []], ["kind/googleapiclient.schema._SchemaToStruct.string", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema._SchemaToStruct.schema", [219, 16.676]], ["names/googleapiclient.schema._SchemaToStruct.schema", [219, 3.429]], ["qname/googleapiclient.schema._SchemaToStruct.schema", [1381, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.schema", []], ["kind/googleapiclient.schema._SchemaToStruct.schema", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema._SchemaToStruct.dent", [1375, 29.045]], ["names/googleapiclient.schema._SchemaToStruct.dent", [1375, 5.972]], ["qname/googleapiclient.schema._SchemaToStruct.dent", [1382, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.dent", []], ["kind/googleapiclient.schema._SchemaToStruct.dent", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema._SchemaToStruct.from_cache", [1383, 34.129]], ["names/googleapiclient.schema._SchemaToStruct.from_cache", [112, 3.319, 273, 3.729]], ["qname/googleapiclient.schema._SchemaToStruct.from_cache", [1384, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.from_cache", []], ["kind/googleapiclient.schema._SchemaToStruct.from_cache", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema._SchemaToStruct.seen", [1360, 25.331]], ["names/googleapiclient.schema._SchemaToStruct.seen", [1360, 5.208]], ["qname/googleapiclient.schema._SchemaToStruct.seen", [1385, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.seen", []], ["kind/googleapiclient.schema._SchemaToStruct.seen", [268, -0.886, 445, -1.11]], ["name/googleapiclient.schema._SchemaToStruct.emit", [1386, 27.537]], ["names/googleapiclient.schema._SchemaToStruct.emit", [1386, 5.662]], ["qname/googleapiclient.schema._SchemaToStruct.emit", [1387, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.emit", [233, 1.964, 256, 7.039, 285, 1.7, 428, 4.025, 1388, 8.258, 1389, 5.166]], ["kind/googleapiclient.schema._SchemaToStruct.emit", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct.emitBegin", [1390, 34.129]], ["names/googleapiclient.schema._SchemaToStruct.emitBegin", [929, 4.26, 1386, 4.454]], ["qname/googleapiclient.schema._SchemaToStruct.emitBegin", [1391, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.emitBegin", [233, 1.9, 256, 6.887, 285, 1.645, 428, 3.893, 1388, 8.125, 1389, 4.997, 1392, 5.895]], ["kind/googleapiclient.schema._SchemaToStruct.emitBegin", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct.emitEnd", [1393, 34.129]], ["names/googleapiclient.schema._SchemaToStruct.emitEnd", [1083, 5.025, 1386, 4.454]], ["qname/googleapiclient.schema._SchemaToStruct.emitEnd", [1394, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.emitEnd", [207, 2.756, 233, 2.26, 256, 6.217, 285, 1.413, 428, 3.346, 1363, 6.336, 1388, 7.52, 1389, 4.294, 1392, 5.066]], ["kind/googleapiclient.schema._SchemaToStruct.emitEnd", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct.indent", [1376, 25.331]], ["names/googleapiclient.schema._SchemaToStruct.indent", [1376, 5.208]], ["qname/googleapiclient.schema._SchemaToStruct.indent", [1395, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.indent", [678, 7.646, 1376, 6.235, 1396, 6.778]], ["kind/googleapiclient.schema._SchemaToStruct.indent", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct.undent", [1397, 31.064]], ["names/googleapiclient.schema._SchemaToStruct.undent", [1397, 6.387]], ["qname/googleapiclient.schema._SchemaToStruct.undent", [1398, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.undent", [1376, 6.235, 1396, 6.778, 1399, 8.4]], ["kind/googleapiclient.schema._SchemaToStruct.undent", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct._to_str_impl", [1400, 34.129]], ["names/googleapiclient.schema._SchemaToStruct._to_str_impl", [544, 2.994, 942, 2.854, 1401, 4.55]], ["qname/googleapiclient.schema._SchemaToStruct._to_str_impl", [1402, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct._to_str_impl", [25, 4.862, 26, 3.23, 57, 1.106, 85, 2.741, 125, 2.334, 150, 2.606, 201, 2.087, 207, 3.358, 219, 4.298, 225, 4.713, 285, 1.181, 1363, 4.862]], ["kind/googleapiclient.schema._SchemaToStruct._to_str_impl", [54, -1.049]], ["name/googleapiclient.schema._SchemaToStruct.to_str", [1403, 34.129]], ["names/googleapiclient.schema._SchemaToStruct.to_str", [544, 3.632, 942, 3.463]], ["qname/googleapiclient.schema._SchemaToStruct.to_str", [1404, 11.376]], ["docstring/googleapiclient.schema._SchemaToStruct.to_str", [25, 4.618, 26, 2.469, 57, 0.777, 84, 2.522, 150, 2.097, 163, 1.738, 207, 2.566, 219, 3.905, 225, 4.476, 227, 1.766, 261, 2.353, 285, 0.83, 432, 2.272, 742, 2.975, 1098, 2.272, 1360, 4.78, 1361, 2.637, 1362, 2.637, 1363, 3.716, 1376, 2.426, 1389, 2.522, 1405, 3.268, 1406, 3.268, 1407, 3.268]], ["kind/googleapiclient.schema._SchemaToStruct.to_str", [54, -1.049]], ["name/googleapiclient.discovery.logger", [309, 20.517]], ["names/googleapiclient.discovery.logger", [309, 4.218]], ["qname/googleapiclient.discovery.logger", [1408, 11.376]], ["docstring/googleapiclient.discovery.logger", []], ["kind/googleapiclient.discovery.logger", [268, -1.193]], ["name/googleapiclient.discovery.URITEMPLATE", [1409, 31.064]], ["names/googleapiclient.discovery.URITEMPLATE", [1409, 6.387]], ["qname/googleapiclient.discovery.URITEMPLATE", [1410, 11.376]], ["docstring/googleapiclient.discovery.URITEMPLATE", []], ["kind/googleapiclient.discovery.URITEMPLATE", [315, -2.422]], ["name/googleapiclient.discovery.VARNAME", [1411, 31.064]], ["names/googleapiclient.discovery.VARNAME", [1411, 6.387]], ["qname/googleapiclient.discovery.VARNAME", [1412, 11.376]], ["docstring/googleapiclient.discovery.VARNAME", []], ["kind/googleapiclient.discovery.VARNAME", [315, -2.422]], ["name/googleapiclient.discovery.DISCOVERY_URI", [1413, 34.129]], ["names/googleapiclient.discovery.DISCOVERY_URI", [105, 3.729, 417, 2.477]], ["qname/googleapiclient.discovery.DISCOVERY_URI", [1414, 11.376]], ["docstring/googleapiclient.discovery.DISCOVERY_URI", []], ["kind/googleapiclient.discovery.DISCOVERY_URI", [315, -2.422]], ["name/googleapiclient.discovery.V2_DISCOVERY_URI", [1415, 34.129]], ["names/googleapiclient.discovery.V2_DISCOVERY_URI", [105, 3.074, 417, 2.042, 1159, 4.142]], ["qname/googleapiclient.discovery.V2_DISCOVERY_URI", [1416, 11.376]], ["docstring/googleapiclient.discovery.V2_DISCOVERY_URI", []], ["kind/googleapiclient.discovery.V2_DISCOVERY_URI", [315, -2.422]], ["name/googleapiclient.discovery.DEFAULT_METHOD_DOC", [1417, 34.129]], ["names/googleapiclient.discovery.DEFAULT_METHOD_DOC", [54, 0.759, 239, 2.223, 1418, 3.163]], ["qname/googleapiclient.discovery.DEFAULT_METHOD_DOC", [1419, 11.376]], ["docstring/googleapiclient.discovery.DEFAULT_METHOD_DOC", []], ["kind/googleapiclient.discovery.DEFAULT_METHOD_DOC", [315, -2.422]], ["name/googleapiclient.discovery.HTTP_PAYLOAD_METHODS", [1420, 34.129]], ["names/googleapiclient.discovery.HTTP_PAYLOAD_METHODS", [144, 1.593, 1212, 4.142, 1421, 3.672]], ["qname/googleapiclient.discovery.HTTP_PAYLOAD_METHODS", [1422, 11.376]], ["docstring/googleapiclient.discovery.HTTP_PAYLOAD_METHODS", []], ["kind/googleapiclient.discovery.HTTP_PAYLOAD_METHODS", [315, -2.422]], ["name/googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS", [1423, 34.129]], ["names/googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS", [164, 1.579, 482, 1.799, 1424, 3.87, 1425, 3.87]], ["qname/googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS", [1426, 11.376]], ["docstring/googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS", []], ["kind/googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS", [315, -2.422]], ["name/googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE", [1427, 34.129]], ["names/googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE", [239, 1.891, 429, 2.986, 512, 2.546, 1378, 2.872]], ["qname/googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE", [1428, 11.376]], ["docstring/googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE", []], ["kind/googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE", [315, -2.422]], ["name/googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE", [1429, 34.129]], ["names/googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE", [164, 1.374, 239, 1.645, 429, 2.598, 512, 2.215, 1378, 2.499]], ["qname/googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE", [1430, 11.376]], ["docstring/googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE", []], ["kind/googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE", [315, -2.422]], ["name/googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE", [1431, 34.129]], ["names/googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE", [155, 1.791, 156, 1.308, 164, 1.216, 239, 1.456, 429, 2.299, 1378, 2.211]], ["qname/googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE", [1432, 11.376]], ["docstring/googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE", []], ["kind/googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE", [315, -2.422]], ["name/googleapiclient.discovery._PAGE_TOKEN_NAMES", [1433, 34.129]], ["names/googleapiclient.discovery._PAGE_TOKEN_NAMES", [242, 2.994, 244, 3.511, 1434, 4.55]], ["qname/googleapiclient.discovery._PAGE_TOKEN_NAMES", [1435, 11.376]], ["docstring/googleapiclient.discovery._PAGE_TOKEN_NAMES", []], ["kind/googleapiclient.discovery._PAGE_TOKEN_NAMES", [315, -2.422]], ["name/googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE", [1436, 34.129]], ["names/googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE", [28, 1.624, 107, 2.598, 266, 2.717, 1437, 3.064, 1438, 3.367]], ["qname/googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE", [1439, 11.376]], ["docstring/googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE", []], ["kind/googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE", [315, -2.422]], ["name/googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT", [1440, 29.045]], ["names/googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT", [28, 1.624, 266, 2.717, 1334, 2.717, 1437, 3.064, 1441, 3.367]], ["qname/googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT", [1442, 11.376]], ["docstring/googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT", []], ["kind/googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT", [315, -2.422]], ["name/googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN", [1443, 34.129]], ["names/googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN", [266, 3.123, 619, 2.986, 1444, 3.87, 1445, 3.294]], ["qname/googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN", [1446, 11.376]], ["docstring/googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN", []], ["kind/googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN", [315, -2.422]], ["name/googleapiclient.discovery.DEFAULT_UNIVERSE", [1447, 34.129]], ["names/googleapiclient.discovery.DEFAULT_UNIVERSE", [239, 2.698, 619, 4.26]], ["qname/googleapiclient.discovery.DEFAULT_UNIVERSE", [1448, 11.376]], ["docstring/googleapiclient.discovery.DEFAULT_UNIVERSE", []], ["kind/googleapiclient.discovery.DEFAULT_UNIVERSE", [315, -2.422]], ["name/googleapiclient.discovery.STACK_QUERY_PARAMETERS", [1449, 34.129]], ["names/googleapiclient.discovery.STACK_QUERY_PARAMETERS", [414, 3.377, 1450, 4.142, 1451, 3.672]], ["qname/googleapiclient.discovery.STACK_QUERY_PARAMETERS", [1452, 11.376]], ["docstring/googleapiclient.discovery.STACK_QUERY_PARAMETERS", []], ["kind/googleapiclient.discovery.STACK_QUERY_PARAMETERS", [315, -2.422]], ["name/googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE", [1453, 34.129]], ["names/googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE", [239, 1.645, 414, 2.499, 429, 2.598, 1378, 2.499, 1450, 3.064]], ["qname/googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE", [1454, 11.376]], ["docstring/googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE", []], ["kind/googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE", [315, -2.422]], ["name/googleapiclient.discovery.APICoreVersionError", [1455, 68.257]], ["names/googleapiclient.discovery.APICoreVersionError", [141, 4.281, 262, 5.17, 1456, 9.101]], ["qname/googleapiclient.discovery.APICoreVersionError", [1457, 22.752]], ["docstring/googleapiclient.discovery.APICoreVersionError", []], ["kind/googleapiclient.discovery.APICoreVersionError", [317, -7.273]], ["name/googleapiclient.discovery.APICoreVersionError.__init__", [441, 16.462]], ["names/googleapiclient.discovery.APICoreVersionError.__init__", [442, 3.301]], ["qname/googleapiclient.discovery.APICoreVersionError.__init__", [1458, 11.376]], ["docstring/googleapiclient.discovery.APICoreVersionError.__init__", []], ["kind/googleapiclient.discovery.APICoreVersionError.__init__", [54, -1.049]], ["name/googleapiclient.discovery.RESERVED_WORDS", [1459, 34.129]], ["names/googleapiclient.discovery.RESERVED_WORDS", [1460, 5.521, 1461, 5.521]], ["qname/googleapiclient.discovery.RESERVED_WORDS", [1462, 11.376]], ["docstring/googleapiclient.discovery.RESERVED_WORDS", []], ["kind/googleapiclient.discovery.RESERVED_WORDS", [315, -2.422]], ["name/googleapiclient.discovery._BytesGenerator", [1463, 68.257]], ["names/googleapiclient.discovery._BytesGenerator", [1464, 11.041, 1465, 11.041]], ["qname/googleapiclient.discovery._BytesGenerator", [1466, 22.752]], ["docstring/googleapiclient.discovery._BytesGenerator", []], ["kind/googleapiclient.discovery._BytesGenerator", [21, -4.094]], ["name/googleapiclient.discovery.fix_method_name", [1467, 34.129]], ["names/googleapiclient.discovery.fix_method_name", [54, 0.759, 261, 2.066, 1468, 3.377]], ["qname/googleapiclient.discovery.fix_method_name", [1469, 11.376]], ["docstring/googleapiclient.discovery.fix_method_name", [54, 1.059, 57, 1.011, 233, 1.247, 261, 4.09, 285, 1.079, 423, 3.28, 969, 3.28, 1217, 3.869, 1468, 3.155, 1470, 6.346, 1471, 4.251, 1472, 6.346, 1473, 6.346, 1474, 6.346, 1475, 4.251, 1476, 6.346]], ["kind/googleapiclient.discovery.fix_method_name", [14, -2.096]], ["name/googleapiclient.discovery.key2param", [1477, 31.064]], ["names/googleapiclient.discovery.key2param", [1477, 6.387]], ["qname/googleapiclient.discovery.key2param", [1478, 11.376]], ["docstring/googleapiclient.discovery.key2param", [26, 2.116, 40, 2.439, 50, 4.724, 54, 1.094, 57, 1.057, 183, 2.089, 204, 3.941, 233, 1.303, 245, 3.584, 261, 4.166, 285, 1.128, 823, 3.087, 1479, 4.442, 1480, 4.442, 1481, 4.442]], ["kind/googleapiclient.discovery.key2param", [14, -2.096]], ["name/googleapiclient.discovery.build", [594, 21.407]], ["names/googleapiclient.discovery.build", [594, 4.401]], ["qname/googleapiclient.discovery.build", [1482, 11.376]], ["docstring/googleapiclient.discovery.build", [6, 0.566, 7, 1.875, 17, 0.371, 20, 0.359, 28, 1.323, 34, 0.438, 41, 1.621, 50, 0.99, 54, 0.111, 57, 0.158, 67, 0.554, 76, 0.477, 81, 0.537, 86, 0.513, 94, 1.535, 107, 3.472, 108, 1.661, 109, 0.477, 114, 0.99, 115, 0.609, 125, 0.634, 144, 0.631, 146, 0.566, 147, 0.402, 150, 0.747, 159, 1.293, 183, 0.313, 193, 0.348, 198, 1.339, 204, 0.4, 205, 0.477, 206, 0.417, 218, 0.906, 233, 0.673, 239, 1.725, 254, 0.566, 261, 0.573, 262, 1.025, 275, 1.218, 285, 0.169, 287, 0.537, 356, 0.354, 363, 1.019, 369, 0.378, 371, 0.566, 372, 0.566, 382, 0.477, 389, 1.075, 394, 0.378, 417, 0.567, 538, 0.718, 544, 0.831, 545, 1.084, 558, 0.537, 571, 0.417, 579, 0.513, 610, 2.214, 646, 0.605, 660, 0.477, 677, 1.339, 711, 0.811, 759, 1.254, 844, 1.293, 845, 0.477, 847, 1.304, 848, 1.339, 849, 0.449, 857, 0.494, 861, 0.494, 900, 3.004, 966, 0.566, 1019, 0.494, 1044, 0.605, 1065, 0.477, 1066, 0.513, 1067, 0.513, 1081, 0.566, 1096, 0.438, 1100, 0.477, 1154, 0.477, 1192, 0.537, 1248, 0.427, 1254, 0.513, 1264, 1.455, 1269, 2.34, 1280, 0.462, 1325, 0.513, 1334, 1.455, 1340, 1.019, 1347, 1.455, 1418, 0.878, 1440, 0.566, 1483, 1.075, 1484, 0.566, 1485, 0.975, 1486, 1.642, 1487, 0.665, 1488, 0.665, 1489, 0.665, 1490, 0.665, 1491, 0.665, 1492, 0.537, 1493, 0.605, 1494, 0.665, 1495, 0.605, 1496, 0.605, 1497, 0.605, 1498, 0.665, 1499, 1.535, 1500, 1.15, 1501, 0.605, 1502, 2.848, 1503, 0.605, 1504, 0.605, 1505, 1.15, 1506, 0.605, 1507, 1.642, 1508, 1.642, 1509, 0.605, 1510, 2.089, 1511, 1.15, 1512, 1.15, 1513, 1.15, 1514, 0.605, 1515, 1.15, 1516, 1.15, 1517, 0.605, 1518, 0.605, 1519, 1.642, 1520, 0.605, 1521, 0.605, 1522, 0.605, 1523, 0.605, 1524, 0.605, 1525, 0.605, 1526, 0.605]], ["kind/googleapiclient.discovery.build", [14, -2.096]], ["name/googleapiclient.discovery._discovery_service_uri_options", [1527, 34.129]], ["names/googleapiclient.discovery._discovery_service_uri_options", [105, 2.614, 417, 1.737, 1528, 3.523, 1529, 3.87]], ["qname/googleapiclient.discovery._discovery_service_uri_options", [1530, 11.376]], ["docstring/googleapiclient.discovery._discovery_service_uri_options", [7, 1.568, 28, 2.921, 57, 1.44, 108, 3.44, 147, 1.271, 163, 2.124, 233, 1.776, 262, 3.44, 285, 1.014, 407, 2.092, 417, 2.717, 545, 2.401, 582, 3.399, 594, 2.505, 610, 3.798, 677, 2.964, 807, 2.864, 1070, 3.222, 1486, 3.635, 1531, 3.994, 1532, 3.994]], ["kind/googleapiclient.discovery._discovery_service_uri_options", [14, -2.096]], ["name/googleapiclient.discovery._retrieve_discovery_doc", [1533, 34.129]], ["names/googleapiclient.discovery._retrieve_discovery_doc", [105, 3.074, 1418, 3.163, 1534, 4.55]], ["qname/googleapiclient.discovery._retrieve_discovery_doc", [1535, 11.376]], ["docstring/googleapiclient.discovery._retrieve_discovery_doc", [7, 0.796, 28, 1.684, 50, 1.114, 57, 0.483, 76, 1.455, 84, 1.565, 86, 1.565, 108, 3.163, 109, 1.455, 114, 2.998, 115, 2.217, 144, 1.222, 147, 0.646, 150, 0.661, 208, 1.245, 233, 1.805, 261, 0.921, 262, 1.983, 285, 0.515, 369, 1.153, 382, 1.455, 394, 1.153, 407, 1.829, 571, 1.273, 610, 2.19, 759, 2.427, 809, 1.727, 844, 2.504, 845, 1.455, 857, 1.506, 861, 1.506, 1019, 1.506, 1065, 1.455, 1066, 1.565, 1067, 1.565, 1096, 1.335, 1154, 1.455, 1223, 1.637, 1280, 1.41, 1325, 1.565, 1418, 2.427, 1483, 1.727, 1484, 1.727, 1485, 1.565, 1492, 1.637, 1497, 1.847, 1499, 1.727, 1517, 1.847, 1518, 1.847, 1519, 1.847, 1536, 2.029, 1537, 2.029, 1538, 1.847, 1539, 1.847, 1540, 2.029]], ["kind/googleapiclient.discovery._retrieve_discovery_doc", [14, -2.096]], ["name/googleapiclient.discovery._check_api_core_compatible_with_credentials_universe", [1541, 34.129]], ["names/googleapiclient.discovery._check_api_core_compatible_with_credentials_universe", [28, 1.289, 272, 1.758, 280, 2.432, 614, 2.274, 619, 2.062, 1542, 2.672, 1543, 2.672]], ["qname/googleapiclient.discovery._check_api_core_compatible_with_credentials_universe", [1544, 11.376]], ["docstring/googleapiclient.discovery._check_api_core_compatible_with_credentials_universe", []], ["kind/googleapiclient.discovery._check_api_core_compatible_with_credentials_universe", [14, -2.096]], ["name/googleapiclient.discovery.build_from_document", [1545, 34.129]], ["names/googleapiclient.discovery.build_from_document", [115, 2.195, 273, 3.074, 594, 2.854]], ["qname/googleapiclient.discovery.build_from_document", [1546, 11.376]], ["docstring/googleapiclient.discovery.build_from_document", [6, 0.611, 7, 1.97, 17, 0.401, 20, 0.388, 21, 0.234, 26, 0.647, 28, 1.615, 34, 0.894, 41, 1.718, 43, 0.432, 50, 1.061, 54, 0.12, 57, 0.171, 67, 0.315, 81, 0.58, 84, 0.554, 86, 0.554, 94, 1.645, 107, 3.654, 108, 1.374, 115, 1.182, 125, 0.682, 131, 0.533, 144, 1.022, 147, 0.78, 150, 0.798, 151, 0.515, 159, 0.974, 183, 0.338, 193, 0.712, 195, 0.293, 197, 0.499, 198, 1.435, 199, 0.673, 201, 0.867, 218, 0.974, 222, 0.371, 227, 0.388, 233, 0.857, 239, 1.198, 259, 0.58, 275, 1.306, 285, 0.182, 287, 0.58, 356, 0.382, 363, 1.096, 369, 0.772, 371, 0.611, 372, 0.611, 382, 0.974, 389, 1.156, 417, 0.61, 537, 0.554, 538, 0.408, 544, 0.894, 545, 1.162, 558, 0.58, 568, 0.554, 579, 0.554, 583, 0.376, 594, 0.451, 609, 1.237, 610, 1.212, 660, 0.515, 677, 1.435, 706, 0.432, 711, 0.872, 759, 0.499, 809, 0.611, 844, 0.515, 847, 1.098, 848, 1.008, 892, 0.473, 900, 3.183, 1024, 1.156, 1081, 0.611, 1096, 0.473, 1154, 0.515, 1192, 0.58, 1223, 0.58, 1248, 0.461, 1254, 0.554, 1264, 1.56, 1269, 2.485, 1280, 0.499, 1325, 0.554, 1334, 1.56, 1340, 1.096, 1347, 1.096, 1440, 0.611, 1484, 0.611, 1485, 1.048, 1492, 0.58, 1496, 0.654, 1499, 1.156, 1500, 1.237, 1501, 0.654, 1502, 3.018, 1503, 0.654, 1504, 0.654, 1505, 1.237, 1506, 0.654, 1507, 1.759, 1508, 1.759, 1509, 0.654, 1510, 2.231, 1511, 1.237, 1512, 1.237, 1513, 1.237, 1514, 0.654, 1515, 1.237, 1516, 1.237, 1520, 0.654, 1521, 0.654, 1522, 0.654, 1523, 0.654, 1524, 0.654, 1525, 0.654, 1526, 0.654, 1539, 0.654, 1547, 0.718, 1548, 0.718, 1549, 0.718, 1550, 0.718, 1551, 0.718, 1552, 0.718, 1553, 0.718]], ["kind/googleapiclient.discovery.build_from_document", [14, -2.096]], ["name/googleapiclient.discovery._cast", [1554, 34.129]], ["names/googleapiclient.discovery._cast", [1555, 7.017]], ["qname/googleapiclient.discovery._cast", [1556, 11.376]], ["docstring/googleapiclient.discovery._cast", [26, 2.757, 57, 0.896, 67, 3.75, 156, 2.541, 166, 2.795, 198, 2.795, 201, 3.165, 204, 3.48, 208, 2.311, 219, 3.446, 233, 2.069, 285, 0.956, 1264, 3.038, 1557, 3.427, 1558, 3.427, 1559, 3.766, 1560, 5.789, 1561, 3.766]], ["kind/googleapiclient.discovery._cast", [14, -2.096]], ["name/googleapiclient.discovery._media_size_to_long", [1562, 34.129]], ["names/googleapiclient.discovery._media_size_to_long", [164, 1.579, 482, 1.799, 612, 3.123, 942, 2.428]], ["qname/googleapiclient.discovery._media_size_to_long", [1563, 11.376]], ["docstring/googleapiclient.discovery._media_size_to_long", [57, 1.161, 67, 2.141, 164, 1.991, 200, 4.743, 204, 2.933, 233, 2.413, 285, 1.239, 482, 3.822, 1065, 5.035, 1564, 4.88, 1565, 4.88, 1566, 4.88, 1567, 4.88, 1568, 4.88]], ["kind/googleapiclient.discovery._media_size_to_long", [14, -2.096]], ["name/googleapiclient.discovery._media_path_url_from_info", [1569, 34.129]], ["names/googleapiclient.discovery._media_path_url_from_info", [164, 1.374, 273, 2.274, 407, 1.764, 711, 2.161, 1147, 3.064]], ["qname/googleapiclient.discovery._media_path_url_from_info", [1570, 11.376]], ["docstring/googleapiclient.discovery._media_path_url_from_info", [7, 1.167, 28, 3.677, 43, 1.788, 54, 1.009, 57, 0.707, 78, 1.689, 108, 2.845, 115, 2.917, 164, 1.961, 222, 1.535, 233, 1.41, 285, 0.755, 407, 2.518, 417, 2.156, 481, 1.305, 538, 1.689, 610, 1.865, 711, 3.882, 807, 2.132, 967, 2.067, 1100, 3.446, 1571, 3.877, 1572, 4.666, 1573, 2.399, 1574, 2.531, 1575, 2.399]], ["kind/googleapiclient.discovery._media_path_url_from_info", [14, -2.096]], ["name/googleapiclient.discovery._fix_up_parameters", [1576, 34.129]], ["names/googleapiclient.discovery._fix_up_parameters", [34, 2.994, 1451, 3.672, 1468, 3.377]], ["qname/googleapiclient.discovery._fix_up_parameters", [1577, 11.376]], ["docstring/googleapiclient.discovery._fix_up_parameters", [7, 0.722, 26, 0.876, 28, 2.794, 36, 2.23, 38, 1.045, 50, 1.762, 54, 1.27, 57, 0.438, 65, 2.807, 67, 1.408, 78, 3.615, 92, 2.476, 108, 2.403, 109, 1.319, 115, 2.058, 144, 0.644, 150, 1.045, 163, 0.979, 183, 2.993, 219, 2.084, 222, 1.656, 233, 0.54, 234, 2.807, 248, 1.485, 261, 0.835, 285, 0.467, 428, 1.929, 710, 1.566, 770, 1.675, 807, 1.319, 892, 2.111, 901, 1.566, 967, 1.279, 1193, 1.675, 1221, 1.279, 1248, 1.181, 1573, 1.485, 1575, 1.485, 1578, 1.84, 1579, 1.84, 1580, 1.566, 1581, 1.566, 1582, 2.476, 1583, 1.42, 1584, 1.675]], ["kind/googleapiclient.discovery._fix_up_parameters", [14, -2.096]], ["name/googleapiclient.discovery._fix_up_media_upload", [1585, 34.129]], ["names/googleapiclient.discovery._fix_up_media_upload", [34, 2.546, 164, 1.579, 481, 1.698, 1468, 2.872]], ["qname/googleapiclient.discovery._fix_up_media_upload", [1586, 11.376]], ["docstring/googleapiclient.discovery._fix_up_media_upload", [7, 0.569, 20, 1.404, 28, 2.656, 36, 1.007, 50, 1.426, 54, 1.184, 57, 0.345, 67, 0.636, 78, 2.444, 108, 2.591, 115, 2.656, 135, 0.553, 138, 1.118, 156, 0.636, 163, 1.382, 164, 1.755, 183, 2.024, 222, 1.341, 233, 1.036, 234, 0.954, 239, 1.269, 285, 0.368, 407, 0.759, 417, 1.166, 428, 1.562, 433, 0.759, 481, 1.888, 482, 0.674, 485, 2.042, 538, 0.823, 610, 0.909, 612, 1.169, 711, 1.668, 771, 0.838, 805, 1.076, 807, 1.039, 823, 1.007, 890, 0.93, 892, 2.323, 967, 1.007, 1003, 1.319, 1068, 1.863, 1100, 1.039, 1221, 1.007, 1571, 2.096, 1572, 2.724, 1573, 1.169, 1574, 1.233, 1575, 1.169, 1580, 1.233, 1581, 1.233, 1582, 2.004, 1583, 1.118, 1587, 1.449, 1588, 1.449, 1589, 1.449, 1590, 2.365, 1591, 2.211, 1592, 1.319]], ["kind/googleapiclient.discovery._fix_up_media_upload", [14, -2.096]], ["name/googleapiclient.discovery._fix_up_method_description", [1593, 34.129]], ["names/googleapiclient.discovery._fix_up_method_description", [34, 2.546, 54, 0.646, 1468, 2.872, 1594, 3.87]], ["qname/googleapiclient.discovery._fix_up_method_description", [1595, 11.376]], ["docstring/googleapiclient.discovery._fix_up_method_description", [7, 1.2, 20, 0.658, 28, 2.795, 30, 0.982, 32, 0.611, 36, 0.846, 38, 0.692, 50, 1.219, 54, 1.256, 57, 0.29, 65, 0.801, 67, 0.534, 78, 2.142, 108, 2.532, 115, 2.596, 135, 0.465, 138, 0.939, 144, 0.426, 150, 0.396, 156, 0.534, 163, 1.18, 164, 1.538, 183, 1.044, 219, 1.494, 222, 1.146, 233, 1.286, 234, 2.883, 239, 1.084, 261, 1.007, 285, 0.309, 407, 0.638, 417, 0.996, 433, 0.638, 481, 1.654, 482, 0.566, 485, 1.769, 538, 0.692, 565, 0.904, 610, 0.764, 612, 0.982, 615, 1.108, 636, 0.822, 711, 1.425, 771, 0.704, 805, 0.904, 807, 0.873, 823, 0.846, 892, 1.46, 967, 0.846, 1068, 1.591, 1100, 0.873, 1221, 0.846, 1248, 0.782, 1571, 1.791, 1572, 2.359, 1573, 0.982, 1574, 1.889, 1575, 0.982, 1580, 1.036, 1581, 1.036, 1582, 0.939, 1583, 0.939, 1584, 2.02, 1590, 2.02, 1591, 1.889, 1592, 1.108, 1596, 1.108, 1597, 2.219, 1598, 1.218]], ["kind/googleapiclient.discovery._fix_up_method_description", [14, -2.096]], ["name/googleapiclient.discovery._fix_up_media_path_base_url", [1599, 34.129]], ["names/googleapiclient.discovery._fix_up_media_path_base_url", [26, 1.419, 34, 1.96, 164, 1.216, 407, 1.561, 711, 1.912, 1468, 2.211]], ["qname/googleapiclient.discovery._fix_up_media_path_base_url", [1600, 11.376]], ["docstring/googleapiclient.discovery._fix_up_media_path_base_url", [26, 3.557, 28, 1.63, 57, 0.804, 65, 2.224, 76, 2.424, 147, 1.075, 161, 2.424, 164, 2.686, 233, 1.931, 285, 0.858, 407, 3.913, 417, 2.954, 481, 2.889, 1100, 3.816, 1340, 2.727, 1572, 2.608, 1591, 2.876, 1601, 5.322, 1602, 3.38, 1603, 3.38, 1604, 3.38, 1605, 3.38]], ["kind/googleapiclient.discovery._fix_up_media_path_base_url", [14, -2.096]], ["name/googleapiclient.discovery._urljoin", [1606, 34.129]], ["names/googleapiclient.discovery._urljoin", [1607, 6.387]], ["qname/googleapiclient.discovery._urljoin", [1608, 11.376]], ["docstring/googleapiclient.discovery._urljoin", [20, 3.744, 52, 4.969, 407, 3.631, 423, 5.347, 582, 5.898, 1607, 6.308, 1609, 6.93, 1610, 6.93]], ["kind/googleapiclient.discovery._urljoin", [14, -2.096]], ["name/googleapiclient.discovery.ResourceMethodParameters", [1611, 68.257]], ["names/googleapiclient.discovery.ResourceMethodParameters", [54, 1.518, 527, 5.842, 1451, 7.343]], ["qname/googleapiclient.discovery.ResourceMethodParameters", [1612, 22.752]], ["docstring/googleapiclient.discovery.ResourceMethodParameters", [7, 2.095, 26, 1.422, 41, 2.451, 54, 1.686, 67, 3.174, 87, 3.826, 149, 2.541, 150, 0.972, 156, 3.174, 161, 2.141, 163, 5.969, 183, 8.209, 196, 1.965, 201, 2.395, 217, 2.409, 219, 2.607, 233, 4.808, 261, 6.242, 363, 2.409, 394, 1.696, 407, 1.565, 418, 3.709, 485, 1.727, 541, 2.304, 565, 2.216, 709, 2.541, 711, 1.917, 712, 2.541, 759, 2.076, 945, 2.718, 1065, 2.141, 1068, 7.247, 1248, 5.646, 1557, 2.718, 1558, 2.718, 1613, 2.541, 1614, 2.986, 1615, 2.986, 1616, 2.986, 1617, 5.336, 1618, 5.336, 1619, 2.986, 1620, 2.986, 1621, 2.986, 1622, 2.986, 1623, 2.986, 1624, 2.718]], ["kind/googleapiclient.discovery.ResourceMethodParameters", [21, -4.094]], ["name/googleapiclient.discovery.ResourceMethodParameters.__init__", [441, 16.462]], ["names/googleapiclient.discovery.ResourceMethodParameters.__init__", [442, 3.301]], ["qname/googleapiclient.discovery.ResourceMethodParameters.__init__", [1625, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.__init__", [28, 2.095, 36, 3.019, 41, 1.995, 50, 2.385, 54, 1.283, 67, 2.83, 78, 3.664, 108, 2.044, 115, 2.095, 222, 2.243, 239, 2.123, 258, 2.311, 285, 1.103, 892, 2.858, 1146, 3.697, 1221, 3.019, 1582, 3.352, 1583, 3.352, 1626, 4.344, 1627, 4.344, 1628, 4.344]], ["kind/googleapiclient.discovery.ResourceMethodParameters.__init__", [54, -1.049]], ["name/googleapiclient.discovery.ResourceMethodParameters.argmap", [1613, 29.045]], ["names/googleapiclient.discovery.ResourceMethodParameters.argmap", [1613, 5.972]], ["qname/googleapiclient.discovery.ResourceMethodParameters.argmap", [1629, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.argmap", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.argmap", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.required_params", [1630, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.required_params", [415, 3.632, 1631, 5.521]], ["qname/googleapiclient.discovery.ResourceMethodParameters.required_params", [1632, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.required_params", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.required_params", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.repeated_params", [1633, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.repeated_params", [415, 3.632, 1634, 5.521]], ["qname/googleapiclient.discovery.ResourceMethodParameters.repeated_params", [1635, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.repeated_params", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.repeated_params", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.pattern_params", [1636, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.pattern_params", [149, 4.698, 415, 3.632]], ["qname/googleapiclient.discovery.ResourceMethodParameters.pattern_params", [1637, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.pattern_params", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.pattern_params", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.query_params", [1638, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.query_params", [414, 4.098, 415, 3.632]], ["qname/googleapiclient.discovery.ResourceMethodParameters.query_params", [1639, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.query_params", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.query_params", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.path_params", [1640, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.path_params", [415, 3.632, 711, 3.544]], ["qname/googleapiclient.discovery.ResourceMethodParameters.path_params", [1641, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.path_params", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.path_params", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.param_types", [1642, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.param_types", [419, 3.388, 1643, 5.521]], ["qname/googleapiclient.discovery.ResourceMethodParameters.param_types", [1644, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.param_types", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.param_types", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.enum_params", [1645, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.enum_params", [415, 3.632, 1624, 5.025]], ["qname/googleapiclient.discovery.ResourceMethodParameters.enum_params", [1646, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.enum_params", []], ["kind/googleapiclient.discovery.ResourceMethodParameters.enum_params", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.ResourceMethodParameters.set_parameters", [1647, 34.129]], ["names/googleapiclient.discovery.ResourceMethodParameters.set_parameters", [41, 2.535, 1451, 4.454]], ["qname/googleapiclient.discovery.ResourceMethodParameters.set_parameters", [1648, 11.376]], ["docstring/googleapiclient.discovery.ResourceMethodParameters.set_parameters", [26, 1.794, 28, 1.816, 36, 2.617, 50, 2.068, 54, 1.425, 67, 2.541, 78, 4.006, 85, 2.22, 108, 1.771, 115, 1.816, 163, 2.003, 183, 2.723, 196, 2.477, 222, 1.944, 234, 2.477, 285, 0.956, 892, 2.477, 1146, 3.205, 1221, 2.617, 1248, 2.417, 1312, 3.205, 1485, 2.906, 1582, 2.906, 1583, 2.906]], ["kind/googleapiclient.discovery.ResourceMethodParameters.set_parameters", [54, -1.049]], ["name/googleapiclient.discovery.createMethod", [1649, 34.129]], ["names/googleapiclient.discovery.createMethod", [54, 0.921, 1650, 5.025]], ["qname/googleapiclient.discovery.createMethod", [1651, 11.376]], ["docstring/googleapiclient.discovery.createMethod", [7, 1.507, 43, 2.308, 54, 1.191, 108, 2.764, 115, 2.834, 150, 2.324, 219, 3.487, 222, 3.033, 233, 1.126, 234, 2.525, 261, 2.667, 285, 0.975, 545, 2.308, 892, 2.525, 967, 2.668, 1248, 2.464, 1652, 3.494, 1653, 3.494, 1654, 3.494, 1655, 3.494, 1656, 3.494]], ["kind/googleapiclient.discovery.createMethod", [14, -2.096]], ["name/googleapiclient.discovery.createNextMethod", [1657, 34.129]], ["names/googleapiclient.discovery.createNextMethod", [54, 0.759, 243, 3.263, 1650, 4.142]], ["qname/googleapiclient.discovery.createNextMethod", [1658, 11.376]], ["docstring/googleapiclient.discovery.createNextMethod", [7, 1.133, 43, 1.735, 54, 0.989, 147, 2.172, 163, 1.536, 183, 1.358, 195, 1.914, 233, 1.739, 242, 4.49, 244, 5.266, 261, 2.69, 285, 0.733, 341, 2.457, 418, 2.007, 514, 1.281, 545, 1.735, 759, 2.007, 805, 2.143, 847, 1.64, 849, 1.95, 1269, 4.399, 1312, 2.457, 1485, 2.227, 1652, 2.628, 1653, 2.628, 1659, 4.691, 1660, 2.887, 1661, 2.887, 1662, 2.887]], ["kind/googleapiclient.discovery.createNextMethod", [14, -2.096]], ["name/googleapiclient.discovery.Resource", [527, 43.815]], ["names/googleapiclient.discovery.Resource", [527, 9.009]], ["qname/googleapiclient.discovery.Resource", [1663, 22.752]], ["docstring/googleapiclient.discovery.Resource", [21, 5.471, 545, 10.1, 1347, 13.556]], ["kind/googleapiclient.discovery.Resource", [21, -4.094]], ["name/googleapiclient.discovery.Resource.__init__", [441, 16.462]], ["names/googleapiclient.discovery.Resource.__init__", [442, 3.301]], ["qname/googleapiclient.discovery.Resource.__init__", [1664, 11.376]], ["docstring/googleapiclient.discovery.Resource.__init__", [21, 0.712, 24, 1.476, 26, 1.041, 28, 2.344, 50, 1.2, 108, 2.286, 115, 2.344, 144, 1.302, 147, 1.184, 150, 2.095, 167, 1.989, 193, 1.145, 204, 1.314, 205, 1.567, 206, 1.371, 213, 1.622, 219, 2.374, 222, 1.921, 233, 1.426, 234, 2.448, 239, 1.068, 261, 0.992, 285, 0.555, 407, 1.145, 417, 0.981, 420, 1.989, 545, 2.921, 594, 1.371, 892, 1.438, 952, 1.989, 967, 1.519, 1096, 1.438, 1098, 1.519, 1199, 3.167, 1248, 1.403, 1254, 1.686, 1396, 1.763, 1492, 1.763, 1493, 1.989, 1495, 1.989, 1572, 1.686, 1656, 1.989, 1665, 2.186, 1666, 2.186, 1667, 2.186, 1668, 2.186, 1669, 1.989, 1670, 2.186, 1671, 2.186]], ["kind/googleapiclient.discovery.Resource.__init__", [54, -1.049]], ["name/googleapiclient.discovery.Resource._dynamic_attrs", [1672, 34.129]], ["names/googleapiclient.discovery.Resource._dynamic_attrs", [1673, 5.025, 1674, 5.521]], ["qname/googleapiclient.discovery.Resource._dynamic_attrs", [1675, 11.376]], ["docstring/googleapiclient.discovery.Resource._dynamic_attrs", []], ["kind/googleapiclient.discovery.Resource._dynamic_attrs", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._http", [1676, 34.129]], ["names/googleapiclient.discovery.Resource._http", [144, 2.456]], ["qname/googleapiclient.discovery.Resource._http", [1677, 11.376]], ["docstring/googleapiclient.discovery.Resource._http", []], ["kind/googleapiclient.discovery.Resource._http", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._baseUrl", [1678, 34.129]], ["names/googleapiclient.discovery.Resource._baseUrl", [26, 2.629, 407, 2.892]], ["qname/googleapiclient.discovery.Resource._baseUrl", [1679, 11.376]], ["docstring/googleapiclient.discovery.Resource._baseUrl", []], ["kind/googleapiclient.discovery.Resource._baseUrl", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._model", [1680, 34.129]], ["names/googleapiclient.discovery.Resource._model", [193, 3.676]], ["qname/googleapiclient.discovery.Resource._model", [1681, 11.376]], ["docstring/googleapiclient.discovery.Resource._model", []], ["kind/googleapiclient.discovery.Resource._model", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._developerKey", [1682, 34.129]], ["names/googleapiclient.discovery.Resource._developerKey", [1683, 5.521, 1684, 5.521]], ["qname/googleapiclient.discovery.Resource._developerKey", [1685, 11.376]], ["docstring/googleapiclient.discovery.Resource._developerKey", []], ["kind/googleapiclient.discovery.Resource._developerKey", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._requestBuilder", [1686, 34.129]], ["names/googleapiclient.discovery.Resource._requestBuilder", [147, 1.757, 1245, 5.025]], ["qname/googleapiclient.discovery.Resource._requestBuilder", [1687, 11.376]], ["docstring/googleapiclient.discovery.Resource._requestBuilder", []], ["kind/googleapiclient.discovery.Resource._requestBuilder", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._resourceDesc", [1688, 34.129]], ["names/googleapiclient.discovery.Resource._resourceDesc", [527, 3.544, 1689, 5.025]], ["qname/googleapiclient.discovery.Resource._resourceDesc", [1690, 11.376]], ["docstring/googleapiclient.discovery.Resource._resourceDesc", []], ["kind/googleapiclient.discovery.Resource._resourceDesc", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._rootDesc", [1691, 34.129]], ["names/googleapiclient.discovery.Resource._rootDesc", [1571, 4.454, 1689, 5.025]], ["qname/googleapiclient.discovery.Resource._rootDesc", [1692, 11.376]], ["docstring/googleapiclient.discovery.Resource._rootDesc", []], ["kind/googleapiclient.discovery.Resource._rootDesc", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._schema", [1693, 34.129]], ["names/googleapiclient.discovery.Resource._schema", [219, 3.429]], ["qname/googleapiclient.discovery.Resource._schema", [1694, 11.376]], ["docstring/googleapiclient.discovery.Resource._schema", []], ["kind/googleapiclient.discovery.Resource._schema", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._universe_domain", [1695, 34.129]], ["names/googleapiclient.discovery.Resource._universe_domain", [619, 4.26, 1445, 4.698]], ["qname/googleapiclient.discovery.Resource._universe_domain", [1696, 11.376]], ["docstring/googleapiclient.discovery.Resource._universe_domain", []], ["kind/googleapiclient.discovery.Resource._universe_domain", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._credentials_validated", [1697, 34.129]], ["names/googleapiclient.discovery.Resource._credentials_validated", [272, 3.632, 1698, 5.521]], ["qname/googleapiclient.discovery.Resource._credentials_validated", [1699, 11.376]], ["docstring/googleapiclient.discovery.Resource._credentials_validated", []], ["kind/googleapiclient.discovery.Resource._credentials_validated", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery.Resource._set_dynamic_attr", [1700, 34.129]], ["names/googleapiclient.discovery.Resource._set_dynamic_attr", [41, 2.09, 1673, 4.142, 1701, 3.873]], ["qname/googleapiclient.discovery.Resource._set_dynamic_attr", [1702, 11.376]], ["docstring/googleapiclient.discovery.Resource._set_dynamic_attr", [41, 3.726, 64, 2.923, 67, 3.028, 114, 2.615, 150, 1.551, 163, 2.533, 233, 1.397, 261, 2.162, 285, 1.209, 369, 2.705, 541, 6.259, 1703, 6.899, 1704, 6.899, 1705, 4.762]], ["kind/googleapiclient.discovery.Resource._set_dynamic_attr", [54, -1.049]], ["name/googleapiclient.discovery.Resource.__getstate__", [1706, 34.129]], ["names/googleapiclient.discovery.Resource.__getstate__", [1707, 7.017]], ["qname/googleapiclient.discovery.Resource.__getstate__", [1708, 11.376]], ["docstring/googleapiclient.discovery.Resource.__getstate__", [7, 2.125, 99, 3.657, 199, 2.68, 221, 4.607, 369, 3.075, 1154, 3.882, 1502, 4.368, 1701, 4.607, 1709, 5.414, 1710, 5.414, 1711, 6.879, 1712, 4.927, 1713, 4.927, 1714, 4.927, 1715, 4.927]], ["kind/googleapiclient.discovery.Resource.__getstate__", [54, -1.049]], ["name/googleapiclient.discovery.Resource.__setstate__", [1716, 34.129]], ["names/googleapiclient.discovery.Resource.__setstate__", [1717, 7.017]], ["qname/googleapiclient.discovery.Resource.__setstate__", [1718, 11.376]], ["docstring/googleapiclient.discovery.Resource.__setstate__", [7, 2.125, 64, 3.322, 99, 3.657, 150, 1.763, 199, 2.68, 221, 4.607, 369, 3.075, 1502, 4.368, 1701, 4.607, 1711, 6.879, 1712, 4.927, 1713, 4.927, 1714, 4.927, 1715, 4.927, 1719, 5.414]], ["kind/googleapiclient.discovery.Resource.__setstate__", [54, -1.049]], ["name/googleapiclient.discovery.Resource.__enter__", [1720, 34.129]], ["names/googleapiclient.discovery.Resource.__enter__", [1721, 7.017]], ["qname/googleapiclient.discovery.Resource.__enter__", [1722, 11.376]], ["docstring/googleapiclient.discovery.Resource.__enter__", []], ["kind/googleapiclient.discovery.Resource.__enter__", [54, -1.049]], ["name/googleapiclient.discovery.Resource.__exit__", [1723, 34.129]], ["names/googleapiclient.discovery.Resource.__exit__", [1724, 7.017]], ["qname/googleapiclient.discovery.Resource.__exit__", [1725, 11.376]], ["docstring/googleapiclient.discovery.Resource.__exit__", []], ["kind/googleapiclient.discovery.Resource.__exit__", [54, -1.049]], ["name/googleapiclient.discovery.Resource.close", [1290, 26.333]], ["names/googleapiclient.discovery.Resource.close", [1290, 5.414]], ["qname/googleapiclient.discovery.Resource.close", [1726, 11.376]], ["docstring/googleapiclient.discovery.Resource.close", [970, 7.149, 1211, 7.646, 1290, 6.482]], ["kind/googleapiclient.discovery.Resource.close", [54, -1.049]], ["name/googleapiclient.discovery.Resource._set_service_methods", [1727, 34.129]], ["names/googleapiclient.discovery.Resource._set_service_methods", [41, 2.09, 1421, 3.672, 1528, 4.142]], ["qname/googleapiclient.discovery.Resource._set_service_methods", [1728, 11.376]], ["docstring/googleapiclient.discovery.Resource._set_service_methods", []], ["kind/googleapiclient.discovery.Resource._set_service_methods", [54, -1.049]], ["name/googleapiclient.discovery.Resource._add_basic_methods", [1729, 34.129]], ["names/googleapiclient.discovery.Resource._add_basic_methods", [160, 4.142, 428, 2.735, 1421, 3.672]], ["qname/googleapiclient.discovery.Resource._add_basic_methods", [1730, 11.376]], ["docstring/googleapiclient.discovery.Resource._add_basic_methods", []], ["kind/googleapiclient.discovery.Resource._add_basic_methods", [54, -1.049]], ["name/googleapiclient.discovery.Resource._add_nested_resources", [1731, 34.129]], ["names/googleapiclient.discovery.Resource._add_nested_resources", [428, 2.735, 1732, 4.55, 1733, 4.55]], ["qname/googleapiclient.discovery.Resource._add_nested_resources", [1734, 11.376]], ["docstring/googleapiclient.discovery.Resource._add_nested_resources", []], ["kind/googleapiclient.discovery.Resource._add_nested_resources", [54, -1.049]], ["name/googleapiclient.discovery.Resource._add_next_methods", [1735, 34.129]], ["names/googleapiclient.discovery.Resource._add_next_methods", [243, 3.263, 428, 2.735, 1421, 3.672]], ["qname/googleapiclient.discovery.Resource._add_next_methods", [1736, 11.376]], ["docstring/googleapiclient.discovery.Resource._add_next_methods", []], ["kind/googleapiclient.discovery.Resource._add_next_methods", [54, -1.049]], ["name/googleapiclient.discovery.Resource._validate_credentials", [1737, 34.129]], ["names/googleapiclient.discovery.Resource._validate_credentials", [272, 3.632, 1738, 5.521]], ["qname/googleapiclient.discovery.Resource._validate_credentials", [1739, 11.376]], ["docstring/googleapiclient.discovery.Resource._validate_credentials", [57, 1.161, 87, 5.898, 275, 3.296, 356, 2.596, 847, 2.772, 981, 3.937, 1199, 7.0, 1445, 7.0, 1740, 4.88, 1741, 4.88, 1742, 4.88, 1743, 7.021, 1744, 4.88]], ["kind/googleapiclient.discovery.Resource._validate_credentials", [54, -1.049]], ["name/googleapiclient.discovery._findPageTokenName", [1745, 34.129]], ["names/googleapiclient.discovery._findPageTokenName", [242, 2.546, 244, 2.986, 261, 1.757, 654, 3.123]], ["qname/googleapiclient.discovery._findPageTokenName", [1746, 11.376]], ["docstring/googleapiclient.discovery._findPageTokenName", [57, 1.133, 101, 3.31, 197, 4.795, 233, 1.397, 241, 4.335, 242, 3.133, 244, 3.674, 261, 3.682, 285, 1.209, 338, 3.535, 433, 2.495, 602, 3.31, 848, 3.535, 1269, 6.021, 1747, 4.762, 1748, 4.762]], ["kind/googleapiclient.discovery._findPageTokenName", [14, -2.096]], ["name/googleapiclient.discovery._methodProperties", [1749, 34.129]], ["names/googleapiclient.discovery._methodProperties", [54, 0.921, 1750, 5.521]], ["qname/googleapiclient.discovery._methodProperties", [1751, 11.376]], ["docstring/googleapiclient.discovery._methodProperties", [54, 1.139, 57, 0.687, 101, 2.007, 108, 2.207, 115, 2.263, 138, 2.227, 150, 2.222, 219, 2.896, 222, 2.422, 231, 4.27, 233, 0.847, 234, 4.49, 261, 3.098, 285, 0.733, 410, 1.735, 424, 3.993, 848, 2.143, 892, 1.899, 1068, 2.07, 1248, 1.853, 1269, 5.065, 1396, 2.329, 1654, 2.628, 1655, 4.27, 1669, 2.628]], ["kind/googleapiclient.discovery._methodProperties", [14, -2.096]], ["name/googleapiclient.discovery_cache.LOGGER", [309, 20.517]], ["names/googleapiclient.discovery_cache.LOGGER", [309, 4.218]], ["qname/googleapiclient.discovery_cache.LOGGER", [1752, 11.376]], ["docstring/googleapiclient.discovery_cache.LOGGER", []], ["kind/googleapiclient.discovery_cache.LOGGER", [315, -2.422]], ["name/googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE", [1753, 34.129]], ["names/googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE", [105, 2.614, 823, 2.69, 1418, 2.69, 1754, 3.294]], ["qname/googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE", [1755, 11.376]], ["docstring/googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE", []], ["kind/googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE", [315, -2.422]], ["name/googleapiclient.discovery_cache.DISCOVERY_DOC_DIR", [1756, 31.064]], ["names/googleapiclient.discovery_cache.DISCOVERY_DOC_DIR", [105, 3.074, 330, 4.142, 1418, 3.163]], ["qname/googleapiclient.discovery_cache.DISCOVERY_DOC_DIR", [1757, 11.376]], ["docstring/googleapiclient.discovery_cache.DISCOVERY_DOC_DIR", []], ["kind/googleapiclient.discovery_cache.DISCOVERY_DOC_DIR", [315, -2.422]], ["name/googleapiclient.discovery_cache.autodetect", [1758, 31.064]], ["names/googleapiclient.discovery_cache.autodetect", [1758, 6.387]], ["qname/googleapiclient.discovery_cache.autodetect", [1759, 11.376]], ["docstring/googleapiclient.discovery_cache.autodetect", [57, 1.833, 114, 4.852, 150, 2.509, 158, 4.491, 248, 4.491, 433, 2.916, 595, 4.737, 1180, 4.737, 1538, 5.066, 1760, 7.705]], ["kind/googleapiclient.discovery_cache.autodetect", [14, -2.096]], ["name/googleapiclient.discovery_cache.get_static_doc", [1761, 34.129]], ["names/googleapiclient.discovery_cache.get_static_doc", [45, 2.682, 1019, 3.377, 1418, 3.163]], ["qname/googleapiclient.discovery_cache.get_static_doc", [1762, 11.376]], ["docstring/googleapiclient.discovery_cache.get_static_doc", [57, 0.896, 84, 2.906, 108, 3.318, 115, 3.402, 135, 1.438, 143, 3.038, 159, 2.7, 201, 2.598, 233, 2.069, 261, 1.709, 262, 4.006, 285, 0.956, 424, 3.205, 433, 1.973, 602, 2.617, 610, 3.631, 662, 2.906, 848, 2.795, 1483, 4.927, 1756, 3.427, 1763, 3.427]], ["kind/googleapiclient.discovery_cache.get_static_doc", [14, -2.096]], ["name/googleapiclient.discovery_cache.base.Cache", [112, 41.033]], ["names/googleapiclient.discovery_cache.base.Cache", [112, 8.437]], ["qname/googleapiclient.discovery_cache.base.Cache", [1764, 22.752]], ["docstring/googleapiclient.discovery_cache.base.Cache", [21, 5.248, 26, 7.676, 114, 8.849, 123, 13.716]], ["kind/googleapiclient.discovery_cache.base.Cache", [21, -4.094]], ["name/googleapiclient.discovery_cache.base.Cache.get", [45, 20.116]], ["names/googleapiclient.discovery_cache.base.Cache.get", [45, 4.136]], ["qname/googleapiclient.discovery_cache.base.Cache.get", [1765, 11.376]], ["docstring/googleapiclient.discovery_cache.base.Cache.get", [45, 2.949, 50, 4.996, 57, 1.19, 67, 2.196, 114, 4.579, 121, 3.86, 135, 1.91, 150, 1.629, 227, 3.862, 233, 1.468, 285, 1.27, 407, 2.621, 433, 2.621]], ["kind/googleapiclient.discovery_cache.base.Cache.get", [54, -1.049]], ["name/googleapiclient.discovery_cache.base.Cache.set", [41, 15.674]], ["names/googleapiclient.discovery_cache.base.Cache.set", [41, 3.223]], ["qname/googleapiclient.discovery_cache.base.Cache.set", [1766, 11.376]], ["docstring/googleapiclient.discovery_cache.base.Cache.set", [41, 2.63, 50, 4.314, 108, 2.694, 114, 4.314, 115, 2.762, 135, 3.0, 227, 3.094, 233, 2.305, 285, 1.454, 407, 3.0]], ["kind/googleapiclient.discovery_cache.base.Cache.set", [54, -1.049]], ["name/googleapiclient.discovery_cache.appengine_memcache.LOGGER", [309, 20.517]], ["names/googleapiclient.discovery_cache.appengine_memcache.LOGGER", [309, 4.218]], ["qname/googleapiclient.discovery_cache.appengine_memcache.LOGGER", [1767, 11.376]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.LOGGER", []], ["kind/googleapiclient.discovery_cache.appengine_memcache.LOGGER", [315, -2.422]], ["name/googleapiclient.discovery_cache.appengine_memcache.NAMESPACE", [1768, 31.064]], ["names/googleapiclient.discovery_cache.appengine_memcache.NAMESPACE", [1768, 6.387]], ["qname/googleapiclient.discovery_cache.appengine_memcache.NAMESPACE", [1769, 11.376]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.NAMESPACE", []], ["kind/googleapiclient.discovery_cache.appengine_memcache.NAMESPACE", [315, -2.422]], ["name/googleapiclient.discovery_cache.appengine_memcache.Cache", [112, 41.033]], ["names/googleapiclient.discovery_cache.appengine_memcache.Cache", [112, 8.437]], ["qname/googleapiclient.discovery_cache.appengine_memcache.Cache", [1770, 20.709]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.Cache", [28, 7.47, 91, 10.188, 114, 8.503, 120, 11.104, 121, 11.949]], ["kind/googleapiclient.discovery_cache.appengine_memcache.Cache", [21, -4.094]], ["name/googleapiclient.discovery_cache.appengine_memcache.Cache.__init__", [441, 16.462]], ["names/googleapiclient.discovery_cache.appengine_memcache.Cache.__init__", [442, 3.301]], ["qname/googleapiclient.discovery_cache.appengine_memcache.Cache.__init__", [1771, 11.376]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.Cache.__init__", [114, 4.091, 187, 5.75, 258, 3.964, 285, 1.892, 570, 5.75, 1772, 6.782]], ["kind/googleapiclient.discovery_cache.appengine_memcache.Cache.__init__", [54, -1.049]], ["name/googleapiclient.discovery_cache.appengine_memcache.Cache._max_age", [1773, 31.064]], ["names/googleapiclient.discovery_cache.appengine_memcache.Cache._max_age", [823, 3.837, 1754, 4.698]], ["qname/googleapiclient.discovery_cache.appengine_memcache.Cache._max_age", [1774, 11.376]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.Cache._max_age", []], ["kind/googleapiclient.discovery_cache.appengine_memcache.Cache._max_age", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery_cache.appengine_memcache.Cache.get", [45, 20.116]], ["names/googleapiclient.discovery_cache.appengine_memcache.Cache.get", [45, 4.136]], ["qname/googleapiclient.discovery_cache.appengine_memcache.Cache.get", [1775, 11.376]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.Cache.get", [45, 2.949, 50, 4.996, 57, 1.19, 67, 2.196, 114, 4.579, 121, 3.86, 135, 1.91, 150, 1.629, 227, 3.862, 233, 1.468, 285, 1.27, 407, 2.621, 433, 2.621]], ["kind/googleapiclient.discovery_cache.appengine_memcache.Cache.get", [54, -1.049]], ["name/googleapiclient.discovery_cache.appengine_memcache.Cache.set", [41, 15.674]], ["names/googleapiclient.discovery_cache.appengine_memcache.Cache.set", [41, 3.223]], ["qname/googleapiclient.discovery_cache.appengine_memcache.Cache.set", [1776, 11.376]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.Cache.set", [41, 2.63, 50, 4.314, 108, 2.694, 114, 4.314, 115, 2.762, 135, 3.0, 227, 3.094, 233, 2.305, 285, 1.454, 407, 3.0]], ["kind/googleapiclient.discovery_cache.appengine_memcache.Cache.set", [54, -1.049]], ["name/googleapiclient.discovery_cache.appengine_memcache.cache", [112, 20.517]], ["names/googleapiclient.discovery_cache.appengine_memcache.cache", [112, 4.218]], ["qname/googleapiclient.discovery_cache.appengine_memcache.cache", [1770, 10.355]], ["docstring/googleapiclient.discovery_cache.appengine_memcache.cache", []], ["kind/googleapiclient.discovery_cache.appengine_memcache.cache", [268, -1.193]], ["name/googleapiclient.discovery_cache.file_cache.LOGGER", [309, 20.517]], ["names/googleapiclient.discovery_cache.file_cache.LOGGER", [309, 4.218]], ["qname/googleapiclient.discovery_cache.file_cache.LOGGER", [1777, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.LOGGER", []], ["kind/googleapiclient.discovery_cache.file_cache.LOGGER", [315, -2.422]], ["name/googleapiclient.discovery_cache.file_cache.FILENAME", [1012, 29.045]], ["names/googleapiclient.discovery_cache.file_cache.FILENAME", [1012, 5.972]], ["qname/googleapiclient.discovery_cache.file_cache.FILENAME", [1778, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.FILENAME", []], ["kind/googleapiclient.discovery_cache.file_cache.FILENAME", [315, -2.422]], ["name/googleapiclient.discovery_cache.file_cache.EPOCH", [516, 25.331]], ["names/googleapiclient.discovery_cache.file_cache.EPOCH", [516, 5.208]], ["qname/googleapiclient.discovery_cache.file_cache.EPOCH", [1779, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.EPOCH", []], ["kind/googleapiclient.discovery_cache.file_cache.EPOCH", [315, -2.422]], ["name/googleapiclient.discovery_cache.file_cache._to_timestamp", [1780, 34.129]], ["names/googleapiclient.discovery_cache.file_cache._to_timestamp", [942, 3.463, 1781, 5.521]], ["qname/googleapiclient.discovery_cache.file_cache._to_timestamp", [1782, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache._to_timestamp", []], ["kind/googleapiclient.discovery_cache.file_cache._to_timestamp", [14, -2.096]], ["name/googleapiclient.discovery_cache.file_cache._read_or_initialize_cache", [1783, 34.129]], ["names/googleapiclient.discovery_cache.file_cache._read_or_initialize_cache", [112, 2.327, 472, 3.523, 931, 2.69, 1784, 3.87]], ["qname/googleapiclient.discovery_cache.file_cache._read_or_initialize_cache", [1785, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache._read_or_initialize_cache", []], ["kind/googleapiclient.discovery_cache.file_cache._read_or_initialize_cache", [14, -2.096]], ["name/googleapiclient.discovery_cache.file_cache.Cache", [112, 41.033]], ["names/googleapiclient.discovery_cache.file_cache.Cache", [112, 8.437]], ["qname/googleapiclient.discovery_cache.file_cache.Cache", [1786, 20.709]], ["docstring/googleapiclient.discovery_cache.file_cache.Cache", [26, 7.376, 108, 7.285, 114, 8.503, 115, 7.47, 125, 7.773]], ["kind/googleapiclient.discovery_cache.file_cache.Cache", [21, -4.094]], ["name/googleapiclient.discovery_cache.file_cache.Cache.__init__", [441, 16.462]], ["names/googleapiclient.discovery_cache.file_cache.Cache.__init__", [442, 3.301]], ["qname/googleapiclient.discovery_cache.file_cache.Cache.__init__", [1787, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.Cache.__init__", [114, 4.091, 187, 5.75, 258, 3.964, 285, 1.892, 570, 5.75, 1772, 6.782]], ["kind/googleapiclient.discovery_cache.file_cache.Cache.__init__", [54, -1.049]], ["name/googleapiclient.discovery_cache.file_cache.Cache._max_age", [1773, 31.064]], ["names/googleapiclient.discovery_cache.file_cache.Cache._max_age", [823, 3.837, 1754, 4.698]], ["qname/googleapiclient.discovery_cache.file_cache.Cache._max_age", [1788, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.Cache._max_age", []], ["kind/googleapiclient.discovery_cache.file_cache.Cache._max_age", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery_cache.file_cache.Cache._file", [1789, 34.129]], ["names/googleapiclient.discovery_cache.file_cache.Cache._file", [125, 3.522]], ["qname/googleapiclient.discovery_cache.file_cache.Cache._file", [1790, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.Cache._file", []], ["kind/googleapiclient.discovery_cache.file_cache.Cache._file", [268, -0.886, 445, -1.11]], ["name/googleapiclient.discovery_cache.file_cache.Cache.get", [45, 20.116]], ["names/googleapiclient.discovery_cache.file_cache.Cache.get", [45, 4.136]], ["qname/googleapiclient.discovery_cache.file_cache.Cache.get", [1791, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.Cache.get", [45, 2.949, 50, 4.996, 57, 1.19, 67, 2.196, 114, 4.579, 121, 3.86, 135, 1.91, 150, 1.629, 227, 3.862, 233, 1.468, 285, 1.27, 407, 2.621, 433, 2.621]], ["kind/googleapiclient.discovery_cache.file_cache.Cache.get", [54, -1.049]], ["name/googleapiclient.discovery_cache.file_cache.Cache.set", [41, 15.674]], ["names/googleapiclient.discovery_cache.file_cache.Cache.set", [41, 3.223]], ["qname/googleapiclient.discovery_cache.file_cache.Cache.set", [1792, 11.376]], ["docstring/googleapiclient.discovery_cache.file_cache.Cache.set", [41, 2.63, 50, 4.314, 108, 2.694, 114, 4.314, 115, 2.762, 135, 3.0, 227, 3.094, 233, 2.305, 285, 1.454, 407, 3.0]], ["kind/googleapiclient.discovery_cache.file_cache.Cache.set", [54, -1.049]], ["name/googleapiclient.discovery_cache.file_cache.cache", [112, 20.517]], ["names/googleapiclient.discovery_cache.file_cache.cache", [112, 4.218]], ["qname/googleapiclient.discovery_cache.file_cache.cache", [1786, 10.355]], ["docstring/googleapiclient.discovery_cache.file_cache.cache", []], ["kind/googleapiclient.discovery_cache.file_cache.cache", [268, -1.193]], ["name/googleapiclient.sample_tools.__author__", [434, 24.472]], ["names/googleapiclient.sample_tools.__author__", [295, 4.877]], ["qname/googleapiclient.sample_tools.__author__", [1793, 11.376]], ["docstring/googleapiclient.sample_tools.__author__", []], ["kind/googleapiclient.sample_tools.__author__", [268, -1.193]], ["name/googleapiclient.sample_tools.init", [442, 16.055]], ["names/googleapiclient.sample_tools.init", [442, 3.301]], ["qname/googleapiclient.sample_tools.init", [1794, 11.376]], ["docstring/googleapiclient.sample_tools.init", [7, 1.512, 14, 0.954, 28, 1.857, 36, 1.988, 41, 1.314, 46, 1.47, 57, 0.384, 68, 1.47, 85, 0.952, 108, 1.346, 125, 2.673, 131, 2.123, 137, 2.308, 148, 3.505, 150, 0.526, 163, 1.522, 183, 0.76, 201, 0.725, 214, 3.505, 215, 1.47, 218, 3.819, 233, 1.869, 234, 1.062, 248, 1.303, 261, 2.417, 262, 1.625, 275, 1.091, 283, 2.604, 285, 0.41, 407, 0.846, 537, 2.207, 573, 1.246, 610, 2.415, 636, 1.091, 662, 1.246, 938, 1.246, 979, 1.246, 1007, 1.374, 1135, 4.239, 1341, 1.47, 1389, 2.971, 1418, 1.988, 1596, 1.47, 1763, 1.47, 1795, 2.861, 1796, 1.615, 1797, 1.615, 1798, 1.615, 1799, 1.615, 1800, 1.615, 1801, 1.615, 1802, 1.615, 1803, 1.615, 1804, 1.615, 1805, 1.615, 1806, 1.615, 1807, 1.615]], ["kind/googleapiclient.sample_tools.init", [14, -2.096]]], "invertedIndex": [["\"\"\"{", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 228}], ["\"calendar#acl\"", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 240}], ["\"googleapis.com\".", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1671}], ["\"tag:google.c...'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1253}], ["#", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.schema": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 42}], ["%", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1039}], ["'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1476}], ["'$'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1470}], ["''),", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1298}], ["'*',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 645}], ["'0.5'})", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 640}], ["'application/*;q=0.5'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 644}], ["'application/octet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 1028}], ["'application/xhtml;q=0.5'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_mime_type": {}}, "kind": {}, "_index": 638}], ["'channel.id'.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 51}], ["'plus.activities.get':", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1255}], ["'text/*;q=0.5,*/*;", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 684}], ["'text/xml'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 686}], ["'text/xml'],", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 683}], ["'{\"access_token\":\"1/3w\",\"expires_in\":3600}'),", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1299}], ["(", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}}, "kind": {}, "_index": 659}], ["('calendar#acl').", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 257}], ["('calendar#acl').\",", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 238}], ["(httplib2.response,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 1249}], ["(io.base,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice.__init__": {}}, "kind": {}, "_index": 1086}], ["(sequence[str]):", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}}, "kind": {}, "_index": 289}], [")", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1256}], ["*", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1041}], ["*,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 349}], ["*/*;q=0.5')", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality": {}}, "kind": {}, "_index": 673}], ["...", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 58}], ["/", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._urljoin": {}}, "kind": {}, "_index": 1610}], ["0", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}}, "kind": {}, "_index": 661}], ["0.0", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}}, "kind": {}, "_index": 882}], ["0.7", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality": {}}, "kind": {}, "_index": 674}], ["03", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._cast": {}}, "kind": {}, "_index": 1559}], ["03#section", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1621}], ["0l", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1592}], ["1", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 660}], ["1.0,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1342}], ["100", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1042}], ["10gb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_size_to_long": {}}, "kind": {}, "_index": 1564}], ["14.1", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 168}], ["2", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1503}], ["2.6", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 915}], ["200", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1251}], ["204", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}}, "kind": {}, "_index": 725}], ["2616", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 170}], ["2mb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_size_to_long": {}}, "kind": {}, "_index": 1567}], ["2xx", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}}, "kind": {}, "_index": 718}], ["3", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 342}], ["308", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest._process_response": {}}, "kind": {}, "_index": 1143}], ["3tb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_size_to_long": {}}, "kind": {}, "_index": 1565}], ["401", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1297}], ["5.1", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1622}], ["5mb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}}, "kind": {}, "_index": 971}], ["5xx", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 854}], ["7gb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_size_to_long": {}}, "kind": {}, "_index": 1568}], [":", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._urljoin": {}}, "kind": {}, "_index": 1609}], ["=", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.schema": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 48}], ["==", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 96}], [">", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.key2param": {}}, "kind": {}, "_index": 1479}], [">>>", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 668}], ["@positional(0)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 364}], ["@positional(1)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 361}], ["@positional(2)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 375}], ["])", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1301}], ["^^^^^^^", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 359}], ["_", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1474}], ["__author__", {"name": {"googleapiclient.errors.__author__": {}, "googleapiclient.discovery.__author__": {}, "googleapiclient.mimeparse.__author__": {}, "googleapiclient.http.__author__": {}, "googleapiclient.model.__author__": {}, "googleapiclient.schema.__author__": {}, "googleapiclient.sample_tools.__author__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 434}], ["__call__", {"name": {"googleapiclient.http.RequestMockBuilder.__call__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1274}], ["__credits__", {"name": {"googleapiclient.mimeparse.__credits__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 630}], ["__del__", {"name": {"googleapiclient.http.MediaFileUpload.__del__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1014}], ["__doc__", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1803}], ["__email__", {"name": {"googleapiclient.mimeparse.__email__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 624}], ["__enter__", {"name": {"googleapiclient.discovery.Resource.__enter__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1720}], ["__exit__", {"name": {"googleapiclient.discovery.Resource.__exit__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1723}], ["__file__", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1804}], ["__getstate__", {"name": {"googleapiclient.discovery.Resource.__getstate__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1706}], ["__init__", {"name": {"googleapiclient.errors.HttpError.__init__": {}, "googleapiclient.errors.BatchError.__init__": {}, "googleapiclient.errors.UnexpectedMethodError.__init__": {}, "googleapiclient.errors.UnexpectedBodyError.__init__": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.HttpMockSequence.__init__": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.discovery.APICoreVersionError.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 441}], ["__license__", {"name": {"googleapiclient.mimeparse.__license__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 627}], ["__repr__", {"name": {"googleapiclient.errors.HttpError.__repr__": {}, "googleapiclient.errors.BatchError.__repr__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 461}], ["__setstate__", {"name": {"googleapiclient.discovery.Resource.__setstate__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1716}], ["__version__", {"name": {"googleapiclient.mimeparse.__version__": {}, "googleapiclient.version.__version__": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 621}], ["_abstract", {"name": {"googleapiclient.model._abstract": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 702}], ["_add_basic_methods", {"name": {"googleapiclient.discovery.Resource._add_basic_methods": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1729}], ["_add_nested_resources", {"name": {"googleapiclient.discovery.Resource._add_nested_resources": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1731}], ["_add_next_methods", {"name": {"googleapiclient.discovery.Resource._add_next_methods": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1735}], ["_add_query_parameter", {"name": {"googleapiclient._helpers._add_query_parameter": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 427}], ["_auth", {"name": {"googleapiclient._auth": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 2}], ["_base_id", {"name": {"googleapiclient.http.BatchHttpRequest._base_id": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1182}], ["_baseurl", {"name": {"googleapiclient.discovery.Resource._baseUrl": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1678}], ["_batch_uri", {"name": {"googleapiclient.http.BatchHttpRequest._batch_uri": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1169}], ["_begin", {"name": {"googleapiclient.http._StreamSlice._begin": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1089}], ["_build_query", {"name": {"googleapiclient.model.BaseModel._build_query": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 740}], ["_bytesgenerator", {"name": {"googleapiclient.discovery._BytesGenerator": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1463}], ["_callback", {"name": {"googleapiclient.http.BatchHttpRequest._callback": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1171}], ["_callbacks", {"name": {"googleapiclient.http.BatchHttpRequest._callbacks": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1175}], ["_cast", {"name": {"googleapiclient.discovery._cast": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1554}], ["_check_api_core_compatible_with_credentials_universe", {"name": {"googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1541}], ["_chunksize", {"name": {"googleapiclient.http.MediaIoBaseUpload._chunksize": {}, "googleapiclient.http.MediaIoBaseDownload._chunksize": {}, "googleapiclient.http._StreamSlice._chunksize": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 986}], ["_credentials_validated", {"name": {"googleapiclient.discovery.Resource._credentials_validated": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1697}], ["_data_wrapper", {"name": {"googleapiclient.model.JsonModel._data_wrapper": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 762}], ["_deserialize_response", {"name": {"googleapiclient.http.BatchHttpRequest._deserialize_response": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1209}], ["_developerkey", {"name": {"googleapiclient.discovery.Resource._developerKey": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1682}], ["_discovery_service_uri_options", {"name": {"googleapiclient.discovery._discovery_service_uri_options": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1527}], ["_done", {"name": {"googleapiclient.http.MediaIoBaseDownload._done": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1055}], ["_dynamic_attr", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1713}], ["_dynamic_attrs", {"name": {"googleapiclient.discovery.Resource._dynamic_attrs": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1672}], ["_execute", {"name": {"googleapiclient.http.BatchHttpRequest._execute": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1227}], ["_fd", {"name": {"googleapiclient.http.MediaIoBaseUpload._fd": {}, "googleapiclient.http.MediaFileUpload._fd": {}, "googleapiclient.http.MediaIoBaseDownload._fd": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 982}], ["_file", {"name": {"googleapiclient.discovery_cache.file_cache.Cache._file": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1789}], ["_filename", {"name": {"googleapiclient.http.MediaFileUpload._filename": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1011}], ["_filter_blank", {"name": {"googleapiclient.mimeparse._filter_blank": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 687}], ["_findpagetokenname", {"name": {"googleapiclient.discovery._findPageTokenName": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1745}], ["_fix_up_media_path_base_url", {"name": {"googleapiclient.discovery._fix_up_media_path_base_url": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1599}], ["_fix_up_media_upload", {"name": {"googleapiclient.discovery._fix_up_media_upload": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1585}], ["_fix_up_method_description", {"name": {"googleapiclient.discovery._fix_up_method_description": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1593}], ["_fix_up_parameters", {"name": {"googleapiclient.discovery._fix_up_parameters": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1576}], ["_get_reason", {"name": {"googleapiclient.errors.HttpError._get_reason": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 458}], ["_header_to_id", {"name": {"googleapiclient.http.BatchHttpRequest._header_to_id": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1200}], ["_headers", {"name": {"googleapiclient.http.MediaIoBaseDownload._headers": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1061}], ["_helpers", {"name": {"googleapiclient._helpers": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 11}], ["_helpers.positional_parameters_enforc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 399}], ["_http", {"name": {"googleapiclient.discovery.Resource._http": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1676}], ["_id_to_head", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._header_to_id": {}}, "kind": {}, "_index": 1203}], ["_id_to_header", {"name": {"googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1194}], ["_in_error_state", {"name": {"googleapiclient.http.HttpRequest._in_error_state": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1114}], ["_is_dir_message", {"name": {"googleapiclient._helpers._IS_DIR_MESSAGE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 329}], ["_iterable", {"name": {"googleapiclient.http.HttpMockSequence._iterable": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1313}], ["_last_auto_id", {"name": {"googleapiclient.http.BatchHttpRequest._last_auto_id": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1179}], ["_legacy_batch_uri", {"name": {"googleapiclient.http._LEGACY_BATCH_URI": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 837}], ["_log_request", {"name": {"googleapiclient.model.BaseModel._log_request": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 736}], ["_log_response", {"name": {"googleapiclient.model.BaseModel._log_response": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 743}], ["_max_age", {"name": {"googleapiclient.discovery_cache.appengine_memcache.Cache._max_age": {}, "googleapiclient.discovery_cache.file_cache.Cache._max_age": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1773}], ["_media_path_url_from_info", {"name": {"googleapiclient.discovery._media_path_url_from_info": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1569}], ["_media_size_bit_shifts", {"name": {"googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1423}], ["_media_size_to_long", {"name": {"googleapiclient.discovery._media_size_to_long": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1562}], ["_methodproperties", {"name": {"googleapiclient.discovery._methodProperties": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1749}], ["_mimetype", {"name": {"googleapiclient.http.MediaIoBaseUpload._mimetype": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 984}], ["_missing_file_message", {"name": {"googleapiclient._helpers._MISSING_FILE_MESSAGE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 332}], ["_model", {"name": {"googleapiclient.discovery.Resource._model": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1680}], ["_new_id", {"name": {"googleapiclient.http.BatchHttpRequest._new_id": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1214}], ["_next", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1659}], ["_order", {"name": {"googleapiclient.http.BatchHttpRequest._order": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1177}], ["_page_token_names", {"name": {"googleapiclient.discovery._PAGE_TOKEN_NAMES": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1433}], ["_prettyprintbyname", {"name": {"googleapiclient.schema.Schemas._prettyPrintByName": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1357}], ["_prettyprintschema", {"name": {"googleapiclient.schema.Schemas._prettyPrintSchema": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1366}], ["_process_response", {"name": {"googleapiclient.http.HttpRequest._process_response": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1141}], ["_progress", {"name": {"googleapiclient.http.MediaIoBaseDownload._progress": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1051}], ["_protocol_buffer", {"name": {"googleapiclient.model.ProtocolBufferModel._protocol_buffer": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 794}], ["_py_version", {"name": {"googleapiclient.model._PY_VERSION": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 694}], ["_rand", {"name": {"googleapiclient.http.MediaIoBaseDownload._rand": {}, "googleapiclient.http.HttpRequest._rand": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1059}], ["_read_or_initialize_cache", {"name": {"googleapiclient.discovery_cache.file_cache._read_or_initialize_cache": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1783}], ["_refresh_and_apply_credentials", {"name": {"googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1190}], ["_refreshed_credentials", {"name": {"googleapiclient.http.BatchHttpRequest._refreshed_credentials": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1187}], ["_request", {"name": {"googleapiclient.http.MediaIoBaseDownload._request": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1046}], ["_requestbuilder", {"name": {"googleapiclient.discovery.Resource._requestBuilder": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1686}], ["_requests", {"name": {"googleapiclient.http.BatchHttpRequest._requests": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1173}], ["_resourcedesc", {"name": {"googleapiclient.discovery.Resource._resourceDesc": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1688}], ["_responses", {"name": {"googleapiclient.http.BatchHttpRequest._responses": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1184}], ["_resumable", {"name": {"googleapiclient.http.MediaIoBaseUpload._resumable": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 988}], ["_retrieve_discovery_doc", {"name": {"googleapiclient.discovery._retrieve_discovery_doc": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1533}], ["_retry_request", {"name": {"googleapiclient.http._retry_request": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 850}], ["_rootdesc", {"name": {"googleapiclient.discovery.Resource._rootDesc": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1691}], ["_schema", {"name": {"googleapiclient.discovery.Resource._schema": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1693}], ["_schematostruct", {"name": {"googleapiclient.schema._SchemaToStruct": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1371}], ["_serialize_request", {"name": {"googleapiclient.http.BatchHttpRequest._serialize_request": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1206}], ["_set_dynamic_attr", {"name": {"googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1700}], ["_set_service_methods", {"name": {"googleapiclient.discovery.Resource._set_service_methods": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1727}], ["_should_retry_response", {"name": {"googleapiclient.http._should_retry_response": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 840}], ["_size", {"name": {"googleapiclient.http.MediaIoBaseUpload._size": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 990}], ["_sleep", {"name": {"googleapiclient.http.MediaIoBaseDownload._sleep": {}, "googleapiclient.http.HttpRequest._sleep": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1057}], ["_stream", {"name": {"googleapiclient.http._StreamSlice._stream": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1087}], ["_streamslice", {"name": {"googleapiclient.http._StreamSlice": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1075}], ["_sym_link_message", {"name": {"googleapiclient._helpers._SYM_LINK_MESSAGE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 324}], ["_to_json", {"name": {"googleapiclient.http.MediaUpload._to_json": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 941}], ["_to_str_impl", {"name": {"googleapiclient.schema._SchemaToStruct._to_str_impl": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1400}], ["_to_timestamp", {"name": {"googleapiclient.discovery_cache.file_cache._to_timestamp": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1780}], ["_too_many_requests", {"name": {"googleapiclient.http._TOO_MANY_REQUESTS": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 828}], ["_total_size", {"name": {"googleapiclient.http.MediaIoBaseDownload._total_size": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1053}], ["_universe_domain", {"name": {"googleapiclient.discovery.Resource._universe_domain": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1695}], ["_upper_header_keys", {"name": {"googleapiclient.channel._upper_header_keys": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 533}], ["_uri", {"name": {"googleapiclient.http.MediaIoBaseDownload._uri": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1048}], ["_urljoin", {"name": {"googleapiclient.discovery._urljoin": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1606}], ["_validate_credentials", {"name": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1737}], ["``*``", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 352}], ["``_helpers.positional_parameters_enforcement``,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 383}], ["abov", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 360}], ["absolut", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1100}], ["abstract", {"name": {}, "names": {"googleapiclient.model._abstract": {}}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.base": {}, "googleapiclient.discovery_cache.base.Cache": {}}, "kind": {}, "_index": 123}], ["accept", {"name": {"googleapiclient.model.BaseModel.accept": {}, "googleapiclient.model.JsonModel.accept": {}, "googleapiclient.model.RawModel.accept": {}, "googleapiclient.model.MediaModel.accept": {}, "googleapiclient.model.ProtocolBufferModel.accept": {}}, "names": {"googleapiclient.model.BaseModel.accept": {}, "googleapiclient.model.JsonModel.accept": {}, "googleapiclient.model.RawModel.accept": {}, "googleapiclient.model.MediaModel.accept": {}, "googleapiclient.model.ProtocolBufferModel.accept": {}}, "qname": {}, "docstring": {"googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 485}], ["access", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.schema": {}, "googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 134}], ["account", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 371}], ["act", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1325}], ["actual", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}}, "kind": {}, "_index": 152}], ["ad", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}}, "kind": {}, "_index": 426}], ["adc_cert_path", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1509}], ["adc_key_path", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1514}], ["add", {"name": {"googleapiclient.http.BatchHttpRequest.add": {}}, "names": {"googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.discovery.Resource._add_basic_methods": {}, "googleapiclient.discovery.Resource._add_nested_resources": {}, "googleapiclient.discovery.Resource._add_next_methods": {}}, "qname": {}, "docstring": {"googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}}, "kind": {}, "_index": 428}], ["add_response_callback", {"name": {"googleapiclient.http.HttpRequest.add_response_callback": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1125}], ["add_response_headers_callback", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.add_response_callback": {}}, "kind": {}, "_index": 1128}], ["addit", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 573}], ["address", {"name": {"googleapiclient.channel.Channel.address": {}}, "names": {"googleapiclient.channel.Channel.address": {}}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 547}], ["against", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}}, "kind": {}, "_index": 162}], ["age", {"name": {}, "names": {"googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache._max_age": {}, "googleapiclient.discovery_cache.file_cache.Cache._max_age": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1754}], ["agent", {"name": {}, "names": {"googleapiclient.http.set_user_agent": {}}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 1323}], ["ahead", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}}, "kind": {}, "_index": 874}], ["allow", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 805}], ["alreadi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 432}], ["alt", {"name": {}, "names": {"googleapiclient.model.BaseModel.alt_param": {}, "googleapiclient.model.JsonModel.alt_param": {}, "googleapiclient.model.RawModel.alt_param": {}, "googleapiclient.model.MediaModel.alt_param": {}, "googleapiclient.model.ProtocolBufferModel.alt_param": {}}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}}, "kind": {}, "_index": 728}], ["alt_param", {"name": {"googleapiclient.model.BaseModel.alt_param": {}, "googleapiclient.model.JsonModel.alt_param": {}, "googleapiclient.model.RawModel.alt_param": {}, "googleapiclient.model.MediaModel.alt_param": {}, "googleapiclient.model.ProtocolBufferModel.alt_param": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}}, "kind": {}, "_index": 726}], ["alwai", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 81}], ["always_use_jwt_access", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1520}], ["amongst", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}}, "kind": {}, "_index": 656}], ["and", {"name": {}, "names": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 650}], ["anim", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1155}], ["api", {"name": {}, "names": {"googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}, "googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}, "googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.discovery": {}, "googleapiclient.model": {}, "googleapiclient.schema": {}, "googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.schema.Schemas": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 28}], ["apicore", {"name": {}, "names": {"googleapiclient.discovery.APICoreVersionError": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1456}], ["apicoreversionerror", {"name": {"googleapiclient.discovery.APICoreVersionError": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1455}], ["apinam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1798}], ["apiname.dat,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1799}], ["apivers", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1491}], ["app", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}}, "kind": {}, "_index": 91}], ["appear", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 710}], ["append", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1475}], ["appengine", {"name": {}, "names": {"googleapiclient.discovery_cache.appengine_memcache": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 117}], ["appengine_memcache", {"name": {"googleapiclient.discovery_cache.appengine_memcache": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 116}], ["appli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1192}], ["applic", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools": {}, "googleapiclient._auth.default_credentials": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 218}], ["application/http", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._serialize_request": {}}, "kind": {}, "_index": 1208}], ["apply", {"name": {}, "names": {"googleapiclient._auth.apply_credentials": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 302}], ["apply_credentials", {"name": {"googleapiclient._auth.apply_credentials": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 301}], ["appropri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.body": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.discovery_cache.autodetect": {}}, "kind": {}, "_index": 595}], ["arbitrari", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 564}], ["aren't", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 79}], ["arg", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient._helpers.positional": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.HttpMockSequence.__init__": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 285}], ["argmap", {"name": {"googleapiclient.discovery.ResourceMethodParameters.argmap": {}}, "names": {"googleapiclient.discovery.ResourceMethodParameters.argmap": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1613}], ["argparse.argumentparser,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1806}], ["argument", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 339}], ["argv", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1802}], ["arrai", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 945}], ["arriv", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 56}], ["associ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 565}], ["atom", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}}, "kind": {}, "_index": 202}], ["attach", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1652}], ["attempt", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery._discovery_service_uri_options": {}}, "kind": {}, "_index": 1070}], ["attr", {"name": {}, "names": {"googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1701}], ["attr_nam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "kind": {}, "_index": 1705}], ["attribut", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "kind": {}, "_index": 541}], ["attrs", {"name": {}, "names": {"googleapiclient.discovery.Resource._dynamic_attrs": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1674}], ["auth", {"name": {}, "names": {"googleapiclient._auth": {}, "googleapiclient._auth.HAS_GOOGLE_AUTH": {}}, "qname": {}, "docstring": {"googleapiclient._auth": {}, "googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 3}], ["authent", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 6}], ["author", {"name": {}, "names": {"googleapiclient.errors.__author__": {}, "googleapiclient.discovery.__author__": {}, "googleapiclient.mimeparse.__author__": {}, "googleapiclient.http.__author__": {}, "googleapiclient.model.__author__": {}, "googleapiclient.schema.__author__": {}, "googleapiclient.sample_tools.__author__": {}}, "qname": {}, "docstring": {"googleapiclient._auth.authorized_http": {}}, "kind": {}, "_index": 295}], ["authorized", {"name": {}, "names": {"googleapiclient._auth.authorized_http": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 293}], ["authorized_http", {"name": {"googleapiclient._auth.authorized_http": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 292}], ["auto", {"name": {}, "names": {"googleapiclient.http.BatchHttpRequest._last_auto_id": {}}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.discovery_cache.autodetect": {}}, "kind": {}, "_index": 1180}], ["autodetect", {"name": {"googleapiclient.discovery_cache.autodetect": {}}, "names": {"googleapiclient.discovery_cache.autodetect": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1758}], ["avail", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery_cache.autodetect": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 248}], ["avoid", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 969}], ["back", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1220}], ["backoff", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1067}], ["bahav", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality_parsed": {}}, "kind": {}, "_index": 666}], ["base", {"name": {"googleapiclient.discovery_cache.base": {}}, "names": {"googleapiclient.discovery_cache.base": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.BatchHttpRequest._base_id": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.Resource._baseUrl": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.discovery": {}, "googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.schema": {}, "googleapiclient.errors.Error": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery_cache.base.Cache": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}}, "kind": {}, "_index": 26}], ["base_url", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1605}], ["basemodel", {"name": {"googleapiclient.model.BaseModel": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 719}], ["baseurl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1665}], ["basic", {"name": {}, "names": {"googleapiclient.discovery.Resource._add_basic_methods": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 160}], ["batch", {"name": {}, "names": {"googleapiclient.errors.BatchError": {}, "googleapiclient.http.MAX_BATCH_LIMIT": {}, "googleapiclient.http._LEGACY_BATCH_URI": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest._batch_uri": {}}, "qname": {}, "docstring": {"googleapiclient.errors.BatchError": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 499}], ["batch.add(service.animals().list(),", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1160}], ["batch.add(service.farmers().list(),", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1162}], ["batch.execute(http=http)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1164}], ["batch_uri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.__init__": {}}, "kind": {}, "_index": 1168}], ["batcherror", {"name": {"googleapiclient.errors.BatchError": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 498}], ["batchhttprequest", {"name": {"googleapiclient.http.BatchHttpRequest": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}}, "kind": {}, "_index": 1151}], ["be", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 64}], ["becom", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 362}], ["befor", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery._urljoin": {}}, "kind": {}, "_index": 52}], ["begin", {"name": {}, "names": {"googleapiclient.http._StreamSlice._begin": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http._StreamSlice.__init__": {}}, "kind": {}, "_index": 929}], ["behavior", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.HttpRequestMock.execute": {}}, "kind": {}, "_index": 381}], ["behavour", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1305}], ["best", {"name": {}, "names": {"googleapiclient.mimeparse.best_match": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 655}], ["best_match", {"name": {"googleapiclient.mimeparse.best_match": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 189}], ["best_match(['application/xbel+xml',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 682}], ["between", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.model": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 37}], ["binari", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.ProtocolBufferModel": {}}, "kind": {}, "_index": 788}], ["bit", {"name": {}, "names": {"googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1424}], ["blank", {"name": {}, "names": {"googleapiclient.mimeparse._filter_blank": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 689}], ["blindli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 1082}], ["block", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}}, "kind": {}, "_index": 977}], ["bodi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http.MediaUpload.mimetype": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.HttpMockSequence.__init__": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 514}], ["body", {"name": {"googleapiclient.channel.Channel.body": {}, "googleapiclient.http.HttpRequest.body": {}, "googleapiclient.http.HttpMock.body": {}}, "names": {"googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.http.HttpRequest.body": {}, "googleapiclient.http.HttpRequest.body_size": {}, "googleapiclient.http.HttpMock.body": {}, "googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 512}], ["body=channel.body()).execute()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 62}], ["body=makepatch(original,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 817}], ["body_parameter_default_value", {"name": {"googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1427}], ["body_size", {"name": {"googleapiclient.http.HttpRequest.body_size": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1116}], ["body_valu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}}, "kind": {}, "_index": 713}], ["bool", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 981}], ["boolean", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 759}], ["bucket=\"some_bucket_id\",", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 61}], ["buffer", {"name": {}, "names": {"googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel._protocol_buffer": {}}, "qname": {}, "docstring": {"googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}}, "kind": {}, "_index": 786}], ["build", {"name": {"googleapiclient.discovery.build": {}}, "names": {"googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.body": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 594}], ["build('farm',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1158}], ["build_from_document", {"name": {"googleapiclient.discovery.build_from_document": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1545}], ["build_http", {"name": {"googleapiclient.http.build_http": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1343}], ["builder", {"name": {}, "names": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery.Resource._requestBuilder": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1245}], ["by", {"name": {}, "names": {"googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1358}], ["byte", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 771}], ["bytes", {"name": {}, "names": {"googleapiclient.discovery._BytesGenerator": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1464}], ["bytesio('...som", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}}, "kind": {}, "_index": 957}], ["cach", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache": {}, "googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.discovery_cache.base": {}, "googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery_cache.autodetect": {}, "googleapiclient.discovery_cache.base.Cache": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "kind": {}, "_index": 114}], ["cache", {"name": {"googleapiclient.discovery_cache.base.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.cache": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}, "googleapiclient.discovery_cache.file_cache.cache": {}}, "names": {"googleapiclient.discovery_cache": {}, "googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.schema._SchemaToStruct.from_cache": {}, "googleapiclient.discovery_cache.base.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.cache": {}, "googleapiclient.discovery_cache.file_cache._read_or_initialize_cache": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}, "googleapiclient.discovery_cache.file_cache.cache": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 112}], ["cache_discoveri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1497}], ["calcul", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.HttpError._get_reason": {}}, "kind": {}, "_index": 460}], ["call", {"name": {}, "names": {"googleapiclient.http.RequestMockBuilder.__call__": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 38}], ["callabl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1098}], ["callable(name,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1406}], ["callback", {"name": {}, "names": {"googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.BatchHttpRequest._callback": {}}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1126}], ["callback(id,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1166}], ["callbacks", {"name": {}, "names": {"googleapiclient.http.HttpRequest.response_callbacks": {}, "googleapiclient.http.BatchHttpRequest._callbacks": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1112}], ["caller", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 39}], ["can't", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.notification_from_headers": {}, "googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 605}], ["candid", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 192}], ["canonic", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 577}], ["capabl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1552}], ["card", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 180}], ["carv", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 635}], ["case", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 76}], ["cast", {"name": {}, "names": {"googleapiclient.discovery._cast": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1555}], ["cb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.add_response_callback": {}}, "kind": {}, "_index": 1129}], ["cb(resp):", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.add_response_callback": {}}, "kind": {}, "_index": 1131}], ["cert", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1505}], ["certain", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 904}], ["certif", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1510}], ["certificate", {"name": {}, "names": {"googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1438}], ["chang", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 30}], ["channel", {"name": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel": {}}, "names": {"googleapiclient.channel": {}, "googleapiclient.channel.CHANNEL_PARAMS": {}, "googleapiclient.channel.X_GOOG_CHANNEL_ID": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.new_webhook_channel": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.errors.InvalidNotificationError": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 17}], ["channel.update(resp)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 63}], ["channel_params", {"name": {"googleapiclient.channel.CHANNEL_PARAMS": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 518}], ["charact", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1471}], ["check", {"name": {}, "names": {"googleapiclient.http.RequestMockBuilder.check_unexpected": {}, "googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 614}], ["check_unexpect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 1261}], ["check_unexpected", {"name": {"googleapiclient.http.RequestMockBuilder.check_unexpected": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1272}], ["choos", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 190}], ["chunk", {"name": {}, "names": {"googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.http.DEFAULT_CHUNK_SIZE": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http.HttpRequest._process_response": {}}, "kind": {}, "_index": 492}], ["chunksiz", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}}, "kind": {}, "_index": 494}], ["chunksize", {"name": {"googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}}, "names": {"googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload._chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseDownload._chunksize": {}, "googleapiclient.http._StreamSlice._chunksize": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 921}], ["chunksize=1000,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1136}], ["chunksize=1024*1024)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}}, "kind": {}, "_index": 1035}], ["chunksize=1024*1024,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 960}], ["cl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 373}], ["class", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.discovery_cache.base": {}, "googleapiclient.http": {}, "googleapiclient.model": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery_cache.base.Cache": {}}, "kind": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.accept": {}, "googleapiclient.model.BaseModel.content_type": {}, "googleapiclient.model.BaseModel.no_content_response": {}, "googleapiclient.model.BaseModel.alt_param": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.accept": {}, "googleapiclient.model.JsonModel.content_type": {}, "googleapiclient.model.JsonModel.alt_param": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.accept": {}, "googleapiclient.model.RawModel.content_type": {}, "googleapiclient.model.RawModel.alt_param": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.accept": {}, "googleapiclient.model.MediaModel.content_type": {}, "googleapiclient.model.MediaModel.alt_param": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.accept": {}, "googleapiclient.model.ProtocolBufferModel.content_type": {}, "googleapiclient.model.ProtocolBufferModel.alt_param": {}, "googleapiclient.http.MediaUploadProgress": {}, "googleapiclient.http.MediaDownloadProgress": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMock": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.schema.Schemas": {}, "googleapiclient.schema._SchemaToStruct": {}, "googleapiclient.discovery._BytesGenerator": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.Resource": {}, "googleapiclient.discovery_cache.base.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}}, "_index": 21}], ["classmethod", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 379}], ["client", {"name": {}, "names": {"googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}}, "qname": {}, "docstring": {"googleapiclient.discovery": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 107}], ["client'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 1740}], ["client_cert_sourc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1504}], ["client_encrypted_cert_sourc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1506}], ["client_opt", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1500}], ["client_options.api_endpoint.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1604}], ["client_secrets.json", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1800}], ["close", {"name": {"googleapiclient.http.HttpMock.close": {}, "googleapiclient.discovery.Resource.close": {}}, "names": {"googleapiclient.http.HttpMock.close": {}, "googleapiclient.discovery.Resource.close": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.close": {}}, "kind": {}, "_index": 1290}], ["cloud", {"name": {}, "names": {"googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1444}], ["code", {"name": {}, "names": {"googleapiclient.errors.HttpError.status_code": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.sample_tools": {}, "googleapiclient.errors.HttpError.status_code": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 25}], ["collect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 235}], ["come", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "kind": {}, "_index": 1221}], ["command", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 148}], ["comment", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1363}], ["common", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1795}], ["commonli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers": {}, "googleapiclient.sample_tools": {}}, "kind": {}, "_index": 15}], ["compar", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 185}], ["compat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}}, "kind": {}, "_index": 907}], ["compatible", {"name": {}, "names": {"googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1543}], ["complet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 171}], ["compon", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 176}], ["configur", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 1743}], ["conflict", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1217}], ["conform", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}}, "kind": {}, "_index": 226}], ["connect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.discovery.Resource.close": {}}, "kind": {}, "_index": 970}], ["consid", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 420}], ["consist", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 1741}], ["consol", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1539}], ["consolid", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 215}], ["constant", {"name": {}, "names": {}, "qname": {}, "docstring": {}, "kind": {"googleapiclient._helpers.POSITIONAL_WARNING": {}, "googleapiclient._helpers.POSITIONAL_EXCEPTION": {}, "googleapiclient._helpers.POSITIONAL_IGNORE": {}, "googleapiclient._helpers.POSITIONAL_SET": {}, "googleapiclient._helpers._SYM_LINK_MESSAGE": {}, "googleapiclient._helpers._IS_DIR_MESSAGE": {}, "googleapiclient._helpers._MISSING_FILE_MESSAGE": {}, "googleapiclient.channel.EPOCH": {}, "googleapiclient.channel.CHANNEL_PARAMS": {}, "googleapiclient.channel.X_GOOG_CHANNEL_ID": {}, "googleapiclient.channel.X_GOOG_MESSAGE_NUMBER": {}, "googleapiclient.channel.X_GOOG_RESOURCE_STATE": {}, "googleapiclient.channel.X_GOOG_RESOURCE_URI": {}, "googleapiclient.channel.X_GOOG_RESOURCE_ID": {}, "googleapiclient.model._PY_VERSION": {}, "googleapiclient.model.LOGGER": {}, "googleapiclient.http.LOGGER": {}, "googleapiclient.http.DEFAULT_CHUNK_SIZE": {}, "googleapiclient.http.MAX_URI_LENGTH": {}, "googleapiclient.http.MAX_BATCH_LIMIT": {}, "googleapiclient.http._TOO_MANY_REQUESTS": {}, "googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC": {}, "googleapiclient.http._LEGACY_BATCH_URI": {}, "googleapiclient.discovery.URITEMPLATE": {}, "googleapiclient.discovery.VARNAME": {}, "googleapiclient.discovery.DISCOVERY_URI": {}, "googleapiclient.discovery.V2_DISCOVERY_URI": {}, "googleapiclient.discovery.DEFAULT_METHOD_DOC": {}, "googleapiclient.discovery.HTTP_PAYLOAD_METHODS": {}, "googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS": {}, "googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery._PAGE_TOKEN_NAMES": {}, "googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}, "googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}, "googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN": {}, "googleapiclient.discovery.DEFAULT_UNIVERSE": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETERS": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.RESERVED_WORDS": {}, "googleapiclient.discovery_cache.LOGGER": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_DIR": {}, "googleapiclient.discovery_cache.appengine_memcache.LOGGER": {}, "googleapiclient.discovery_cache.appengine_memcache.NAMESPACE": {}, "googleapiclient.discovery_cache.file_cache.LOGGER": {}, "googleapiclient.discovery_cache.file_cache.FILENAME": {}, "googleapiclient.discovery_cache.file_cache.EPOCH": {}}, "_index": 315}], ["construct", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 538}], ["constructor", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.errors.UnexpectedMethodError.__init__": {}, "googleapiclient.errors.UnexpectedBodyError.__init__": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}}, "kind": {}, "_index": 258}], ["contain", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.notification_from_headers": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 602}], ["content", {"name": {"googleapiclient.errors.HttpError.content": {}, "googleapiclient.errors.BatchError.content": {}, "googleapiclient.http.HttpRequestMock.content": {}}, "names": {"googleapiclient.errors.HttpError.content": {}, "googleapiclient.errors.BatchError.content": {}, "googleapiclient.model.BaseModel.content_type": {}, "googleapiclient.model.BaseModel.no_content_response": {}, "googleapiclient.model.JsonModel.content_type": {}, "googleapiclient.model.JsonModel.no_content_response": {}, "googleapiclient.model.RawModel.content_type": {}, "googleapiclient.model.RawModel.no_content_response": {}, "googleapiclient.model.MediaModel.content_type": {}, "googleapiclient.model.MediaModel.no_content_response": {}, "googleapiclient.model.ProtocolBufferModel.content_type": {}, "googleapiclient.model.ProtocolBufferModel.no_content_response": {}, "googleapiclient.http.HttpRequestMock.content": {}}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.mimeparse": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.errors.HttpError.status_code": {}, "googleapiclient.errors.HttpError._get_reason": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "kind": {}, "_index": 135}], ["content_typ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}}, "kind": {}, "_index": 723}], ["content_type", {"name": {"googleapiclient.model.BaseModel.content_type": {}, "googleapiclient.model.JsonModel.content_type": {}, "googleapiclient.model.RawModel.content_type": {}, "googleapiclient.model.MediaModel.content_type": {}, "googleapiclient.model.ProtocolBufferModel.content_type": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 730}], ["control", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 382}], ["convert", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.schema._SchemaToStruct": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 204}], ["copy.deepcopy(item)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 813}], ["core", {"name": {}, "names": {"googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1542}], ["correct", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 69}], ["correspond", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 424}], ["corrupt", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}}, "kind": {}, "_index": 136}], ["creat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 43}], ["create", {"name": {}, "names": {"googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1650}], ["createmethod", {"name": {"googleapiclient.discovery.createMethod": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1649}], ["createnextmethod", {"name": {"googleapiclient.discovery.createNextMethod": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1657}], ["creation", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 616}], ["credenti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.credentials_from_file": {}, "googleapiclient._auth.default_credentials": {}, "googleapiclient._auth.with_scopes": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource._validate_credentials": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 275}], ["credentials", {"name": {}, "names": {"googleapiclient._auth.credentials_from_file": {}, "googleapiclient._auth.default_credentials": {}, "googleapiclient._auth.refresh_credentials": {}, "googleapiclient._auth.apply_credentials": {}, "googleapiclient._auth.get_credentials_from_http": {}, "googleapiclient.http.BatchHttpRequest._refreshed_credentials": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}, "googleapiclient.discovery.Resource._credentials_validated": {}, "googleapiclient.discovery.Resource._validate_credentials": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 272}], ["credentials_from_file", {"name": {"googleapiclient._auth.credentials_from_file": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 271}], ["credits", {"name": {}, "names": {"googleapiclient.mimeparse.__credits__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 631}], ["current", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 431}], ["custom", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.__init__": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._urljoin": {}}, "kind": {}, "_index": 582}], ["d", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1038}], ["data", {"name": {"googleapiclient.http.HttpMock.data": {}}, "names": {"googleapiclient.model.JsonModel._data_wrapper": {}, "googleapiclient.http.HttpMock.data": {}}, "qname": {}, "docstring": {"googleapiclient.errors.HttpError": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 439}], ["data_wrapp", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.JsonModel.__init__": {}}, "kind": {}, "_index": 758}], ["datetime.datetime,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 608}], ["de", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 706}], ["debug", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel._log_request": {}, "googleapiclient.model.BaseModel._log_response": {}}, "kind": {}, "_index": 738}], ["declar", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 337}], ["decor", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 336}], ["decreas", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.undent": {}}, "kind": {}, "_index": 1399}], ["dedupl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 31}], ["def", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 347}], ["default", {"name": {}, "names": {"googleapiclient._auth.default_credentials": {}, "googleapiclient.http.DEFAULT_CHUNK_SIZE": {}, "googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC": {}, "googleapiclient.discovery.DEFAULT_METHOD_DOC": {}, "googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.DEFAULT_UNIVERSE": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient._auth.default_credentials": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.build_http": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 239}], ["default_chunk_size", {"name": {"googleapiclient.http.DEFAULT_CHUNK_SIZE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 820}], ["default_credentials", {"name": {"googleapiclient._auth.default_credentials": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 277}], ["default_http_timeout_sec", {"name": {"googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 833}], ["default_method_doc", {"name": {"googleapiclient.discovery.DEFAULT_METHOD_DOC": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1417}], ["default_universe", {"name": {"googleapiclient.discovery.DEFAULT_UNIVERSE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1447}], ["defer", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters.__init__": {}}, "kind": {}, "_index": 1627}], ["defin", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 143}], ["definit", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1362}], ["del", {"name": {}, "names": {"googleapiclient.http.MediaFileUpload.__del__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1015}], ["deliv", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 566}], ["deliveri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 560}], ["dent", {"name": {"googleapiclient.schema._SchemaToStruct.dent": {}}, "names": {"googleapiclient.schema._SchemaToStruct.dent": {}}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.__init__": {}}, "kind": {}, "_index": 1375}], ["depend", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.discovery.build": {}}, "kind": {}, "_index": 966}], ["deprec", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1024}], ["depth", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.__init__": {}}, "kind": {}, "_index": 1377}], ["desc", {"name": {}, "names": {"googleapiclient.discovery.Resource._resourceDesc": {}, "googleapiclient.discovery.Resource._rootDesc": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1689}], ["descend", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1407}], ["describ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 892}], ["descript", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 234}], ["description", {"name": {}, "names": {"googleapiclient.discovery._fix_up_method_description": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1594}], ["deseri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 222}], ["deserialize", {"name": {"googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}}, "names": {"googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 750}], ["desir", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 679}], ["detail", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}}, "kind": {}, "_index": 1264}], ["details", {"name": {}, "names": {"googleapiclient.errors.HttpError.error_details": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 449}], ["detect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.autodetect": {}}, "kind": {}, "_index": 1760}], ["determin", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http.HttpRequest.execute": {}}, "kind": {}, "_index": 184}], ["developer", {"name": {}, "names": {"googleapiclient.discovery.Resource._developerKey": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1683}], ["developerkei", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1492}], ["dict", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 410}], ["dictionari", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "kind": {}, "_index": 78}], ["differ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 576}], ["dir", {"name": {}, "names": {"googleapiclient._helpers._IS_DIR_MESSAGE": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_DIR": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 330}], ["directli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.HttpRequestMock": {}}, "kind": {}, "_index": 539}], ["directori", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1763}], ["discoveri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery": {}, "googleapiclient.discovery_cache": {}, "googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.discovery_cache.base": {}, "googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.schema": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 108}], ["discovery", {"name": {"googleapiclient.discovery": {}}, "names": {"googleapiclient.discovery": {}, "googleapiclient.discovery_cache": {}, "googleapiclient.discovery.DISCOVERY_URI": {}, "googleapiclient.discovery.V2_DISCOVERY_URI": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_DIR": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 105}], ["discovery.build()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder.__call__": {}}, "kind": {}, "_index": 1276}], ["discovery_cache", {"name": {"googleapiclient.discovery_cache": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 111}], ["discovery_doc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1536}], ["discovery_doc_dir", {"name": {"googleapiclient.discovery_cache.DISCOVERY_DOC_DIR": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 1756}], ["discovery_doc_max_age", {"name": {"googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1753}], ["discovery_filenam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1807}], ["discovery_uri", {"name": {"googleapiclient.discovery.DISCOVERY_URI": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1413}], ["discoveryserviceurl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}}, "kind": {}, "_index": 1486}], ["do", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 1331}], ["doc", {"name": {}, "names": {"googleapiclient.discovery.DEFAULT_METHOD_DOC": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_DIR": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1418}], ["document", {"name": {}, "names": {"googleapiclient.discovery.build_from_document": {}}, "qname": {}, "docstring": {"googleapiclient.discovery_cache": {}, "googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.discovery_cache.base": {}, "googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.schema": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "kind": {}, "_index": 115}], ["doesn't", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1340}], ["domain", {"name": {}, "names": {"googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN": {}, "googleapiclient.discovery.Resource._universe_domain": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 1445}], ["don't", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.RawModel": {}, "googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 770}], ["done", {"name": {}, "names": {"googleapiclient.http.MediaIoBaseDownload._done": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}}, "kind": {}, "_index": 1036}], ["down", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}}, "kind": {}, "_index": 1710}], ["download", {"name": {}, "names": {"googleapiclient.http.MediaDownloadProgress": {}, "googleapiclient.http.MediaIoBaseDownload": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaDownloadProgress": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}}, "kind": {}, "_index": 884}], ["downloader.next_chunk()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}}, "kind": {}, "_index": 1037}], ["dump", {"name": {}, "names": {"googleapiclient.model.dump_request_response": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 699}], ["dump_request_response", {"name": {"googleapiclient.model.dump_request_response": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 698}], ["dure", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.errors.BatchError": {}}, "kind": {}, "_index": 489}], ["dynam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "kind": {}, "_index": 1704}], ["dynamic", {"name": {}, "names": {"googleapiclient.discovery.Resource._dynamic_attrs": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1673}], ["each", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "kind": {}, "_index": 196}], ["easi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 341}], ["echo_request_bodi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1309}], ["echo_request_head", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1300}], ["echo_request_headers_as_json", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1308}], ["echo_request_uri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1310}], ["effect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1581}], ["effici", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 802}], ["elif", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 100}], ["email", {"name": {}, "names": {"googleapiclient.mimeparse.__email__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 625}], ["emit", {"name": {"googleapiclient.schema._SchemaToStruct.emit": {}}, "names": {"googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1386}], ["emitbegin", {"name": {"googleapiclient.schema._SchemaToStruct.emitBegin": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1390}], ["emitend", {"name": {"googleapiclient.schema._SchemaToStruct.emitEnd": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1393}], ["empti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 138}], ["emul", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequestMock.__init__": {}}, "kind": {}, "_index": 1235}], ["encapsul", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.http.HttpRequest": {}, "googleapiclient.discovery.build": {}}, "kind": {}, "_index": 146}], ["encod", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "kind": {}, "_index": 408}], ["encrypt", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1515}], ["end", {"name": {}, "names": {"googleapiclient.schema._SchemaToStruct.emitEnd": {}}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 1083}], ["endpoint", {"name": {}, "names": {"googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1334}], ["engin", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}}, "kind": {}, "_index": 120}], ["ensur", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1225}], ["enter", {"name": {}, "names": {"googleapiclient.discovery.Resource.__enter__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1721}], ["entir", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 967}], ["entiti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 569}], ["enum", {"name": {}, "names": {"googleapiclient.discovery.ResourceMethodParameters.enum_params": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1624}], ["enum_param", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1623}], ["enum_params", {"name": {"googleapiclient.discovery.ResourceMethodParameters.enum_params": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1645}], ["environ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 900}], ["eof", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http._StreamSlice.read": {}}, "kind": {}, "_index": 933}], ["epoch", {"name": {"googleapiclient.channel.EPOCH": {}, "googleapiclient.discovery_cache.file_cache.EPOCH": {}}, "names": {"googleapiclient.channel.EPOCH": {}, "googleapiclient.discovery_cache.file_cache.EPOCH": {}}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 516}], ["error", {"name": {"googleapiclient.errors.Error": {}}, "names": {"googleapiclient.errors.Error": {}, "googleapiclient.errors.HttpError": {}, "googleapiclient.errors.HttpError.error_details": {}, "googleapiclient.errors.InvalidJsonError": {}, "googleapiclient.errors.UnacceptableMimeTypeError": {}, "googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.errors.InvalidNotificationError": {}, "googleapiclient.errors.BatchError": {}, "googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.http.HttpRequest._in_error_state": {}, "googleapiclient.discovery.APICoreVersionError": {}}, "qname": {}, "docstring": {"googleapiclient.errors": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.errors.Error": {}, "googleapiclient.errors.HttpError._get_reason": {}, "googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.errors.BatchError": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 141}], ["error_details", {"name": {"googleapiclient.errors.HttpError.error_details": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 448}], ["errors", {"name": {"googleapiclient.errors": {}}, "names": {"googleapiclient.errors": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 139}], ["errors.invalidnotificationerror", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.notification_from_headers": {}}, "kind": {}, "_index": 603}], ["etag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 232}], ["etc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}}, "kind": {}, "_index": 203}], ["event", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 549}], ["exampl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.schema": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.key2param": {}}, "kind": {}, "_index": 40}], ["except", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors": {}, "googleapiclient.mimeparse": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 142}], ["exception", {"name": {}, "names": {"googleapiclient._helpers.POSITIONAL_EXCEPTION": {}}, "qname": {}, "docstring": {}, "kind": {"googleapiclient.errors.Error": {}, "googleapiclient.errors.HttpError": {}, "googleapiclient.errors.InvalidJsonError": {}, "googleapiclient.errors.UnknownFileType": {}, "googleapiclient.errors.UnknownLinkType": {}, "googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.errors.UnacceptableMimeTypeError": {}, "googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.errors.InvalidNotificationError": {}, "googleapiclient.errors.BatchError": {}, "googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.discovery.APICoreVersionError": {}}, "_index": 317}], ["excpet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1260}], ["execut", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.execute": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 151}], ["execute", {"name": {"googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.execute": {}}, "names": {"googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.execute": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1123}], ["exist", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 101}], ["exit", {"name": {}, "names": {"googleapiclient.discovery.Resource.__exit__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1724}], ["expect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}}, "kind": {}, "_index": 1205}], ["experiment", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 27}], ["expir", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}}, "kind": {}, "_index": 570}], ["expiration", {"name": {"googleapiclient.channel.Channel.expiration": {}}, "names": {"googleapiclient.channel.Channel.expiration": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 588}], ["explan", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 172}], ["exponenti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1066}], ["express", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1618}], ["extens", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaFileUpload.__init__": {}}, "kind": {}, "_index": 1009}], ["extra", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 615}], ["extract", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._header_to_id": {}}, "kind": {}, "_index": 1204}], ["fact", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1712}], ["factor", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 896}], ["fail", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 853}], ["fals", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._should_retry_response": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 849}], ["far", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}}, "kind": {}, "_index": 869}], ["farm.animals().insert(", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 962}], ["farmer", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1157}], ["farms.animals().get_media(id='cow')", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}}, "kind": {}, "_index": 1031}], ["faster", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 919}], ["fd", {"name": {}, "names": {"googleapiclient.http.MediaIoBaseUpload._fd": {}, "googleapiclient.http.MediaFileUpload._fd": {}, "googleapiclient.http.MediaIoBaseDownload._fd": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}}, "kind": {}, "_index": 974}], ["fh", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}}, "kind": {}, "_index": 956}], ["field", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 1269}], ["file", {"name": {}, "names": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient._auth.credentials_from_file": {}, "googleapiclient._helpers._MISSING_FILE_MESSAGE": {}, "googleapiclient.errors.UnknownFileType": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.discovery_cache.file_cache.Cache._file": {}}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.errors": {}, "googleapiclient._auth.credentials_from_file": {}, "googleapiclient.errors.UnknownFileType": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery_cache.file_cache.Cache": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 125}], ["file_cache", {"name": {"googleapiclient.discovery_cache.file_cache": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 124}], ["filenam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1007}], ["filename", {"name": {"googleapiclient.discovery_cache.file_cache.FILENAME": {}}, "names": {"googleapiclient.http.MediaFileUpload._filename": {}, "googleapiclient.discovery_cache.file_cache.FILENAME": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1012}], ["fill", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.discovery.build": {}}, "kind": {}, "_index": 646}], ["filter", {"name": {}, "names": {"googleapiclient.mimeparse._filter_blank": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 688}], ["find", {"name": {}, "names": {"googleapiclient.discovery._findPageTokenName": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 654}], ["first", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.discovery._findPageTokenName": {}}, "kind": {}, "_index": 338}], ["fit", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}}, "kind": {}, "_index": 658}], ["fitness", {"name": {}, "names": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 649}], ["fitness_and_quality_parsed", {"name": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 648}], ["fix", {"name": {}, "names": {"googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1468}], ["fix_method_name", {"name": {"googleapiclient.discovery.fix_method_name": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1467}], ["flag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1135}], ["float", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}}, "kind": {}, "_index": 880}], ["fn", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 366}], ["fn(10)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 367}], ["fn(10,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 353}], ["fn(pos1,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 348}], ["fn(required_kw):", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 365}], ["fn(required_kw=10)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 368}], ["follow", {"name": {}, "names": {"googleapiclient.http.HttpMockSequence.follow_redirects": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.model.BaseModel": {}}, "kind": {}, "_index": 255}], ["follow_redirects", {"name": {"googleapiclient.http.HttpMockSequence.follow_redirects": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1316}], ["foo", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 229}], ["form", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 749}], ["format", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 206}], ["found", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 662}], ["fragment", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 1655}], ["from", {"name": {}, "names": {"googleapiclient._auth.credentials_from_file": {}, "googleapiclient._auth.get_credentials_from_http": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaFileUpload.from_json": {}, "googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.schema._SchemaToStruct.from_cache": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 273}], ["from_cach", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1405}], ["from_cache", {"name": {"googleapiclient.schema._SchemaToStruct.from_cache": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1383}], ["from_json", {"name": {"googleapiclient.http.MediaFileUpload.from_json": {}, "googleapiclient.http.HttpRequest.from_json": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}}, "kind": {}, "_index": 947}], ["fulli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}}, "kind": {}, "_index": 1072}], ["function", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers": {}, "googleapiclient.channel": {}, "googleapiclient.mimeparse": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.sample_tools.init": {}}, "kind": {"googleapiclient._auth.credentials_from_file": {}, "googleapiclient._auth.default_credentials": {}, "googleapiclient._auth.with_scopes": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient._auth.refresh_credentials": {}, "googleapiclient._auth.apply_credentials": {}, "googleapiclient._auth.is_valid": {}, "googleapiclient._auth.get_credentials_from_http": {}, "googleapiclient._helpers.positional": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel._upper_header_keys": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.mimeparse._filter_blank": {}, "googleapiclient.model._abstract": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery._urljoin": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.autodetect": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.file_cache._to_timestamp": {}, "googleapiclient.discovery_cache.file_cache._read_or_initialize_cache": {}, "googleapiclient.sample_tools.init": {}}, "_index": 14}], ["further", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 247}], ["futur", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 609}], ["gener", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1223}], ["generator", {"name": {}, "names": {"googleapiclient.discovery._BytesGenerator": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1465}], ["get", {"name": {"googleapiclient.schema.Schemas.get": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}}, "names": {"googleapiclient._auth.get_credentials_from_http": {}, "googleapiclient.errors.HttpError._get_reason": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}}, "kind": {}, "_index": 45}], ["get_credentials_from_http", {"name": {"googleapiclient._auth.get_credentials_from_http": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 307}], ["get_static_doc", {"name": {"googleapiclient.discovery_cache.get_static_doc": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1761}], ["getbytes", {"name": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}}, "names": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 927}], ["getstate", {"name": {}, "names": {"googleapiclient.discovery.Resource.__getstate__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1707}], ["given", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "kind": {}, "_index": 227}], ["global", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 1193}], ["goog", {"name": {}, "names": {"googleapiclient.channel.X_GOOG_CHANNEL_ID": {}, "googleapiclient.channel.X_GOOG_MESSAGE_NUMBER": {}, "googleapiclient.channel.X_GOOG_RESOURCE_STATE": {}, "googleapiclient.channel.X_GOOG_RESOURCE_URI": {}, "googleapiclient.channel.X_GOOG_RESOURCE_ID": {}}, "qname": {}, "docstring": {"googleapiclient.channel.notification_from_headers": {}}, "kind": {}, "_index": 522}], ["googl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}}, "kind": {}, "_index": 9}], ["google", {"name": {}, "names": {"googleapiclient._auth.HAS_GOOGLE_AUTH": {}, "googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}, "googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}, "googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 266}], ["google'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery": {}}, "kind": {}, "_index": 110}], ["google.api_core.client_options,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1501}], ["google.auth.credentials.credentials,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 287}], ["google.auth.exceptions.mutualtlschannelerror:", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1524}], ["google.oauth2.service_account.credentials.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1523}], ["google_api_use_client_certif", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1507}], ["google_api_use_client_certificate", {"name": {"googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1436}], ["google_api_use_mtls_endpoint", {"name": {"googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1440}], ["google_auth_httplib2.authorizedhttp]:", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.authorized_http": {}}, "kind": {}, "_index": 297}], ["google_cloud_universe_domain", {"name": {"googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1443}], ["googleapiclient", {"name": {"googleapiclient": {}}, "names": {"googleapiclient": {}}, "qname": {"googleapiclient": {}}, "docstring": {}, "kind": {}, "_index": 0}], ["googleapiclient._auth", {"name": {}, "names": {}, "qname": {"googleapiclient._auth": {}}, "docstring": {}, "kind": {}, "_index": 4}], ["googleapiclient._auth.apply_credentials", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.apply_credentials": {}}, "docstring": {}, "kind": {}, "_index": 303}], ["googleapiclient._auth.authorized_http", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.authorized_http": {}}, "docstring": {}, "kind": {}, "_index": 294}], ["googleapiclient._auth.credentials_from_file", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.credentials_from_file": {}}, "docstring": {}, "kind": {}, "_index": 274}], ["googleapiclient._auth.default_credentials", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.default_credentials": {}}, "docstring": {}, "kind": {}, "_index": 278}], ["googleapiclient._auth.get_credentials_from_http", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.get_credentials_from_http": {}}, "docstring": {}, "kind": {}, "_index": 308}], ["googleapiclient._auth.has_google_auth", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.HAS_GOOGLE_AUTH": {}}, "docstring": {}, "kind": {}, "_index": 267}], ["googleapiclient._auth.has_oauth2client", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.HAS_OAUTH2CLIENT": {}}, "docstring": {}, "kind": {}, "_index": 270}], ["googleapiclient._auth.is_valid", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.is_valid": {}}, "docstring": {}, "kind": {}, "_index": 306}], ["googleapiclient._auth.refresh_credentials", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.refresh_credentials": {}}, "docstring": {}, "kind": {}, "_index": 300}], ["googleapiclient._auth.with_scopes", {"name": {}, "names": {}, "qname": {"googleapiclient._auth.with_scopes": {}}, "docstring": {}, "kind": {}, "_index": 282}], ["googleapiclient._helpers", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers": {}}, "docstring": {}, "kind": {}, "_index": 13}], ["googleapiclient._helpers._add_query_parameter", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers._add_query_parameter": {}}, "docstring": {}, "kind": {}, "_index": 430}], ["googleapiclient._helpers._is_dir_message", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers._IS_DIR_MESSAGE": {}}, "docstring": {}, "kind": {}, "_index": 331}], ["googleapiclient._helpers._missing_file_message", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers._MISSING_FILE_MESSAGE": {}}, "docstring": {}, "kind": {}, "_index": 334}], ["googleapiclient._helpers._sym_link_message", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers._SYM_LINK_MESSAGE": {}}, "docstring": {}, "kind": {}, "_index": 328}], ["googleapiclient._helpers.logger", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.logger": {}}, "docstring": {}, "kind": {}, "_index": 310}], ["googleapiclient._helpers.parse_unique_urlencoded", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.parse_unique_urlencoded": {}}, "docstring": {}, "kind": {}, "_index": 404}], ["googleapiclient._helpers.positional", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.positional": {}}, "docstring": {}, "kind": {}, "_index": 335}], ["googleapiclient._helpers.positional_exception", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.POSITIONAL_EXCEPTION": {}}, "docstring": {}, "kind": {}, "_index": 318}], ["googleapiclient._helpers.positional_ignore", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.POSITIONAL_IGNORE": {}}, "docstring": {}, "kind": {}, "_index": 321}], ["googleapiclient._helpers.positional_set", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.POSITIONAL_SET": {}}, "docstring": {}, "kind": {}, "_index": 323}], ["googleapiclient._helpers.positional_warning", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.POSITIONAL_WARNING": {}}, "docstring": {}, "kind": {}, "_index": 314}], ["googleapiclient._helpers.update_query_params", {"name": {}, "names": {}, "qname": {"googleapiclient._helpers.update_query_params": {}}, "docstring": {}, "kind": {}, "_index": 416}], ["googleapiclient.channel", {"name": {}, "names": {}, "qname": {"googleapiclient.channel": {}}, "docstring": {}, "kind": {}, "_index": 18}], ["googleapiclient.channel._upper_header_keys", {"name": {}, "names": {}, "qname": {"googleapiclient.channel._upper_header_keys": {}}, "docstring": {}, "kind": {}, "_index": 535}], ["googleapiclient.channel.channel", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel": {}}, "docstring": {}, "kind": {}, "_index": 557}], ["googleapiclient.channel.channel.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.__init__": {}}, "docstring": {}, "kind": {}, "_index": 578}], ["googleapiclient.channel.channel.address", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.address": {}}, "docstring": {}, "kind": {}, "_index": 587}], ["googleapiclient.channel.channel.body", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.body": {}}, "docstring": {}, "kind": {}, "_index": 593}], ["googleapiclient.channel.channel.expiration", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.expiration": {}}, "docstring": {}, "kind": {}, "_index": 589}], ["googleapiclient.channel.channel.id", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.id": {}}, "docstring": {}, "kind": {}, "_index": 585}], ["googleapiclient.channel.channel.params", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.params": {}}, "docstring": {}, "kind": {}, "_index": 590}], ["googleapiclient.channel.channel.resource_id", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.resource_id": {}}, "docstring": {}, "kind": {}, "_index": 591}], ["googleapiclient.channel.channel.resource_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.resource_uri": {}}, "docstring": {}, "kind": {}, "_index": 592}], ["googleapiclient.channel.channel.token", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.token": {}}, "docstring": {}, "kind": {}, "_index": 586}], ["googleapiclient.channel.channel.type", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.type": {}}, "docstring": {}, "kind": {}, "_index": 584}], ["googleapiclient.channel.channel.update", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Channel.update": {}}, "docstring": {}, "kind": {}, "_index": 596}], ["googleapiclient.channel.channel_params", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.CHANNEL_PARAMS": {}}, "docstring": {}, "kind": {}, "_index": 519}], ["googleapiclient.channel.epoch", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.EPOCH": {}}, "docstring": {}, "kind": {}, "_index": 517}], ["googleapiclient.channel.new_webhook_channel", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.new_webhook_channel": {}}, "docstring": {}, "kind": {}, "_index": 606}], ["googleapiclient.channel.notification", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Notification": {}}, "docstring": {}, "kind": {}, "_index": 536}], ["googleapiclient.channel.notification.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Notification.__init__": {}}, "docstring": {}, "kind": {}, "_index": 550}], ["googleapiclient.channel.notification.message_number", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Notification.message_number": {}}, "docstring": {}, "kind": {}, "_index": 553}], ["googleapiclient.channel.notification.resource_id", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Notification.resource_id": {}}, "docstring": {}, "kind": {}, "_index": 556}], ["googleapiclient.channel.notification.resource_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Notification.resource_uri": {}}, "docstring": {}, "kind": {}, "_index": 555}], ["googleapiclient.channel.notification.state", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.Notification.state": {}}, "docstring": {}, "kind": {}, "_index": 554}], ["googleapiclient.channel.notification_from_headers", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.notification_from_headers": {}}, "docstring": {}, "kind": {}, "_index": 601}], ["googleapiclient.channel.x_goog_channel_id", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.X_GOOG_CHANNEL_ID": {}}, "docstring": {}, "kind": {}, "_index": 523}], ["googleapiclient.channel.x_goog_message_number", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.X_GOOG_MESSAGE_NUMBER": {}}, "docstring": {}, "kind": {}, "_index": 525}], ["googleapiclient.channel.x_goog_resource_id", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.X_GOOG_RESOURCE_ID": {}}, "docstring": {}, "kind": {}, "_index": 532}], ["googleapiclient.channel.x_goog_resource_state", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.X_GOOG_RESOURCE_STATE": {}}, "docstring": {}, "kind": {}, "_index": 528}], ["googleapiclient.channel.x_goog_resource_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.channel.X_GOOG_RESOURCE_URI": {}}, "docstring": {}, "kind": {}, "_index": 530}], ["googleapiclient.discovery", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery": {}}, "docstring": {}, "kind": {}, "_index": 106}], ["googleapiclient.discovery.__author__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.__author__": {}}, "docstring": {}, "kind": {}, "_index": 617}], ["googleapiclient.discovery._bytesgenerator", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._BytesGenerator": {}}, "docstring": {}, "kind": {}, "_index": 1466}], ["googleapiclient.discovery._cast", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._cast": {}}, "docstring": {}, "kind": {}, "_index": 1556}], ["googleapiclient.discovery._check_api_core_compatible_with_credentials_universe", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}}, "docstring": {}, "kind": {}, "_index": 1544}], ["googleapiclient.discovery._discovery_service_uri_options", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._discovery_service_uri_options": {}}, "docstring": {}, "kind": {}, "_index": 1530}], ["googleapiclient.discovery._findpagetokenname", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._findPageTokenName": {}}, "docstring": {}, "kind": {}, "_index": 1746}], ["googleapiclient.discovery._fix_up_media_path_base_url", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._fix_up_media_path_base_url": {}}, "docstring": {}, "kind": {}, "_index": 1600}], ["googleapiclient.discovery._fix_up_media_upload", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._fix_up_media_upload": {}}, "docstring": {}, "kind": {}, "_index": 1586}], ["googleapiclient.discovery._fix_up_method_description", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._fix_up_method_description": {}}, "docstring": {}, "kind": {}, "_index": 1595}], ["googleapiclient.discovery._fix_up_parameters", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._fix_up_parameters": {}}, "docstring": {}, "kind": {}, "_index": 1577}], ["googleapiclient.discovery._media_path_url_from_info", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._media_path_url_from_info": {}}, "docstring": {}, "kind": {}, "_index": 1570}], ["googleapiclient.discovery._media_size_bit_shifts", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS": {}}, "docstring": {}, "kind": {}, "_index": 1426}], ["googleapiclient.discovery._media_size_to_long", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._media_size_to_long": {}}, "docstring": {}, "kind": {}, "_index": 1563}], ["googleapiclient.discovery._methodproperties", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._methodProperties": {}}, "docstring": {}, "kind": {}, "_index": 1751}], ["googleapiclient.discovery._page_token_names", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._PAGE_TOKEN_NAMES": {}}, "docstring": {}, "kind": {}, "_index": 1435}], ["googleapiclient.discovery._retrieve_discovery_doc", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._retrieve_discovery_doc": {}}, "docstring": {}, "kind": {}, "_index": 1535}], ["googleapiclient.discovery._urljoin", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery._urljoin": {}}, "docstring": {}, "kind": {}, "_index": 1608}], ["googleapiclient.discovery.apicoreversionerror", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.APICoreVersionError": {}}, "docstring": {}, "kind": {}, "_index": 1457}], ["googleapiclient.discovery.apicoreversionerror.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.APICoreVersionError.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1458}], ["googleapiclient.discovery.body_parameter_default_value", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE": {}}, "docstring": {}, "kind": {}, "_index": 1428}], ["googleapiclient.discovery.build", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.build": {}}, "docstring": {}, "kind": {}, "_index": 1482}], ["googleapiclient.discovery.build(\"plus\",", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1257}], ["googleapiclient.discovery.build_from_document", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.build_from_document": {}}, "docstring": {}, "kind": {}, "_index": 1546}], ["googleapiclient.discovery.createmethod", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.createMethod": {}}, "docstring": {}, "kind": {}, "_index": 1651}], ["googleapiclient.discovery.createnextmethod", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.createNextMethod": {}}, "docstring": {}, "kind": {}, "_index": 1658}], ["googleapiclient.discovery.default_method_doc", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.DEFAULT_METHOD_DOC": {}}, "docstring": {}, "kind": {}, "_index": 1419}], ["googleapiclient.discovery.default_universe", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.DEFAULT_UNIVERSE": {}}, "docstring": {}, "kind": {}, "_index": 1448}], ["googleapiclient.discovery.discovery_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.DISCOVERY_URI": {}}, "docstring": {}, "kind": {}, "_index": 1414}], ["googleapiclient.discovery.fix_method_name", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.fix_method_name": {}}, "docstring": {}, "kind": {}, "_index": 1469}], ["googleapiclient.discovery.google_api_use_client_certificate", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}}, "docstring": {}, "kind": {}, "_index": 1439}], ["googleapiclient.discovery.google_api_use_mtls_endpoint", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}}, "docstring": {}, "kind": {}, "_index": 1442}], ["googleapiclient.discovery.google_cloud_universe_domain", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN": {}}, "docstring": {}, "kind": {}, "_index": 1446}], ["googleapiclient.discovery.has_universe", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.HAS_UNIVERSE": {}}, "docstring": {}, "kind": {}, "_index": 620}], ["googleapiclient.discovery.http_payload_methods", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.HTTP_PAYLOAD_METHODS": {}}, "docstring": {}, "kind": {}, "_index": 1422}], ["googleapiclient.discovery.key2param", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.key2param": {}}, "docstring": {}, "kind": {}, "_index": 1478}], ["googleapiclient.discovery.logger", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.logger": {}}, "docstring": {}, "kind": {}, "_index": 1408}], ["googleapiclient.discovery.media_body_parameter_default_value", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}}, "docstring": {}, "kind": {}, "_index": 1430}], ["googleapiclient.discovery.media_mime_type_parameter_default_value", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}}, "docstring": {}, "kind": {}, "_index": 1432}], ["googleapiclient.discovery.reserved_words", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.RESERVED_WORDS": {}}, "docstring": {}, "kind": {}, "_index": 1462}], ["googleapiclient.discovery.resource", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource": {}}, "docstring": {}, "kind": {}, "_index": 1663}], ["googleapiclient.discovery.resource.__enter__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource.__enter__": {}}, "docstring": {}, "kind": {}, "_index": 1722}], ["googleapiclient.discovery.resource.__exit__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource.__exit__": {}}, "docstring": {}, "kind": {}, "_index": 1725}], ["googleapiclient.discovery.resource.__getstate__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource.__getstate__": {}}, "docstring": {}, "kind": {}, "_index": 1708}], ["googleapiclient.discovery.resource.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1664}], ["googleapiclient.discovery.resource.__setstate__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource.__setstate__": {}}, "docstring": {}, "kind": {}, "_index": 1718}], ["googleapiclient.discovery.resource._add_basic_methods", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._add_basic_methods": {}}, "docstring": {}, "kind": {}, "_index": 1730}], ["googleapiclient.discovery.resource._add_nested_resources", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._add_nested_resources": {}}, "docstring": {}, "kind": {}, "_index": 1734}], ["googleapiclient.discovery.resource._add_next_methods", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._add_next_methods": {}}, "docstring": {}, "kind": {}, "_index": 1736}], ["googleapiclient.discovery.resource._baseurl", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._baseUrl": {}}, "docstring": {}, "kind": {}, "_index": 1679}], ["googleapiclient.discovery.resource._credentials_validated", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._credentials_validated": {}}, "docstring": {}, "kind": {}, "_index": 1699}], ["googleapiclient.discovery.resource._developerkey", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._developerKey": {}}, "docstring": {}, "kind": {}, "_index": 1685}], ["googleapiclient.discovery.resource._dynamic_attrs", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._dynamic_attrs": {}}, "docstring": {}, "kind": {}, "_index": 1675}], ["googleapiclient.discovery.resource._http", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._http": {}}, "docstring": {}, "kind": {}, "_index": 1677}], ["googleapiclient.discovery.resource._model", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._model": {}}, "docstring": {}, "kind": {}, "_index": 1681}], ["googleapiclient.discovery.resource._requestbuilder", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._requestBuilder": {}}, "docstring": {}, "kind": {}, "_index": 1687}], ["googleapiclient.discovery.resource._resourcedesc", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._resourceDesc": {}}, "docstring": {}, "kind": {}, "_index": 1690}], ["googleapiclient.discovery.resource._rootdesc", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._rootDesc": {}}, "docstring": {}, "kind": {}, "_index": 1692}], ["googleapiclient.discovery.resource._schema", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._schema": {}}, "docstring": {}, "kind": {}, "_index": 1694}], ["googleapiclient.discovery.resource._set_dynamic_attr", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "docstring": {}, "kind": {}, "_index": 1702}], ["googleapiclient.discovery.resource._set_service_methods", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._set_service_methods": {}}, "docstring": {}, "kind": {}, "_index": 1728}], ["googleapiclient.discovery.resource._universe_domain", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._universe_domain": {}}, "docstring": {}, "kind": {}, "_index": 1696}], ["googleapiclient.discovery.resource._validate_credentials", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "docstring": {}, "kind": {}, "_index": 1739}], ["googleapiclient.discovery.resource.close", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.Resource.close": {}}, "docstring": {}, "kind": {}, "_index": 1726}], ["googleapiclient.discovery.resourcemethodparameters", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "docstring": {}, "kind": {}, "_index": 1612}], ["googleapiclient.discovery.resourcemethodparameters.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1625}], ["googleapiclient.discovery.resourcemethodparameters.argmap", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.argmap": {}}, "docstring": {}, "kind": {}, "_index": 1629}], ["googleapiclient.discovery.resourcemethodparameters.enum_params", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.enum_params": {}}, "docstring": {}, "kind": {}, "_index": 1646}], ["googleapiclient.discovery.resourcemethodparameters.param_types", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.param_types": {}}, "docstring": {}, "kind": {}, "_index": 1644}], ["googleapiclient.discovery.resourcemethodparameters.path_params", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.path_params": {}}, "docstring": {}, "kind": {}, "_index": 1641}], ["googleapiclient.discovery.resourcemethodparameters.pattern_params", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.pattern_params": {}}, "docstring": {}, "kind": {}, "_index": 1637}], ["googleapiclient.discovery.resourcemethodparameters.query_params", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.query_params": {}}, "docstring": {}, "kind": {}, "_index": 1639}], ["googleapiclient.discovery.resourcemethodparameters.repeated_params", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.repeated_params": {}}, "docstring": {}, "kind": {}, "_index": 1635}], ["googleapiclient.discovery.resourcemethodparameters.required_params", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.required_params": {}}, "docstring": {}, "kind": {}, "_index": 1632}], ["googleapiclient.discovery.resourcemethodparameters.set_parameters", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "docstring": {}, "kind": {}, "_index": 1648}], ["googleapiclient.discovery.stack_query_parameter_default_value", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}}, "docstring": {}, "kind": {}, "_index": 1454}], ["googleapiclient.discovery.stack_query_parameters", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.STACK_QUERY_PARAMETERS": {}}, "docstring": {}, "kind": {}, "_index": 1452}], ["googleapiclient.discovery.uritemplate", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.URITEMPLATE": {}}, "docstring": {}, "kind": {}, "_index": 1410}], ["googleapiclient.discovery.v2_discovery_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.V2_DISCOVERY_URI": {}}, "docstring": {}, "kind": {}, "_index": 1416}], ["googleapiclient.discovery.varname", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery.VARNAME": {}}, "docstring": {}, "kind": {}, "_index": 1412}], ["googleapiclient.discovery_cache", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache": {}}, "docstring": {}, "kind": {}, "_index": 113}], ["googleapiclient.discovery_cache.appengine_memcache", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache": {}}, "docstring": {}, "kind": {}, "_index": 119}], ["googleapiclient.discovery_cache.appengine_memcache.cache", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.cache": {}}, "docstring": {}, "kind": {}, "_index": 1770}], ["googleapiclient.discovery_cache.appengine_memcache.cache.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1771}], ["googleapiclient.discovery_cache.appengine_memcache.cache._max_age", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache.Cache._max_age": {}}, "docstring": {}, "kind": {}, "_index": 1774}], ["googleapiclient.discovery_cache.appengine_memcache.cache.get", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}}, "docstring": {}, "kind": {}, "_index": 1775}], ["googleapiclient.discovery_cache.appengine_memcache.cache.set", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}}, "docstring": {}, "kind": {}, "_index": 1776}], ["googleapiclient.discovery_cache.appengine_memcache.logger", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache.LOGGER": {}}, "docstring": {}, "kind": {}, "_index": 1767}], ["googleapiclient.discovery_cache.appengine_memcache.namespace", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.appengine_memcache.NAMESPACE": {}}, "docstring": {}, "kind": {}, "_index": 1769}], ["googleapiclient.discovery_cache.autodetect", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.autodetect": {}}, "docstring": {}, "kind": {}, "_index": 1759}], ["googleapiclient.discovery_cache.base", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.base": {}}, "docstring": {}, "kind": {}, "_index": 122}], ["googleapiclient.discovery_cache.base.cache", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.base.Cache": {}}, "docstring": {}, "kind": {}, "_index": 1764}], ["googleapiclient.discovery_cache.base.cache,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery_cache.autodetect": {}}, "kind": {}, "_index": 1538}], ["googleapiclient.discovery_cache.base.cache.get", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.base.Cache.get": {}}, "docstring": {}, "kind": {}, "_index": 1765}], ["googleapiclient.discovery_cache.base.cache.set", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.base.Cache.set": {}}, "docstring": {}, "kind": {}, "_index": 1766}], ["googleapiclient.discovery_cache.base.cachebase,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1498}], ["googleapiclient.discovery_cache.discovery_doc_dir", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.DISCOVERY_DOC_DIR": {}}, "docstring": {}, "kind": {}, "_index": 1757}], ["googleapiclient.discovery_cache.discovery_doc_max_age", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE": {}}, "docstring": {}, "kind": {}, "_index": 1755}], ["googleapiclient.discovery_cache.file_cache", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache": {}}, "docstring": {}, "kind": {}, "_index": 126}], ["googleapiclient.discovery_cache.file_cache._read_or_initialize_cache", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache._read_or_initialize_cache": {}}, "docstring": {}, "kind": {}, "_index": 1785}], ["googleapiclient.discovery_cache.file_cache._to_timestamp", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache._to_timestamp": {}}, "docstring": {}, "kind": {}, "_index": 1782}], ["googleapiclient.discovery_cache.file_cache.cache", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.Cache": {}, "googleapiclient.discovery_cache.file_cache.cache": {}}, "docstring": {}, "kind": {}, "_index": 1786}], ["googleapiclient.discovery_cache.file_cache.cache.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.Cache.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1787}], ["googleapiclient.discovery_cache.file_cache.cache._file", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.Cache._file": {}}, "docstring": {}, "kind": {}, "_index": 1790}], ["googleapiclient.discovery_cache.file_cache.cache._max_age", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.Cache._max_age": {}}, "docstring": {}, "kind": {}, "_index": 1788}], ["googleapiclient.discovery_cache.file_cache.cache.get", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.Cache.get": {}}, "docstring": {}, "kind": {}, "_index": 1791}], ["googleapiclient.discovery_cache.file_cache.cache.set", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "docstring": {}, "kind": {}, "_index": 1792}], ["googleapiclient.discovery_cache.file_cache.epoch", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.EPOCH": {}}, "docstring": {}, "kind": {}, "_index": 1779}], ["googleapiclient.discovery_cache.file_cache.filename", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.FILENAME": {}}, "docstring": {}, "kind": {}, "_index": 1778}], ["googleapiclient.discovery_cache.file_cache.logger", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.file_cache.LOGGER": {}}, "docstring": {}, "kind": {}, "_index": 1777}], ["googleapiclient.discovery_cache.get_static_doc", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.get_static_doc": {}}, "docstring": {}, "kind": {}, "_index": 1762}], ["googleapiclient.discovery_cache.logger", {"name": {}, "names": {}, "qname": {"googleapiclient.discovery_cache.LOGGER": {}}, "docstring": {}, "kind": {}, "_index": 1752}], ["googleapiclient.errors", {"name": {}, "names": {}, "qname": {"googleapiclient.errors": {}}, "docstring": {}, "kind": {}, "_index": 140}], ["googleapiclient.errors.__author__", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.__author__": {}}, "docstring": {}, "kind": {}, "_index": 435}], ["googleapiclient.errors.batcherror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.BatchError": {}}, "docstring": {"googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 500}], ["googleapiclient.errors.batcherror.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.BatchError.__init__": {}}, "docstring": {}, "kind": {}, "_index": 501}], ["googleapiclient.errors.batcherror.__repr__", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.BatchError.__repr__": {}}, "docstring": {}, "kind": {}, "_index": 505}], ["googleapiclient.errors.batcherror.content", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.BatchError.content": {}}, "docstring": {}, "kind": {}, "_index": 503}], ["googleapiclient.errors.batcherror.reason", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.BatchError.reason": {}}, "docstring": {}, "kind": {}, "_index": 504}], ["googleapiclient.errors.batcherror.resp", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.BatchError.resp": {}}, "docstring": {}, "kind": {}, "_index": 502}], ["googleapiclient.errors.error", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.Error": {}}, "docstring": {}, "kind": {}, "_index": 436}], ["googleapiclient.errors.httperror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError": {}}, "docstring": {"googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 438}], ["googleapiclient.errors.httperror.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.__init__": {}}, "docstring": {}, "kind": {}, "_index": 443}], ["googleapiclient.errors.httperror.__repr__", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.__repr__": {}}, "docstring": {}, "kind": {}, "_index": 463}], ["googleapiclient.errors.httperror._get_reason", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError._get_reason": {}}, "docstring": {}, "kind": {}, "_index": 459}], ["googleapiclient.errors.httperror.content", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.content": {}}, "docstring": {}, "kind": {}, "_index": 446}], ["googleapiclient.errors.httperror.error_details", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.error_details": {}}, "docstring": {}, "kind": {}, "_index": 450}], ["googleapiclient.errors.httperror.reason", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.reason": {}}, "docstring": {}, "kind": {}, "_index": 452}], ["googleapiclient.errors.httperror.resp", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.resp": {}}, "docstring": {}, "kind": {}, "_index": 444}], ["googleapiclient.errors.httperror.status_code", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.status_code": {}}, "docstring": {}, "kind": {}, "_index": 455}], ["googleapiclient.errors.httperror.uri", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.HttpError.uri": {}}, "docstring": {}, "kind": {}, "_index": 447}], ["googleapiclient.errors.invalidchunksizeerror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.InvalidChunkSizeError": {}}, "docstring": {}, "kind": {}, "_index": 493}], ["googleapiclient.errors.invalidjsonerror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.InvalidJsonError": {}}, "docstring": {}, "kind": {}, "_index": 465}], ["googleapiclient.errors.invalidnotificationerror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.InvalidNotificationError": {}}, "docstring": {}, "kind": {}, "_index": 497}], ["googleapiclient.errors.mediauploadsizeerror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.MediaUploadSizeError": {}}, "docstring": {}, "kind": {}, "_index": 483}], ["googleapiclient.errors.resumableuploaderror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.ResumableUploadError": {}}, "docstring": {}, "kind": {}, "_index": 488}], ["googleapiclient.errors.unacceptablemimetypeerror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnacceptableMimeTypeError": {}}, "docstring": {}, "kind": {}, "_index": 476}], ["googleapiclient.errors.unexpectedbodyerror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnexpectedBodyError": {}}, "docstring": {}, "kind": {}, "_index": 513}], ["googleapiclient.errors.unexpectedbodyerror.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnexpectedBodyError.__init__": {}}, "docstring": {}, "kind": {}, "_index": 515}], ["googleapiclient.errors.unexpectedmethoderror", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnexpectedMethodError": {}}, "docstring": {}, "kind": {}, "_index": 508}], ["googleapiclient.errors.unexpectedmethoderror.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnexpectedMethodError.__init__": {}}, "docstring": {}, "kind": {}, "_index": 510}], ["googleapiclient.errors.unknownapinameorversion", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnknownApiNameOrVersion": {}}, "docstring": {}, "kind": {}, "_index": 473}], ["googleapiclient.errors.unknownfiletype", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnknownFileType": {}}, "docstring": {}, "kind": {}, "_index": 468}], ["googleapiclient.errors.unknownlinktype", {"name": {}, "names": {}, "qname": {"googleapiclient.errors.UnknownLinkType": {}}, "docstring": {}, "kind": {}, "_index": 470}], ["googleapiclient.http", {"name": {}, "names": {}, "qname": {"googleapiclient.http": {}}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 145}], ["googleapiclient.http.__author__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.__author__": {}}, "docstring": {}, "kind": {}, "_index": 691}], ["googleapiclient.http._legacy_batch_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.http._LEGACY_BATCH_URI": {}}, "docstring": {}, "kind": {}, "_index": 839}], ["googleapiclient.http._retry_request", {"name": {}, "names": {}, "qname": {"googleapiclient.http._retry_request": {}}, "docstring": {}, "kind": {}, "_index": 851}], ["googleapiclient.http._should_retry_response", {"name": {}, "names": {}, "qname": {"googleapiclient.http._should_retry_response": {}}, "docstring": {}, "kind": {}, "_index": 843}], ["googleapiclient.http._streamslice", {"name": {}, "names": {}, "qname": {"googleapiclient.http._StreamSlice": {}}, "docstring": {}, "kind": {}, "_index": 1077}], ["googleapiclient.http._streamslice.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http._StreamSlice.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1085}], ["googleapiclient.http._streamslice._begin", {"name": {}, "names": {}, "qname": {"googleapiclient.http._StreamSlice._begin": {}}, "docstring": {}, "kind": {}, "_index": 1090}], ["googleapiclient.http._streamslice._chunksize", {"name": {}, "names": {}, "qname": {"googleapiclient.http._StreamSlice._chunksize": {}}, "docstring": {}, "kind": {}, "_index": 1091}], ["googleapiclient.http._streamslice._stream", {"name": {}, "names": {}, "qname": {"googleapiclient.http._StreamSlice._stream": {}}, "docstring": {}, "kind": {}, "_index": 1088}], ["googleapiclient.http._streamslice.read", {"name": {}, "names": {}, "qname": {"googleapiclient.http._StreamSlice.read": {}}, "docstring": {}, "kind": {}, "_index": 1092}], ["googleapiclient.http._too_many_requests", {"name": {}, "names": {}, "qname": {"googleapiclient.http._TOO_MANY_REQUESTS": {}}, "docstring": {}, "kind": {}, "_index": 832}], ["googleapiclient.http.batchhttprequest", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest": {}}, "docstring": {}, "kind": {}, "_index": 1152}], ["googleapiclient.http.batchhttprequest.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1165}], ["googleapiclient.http.batchhttprequest._base_id", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._base_id": {}}, "docstring": {}, "kind": {}, "_index": 1183}], ["googleapiclient.http.batchhttprequest._batch_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._batch_uri": {}}, "docstring": {}, "kind": {}, "_index": 1170}], ["googleapiclient.http.batchhttprequest._callback", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._callback": {}}, "docstring": {}, "kind": {}, "_index": 1172}], ["googleapiclient.http.batchhttprequest._callbacks", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._callbacks": {}}, "docstring": {}, "kind": {}, "_index": 1176}], ["googleapiclient.http.batchhttprequest._deserialize_response", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._deserialize_response": {}}, "docstring": {}, "kind": {}, "_index": 1210}], ["googleapiclient.http.batchhttprequest._execute", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._execute": {}}, "docstring": {}, "kind": {}, "_index": 1228}], ["googleapiclient.http.batchhttprequest._header_to_id", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._header_to_id": {}}, "docstring": {}, "kind": {}, "_index": 1201}], ["googleapiclient.http.batchhttprequest._id_to_header", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "docstring": {}, "kind": {}, "_index": 1195}], ["googleapiclient.http.batchhttprequest._last_auto_id", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._last_auto_id": {}}, "docstring": {}, "kind": {}, "_index": 1181}], ["googleapiclient.http.batchhttprequest._new_id", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._new_id": {}}, "docstring": {}, "kind": {}, "_index": 1215}], ["googleapiclient.http.batchhttprequest._order", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._order": {}}, "docstring": {}, "kind": {}, "_index": 1178}], ["googleapiclient.http.batchhttprequest._refresh_and_apply_credentials", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}}, "docstring": {}, "kind": {}, "_index": 1191}], ["googleapiclient.http.batchhttprequest._refreshed_credentials", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._refreshed_credentials": {}}, "docstring": {}, "kind": {}, "_index": 1189}], ["googleapiclient.http.batchhttprequest._requests", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._requests": {}}, "docstring": {}, "kind": {}, "_index": 1174}], ["googleapiclient.http.batchhttprequest._responses", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._responses": {}}, "docstring": {}, "kind": {}, "_index": 1186}], ["googleapiclient.http.batchhttprequest._serialize_request", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest._serialize_request": {}}, "docstring": {}, "kind": {}, "_index": 1207}], ["googleapiclient.http.batchhttprequest.add", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest.add": {}}, "docstring": {}, "kind": {}, "_index": 1218}], ["googleapiclient.http.batchhttprequest.execute", {"name": {}, "names": {}, "qname": {"googleapiclient.http.BatchHttpRequest.execute": {}}, "docstring": {}, "kind": {}, "_index": 1230}], ["googleapiclient.http.build_http", {"name": {}, "names": {}, "qname": {"googleapiclient.http.build_http": {}}, "docstring": {}, "kind": {}, "_index": 1344}], ["googleapiclient.http.default_chunk_size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.DEFAULT_CHUNK_SIZE": {}}, "docstring": {}, "kind": {}, "_index": 821}], ["googleapiclient.http.default_http_timeout_sec", {"name": {}, "names": {}, "qname": {"googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC": {}}, "docstring": {}, "kind": {}, "_index": 836}], ["googleapiclient.http.httpmock", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock": {}}, "docstring": {}, "kind": {}, "_index": 1279}], ["googleapiclient.http.httpmock.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1281}], ["googleapiclient.http.httpmock.body", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.body": {}}, "docstring": {}, "kind": {}, "_index": 1288}], ["googleapiclient.http.httpmock.close", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.close": {}}, "docstring": {}, "kind": {}, "_index": 1291}], ["googleapiclient.http.httpmock.data", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.data": {}}, "docstring": {}, "kind": {}, "_index": 1282}], ["googleapiclient.http.httpmock.headers", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.headers": {}}, "docstring": {}, "kind": {}, "_index": 1285}], ["googleapiclient.http.httpmock.method", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.method": {}}, "docstring": {}, "kind": {}, "_index": 1287}], ["googleapiclient.http.httpmock.request", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.request": {}}, "docstring": {}, "kind": {}, "_index": 1289}], ["googleapiclient.http.httpmock.response_headers", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.response_headers": {}}, "docstring": {}, "kind": {}, "_index": 1284}], ["googleapiclient.http.httpmock.uri", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMock.uri": {}}, "docstring": {}, "kind": {}, "_index": 1286}], ["googleapiclient.http.httpmocksequence", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMockSequence": {}}, "docstring": {}, "kind": {}, "_index": 1294}], ["googleapiclient.http.httpmocksequence.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMockSequence.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1311}], ["googleapiclient.http.httpmocksequence._iterable", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMockSequence._iterable": {}}, "docstring": {}, "kind": {}, "_index": 1315}], ["googleapiclient.http.httpmocksequence.follow_redirects", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMockSequence.follow_redirects": {}}, "docstring": {}, "kind": {}, "_index": 1318}], ["googleapiclient.http.httpmocksequence.request", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMockSequence.request": {}}, "docstring": {}, "kind": {}, "_index": 1321}], ["googleapiclient.http.httpmocksequence.request_sequence", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpMockSequence.request_sequence": {}}, "docstring": {}, "kind": {}, "_index": 1320}], ["googleapiclient.http.httprequest", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest": {}}, "docstring": {}, "kind": {}, "_index": 1094}], ["googleapiclient.http.httprequest,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1044}], ["googleapiclient.http.httprequest.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1095}], ["googleapiclient.http.httprequest._in_error_state", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest._in_error_state": {}}, "docstring": {}, "kind": {}, "_index": 1115}], ["googleapiclient.http.httprequest._process_response", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest._process_response": {}}, "docstring": {}, "kind": {}, "_index": 1142}], ["googleapiclient.http.httprequest._rand", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest._rand": {}}, "docstring": {}, "kind": {}, "_index": 1121}], ["googleapiclient.http.httprequest._sleep", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest._sleep": {}}, "docstring": {}, "kind": {}, "_index": 1122}], ["googleapiclient.http.httprequest.add_response_callback", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.add_response_callback": {}}, "docstring": {}, "kind": {}, "_index": 1127}], ["googleapiclient.http.httprequest.body", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.body": {}}, "docstring": {}, "kind": {}, "_index": 1105}], ["googleapiclient.http.httprequest.body_size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.body_size": {}}, "docstring": {}, "kind": {}, "_index": 1117}], ["googleapiclient.http.httprequest.execute", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.execute": {}}, "docstring": {}, "kind": {}, "_index": 1124}], ["googleapiclient.http.httprequest.from_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.from_json": {}}, "docstring": {}, "kind": {}, "_index": 1145}], ["googleapiclient.http.httprequest.headers", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.headers": {}}, "docstring": {}, "kind": {}, "_index": 1106}], ["googleapiclient.http.httprequest.http", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.http": {}}, "docstring": {}, "kind": {}, "_index": 1108}], ["googleapiclient.http.httprequest.method", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.method": {}}, "docstring": {}, "kind": {}, "_index": 1104}], ["googleapiclient.http.httprequest.methodid", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.methodId": {}}, "docstring": {}, "kind": {}, "_index": 1107}], ["googleapiclient.http.httprequest.next_chunk", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.next_chunk": {}}, "docstring": {}, "kind": {}, "_index": 1133}], ["googleapiclient.http.httprequest.null_postproc", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.null_postproc": {}}, "docstring": {}, "kind": {}, "_index": 1150}], ["googleapiclient.http.httprequest.postproc", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.postproc": {}}, "docstring": {}, "kind": {}, "_index": 1109}], ["googleapiclient.http.httprequest.response_callbacks", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.response_callbacks": {}}, "docstring": {}, "kind": {}, "_index": 1113}], ["googleapiclient.http.httprequest.resumable", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.resumable": {}}, "docstring": {}, "kind": {}, "_index": 1110}], ["googleapiclient.http.httprequest.resumable_progress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.resumable_progress": {}}, "docstring": {}, "kind": {}, "_index": 1120}], ["googleapiclient.http.httprequest.resumable_uri", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.resumable_uri": {}}, "docstring": {}, "kind": {}, "_index": 1119}], ["googleapiclient.http.httprequest.to_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.to_json": {}}, "docstring": {}, "kind": {}, "_index": 1144}], ["googleapiclient.http.httprequest.uri", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequest.uri": {}}, "docstring": {}, "kind": {}, "_index": 1103}], ["googleapiclient.http.httprequestmock", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequestMock": {}}, "docstring": {}, "kind": {}, "_index": 1233}], ["googleapiclient.http.httprequestmock.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequestMock.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1234}], ["googleapiclient.http.httprequestmock.content", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequestMock.content": {}}, "docstring": {}, "kind": {}, "_index": 1238}], ["googleapiclient.http.httprequestmock.execute", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequestMock.execute": {}}, "docstring": {}, "kind": {}, "_index": 1240}], ["googleapiclient.http.httprequestmock.postproc", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequestMock.postproc": {}}, "docstring": {}, "kind": {}, "_index": 1239}], ["googleapiclient.http.httprequestmock.resp", {"name": {}, "names": {}, "qname": {"googleapiclient.http.HttpRequestMock.resp": {}}, "docstring": {}, "kind": {}, "_index": 1237}], ["googleapiclient.http.logger", {"name": {}, "names": {}, "qname": {"googleapiclient.http.LOGGER": {}}, "docstring": {}, "kind": {}, "_index": 819}], ["googleapiclient.http.max_batch_limit", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MAX_BATCH_LIMIT": {}}, "docstring": {}, "kind": {}, "_index": 827}], ["googleapiclient.http.max_uri_length", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MAX_URI_LENGTH": {}}, "docstring": {}, "kind": {}, "_index": 825}], ["googleapiclient.http.mediadownloadprogress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaDownloadProgress": {}}, "docstring": {}, "kind": {}, "_index": 885}], ["googleapiclient.http.mediadownloadprogress.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaDownloadProgress.__init__": {}}, "docstring": {}, "kind": {}, "_index": 886}], ["googleapiclient.http.mediadownloadprogress.progress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaDownloadProgress.progress": {}}, "docstring": {}, "kind": {}, "_index": 889}], ["googleapiclient.http.mediadownloadprogress.resumable_progress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaDownloadProgress.resumable_progress": {}}, "docstring": {}, "kind": {}, "_index": 887}], ["googleapiclient.http.mediadownloadprogress.total_size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaDownloadProgress.total_size": {}}, "docstring": {}, "kind": {}, "_index": 888}], ["googleapiclient.http.mediafileupload", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaFileUpload": {}}, "docstring": {}, "kind": {}, "_index": 1002}], ["googleapiclient.http.mediafileupload.__del__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaFileUpload.__del__": {}}, "docstring": {}, "kind": {}, "_index": 1016}], ["googleapiclient.http.mediafileupload.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaFileUpload.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1006}], ["googleapiclient.http.mediafileupload._fd", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaFileUpload._fd": {}}, "docstring": {}, "kind": {}, "_index": 1010}], ["googleapiclient.http.mediafileupload._filename", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaFileUpload._filename": {}}, "docstring": {}, "kind": {}, "_index": 1013}], ["googleapiclient.http.mediafileupload.from_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaFileUpload.from_json": {}}, "docstring": {}, "kind": {}, "_index": 1018}], ["googleapiclient.http.mediafileupload.to_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaFileUpload.to_json": {}}, "docstring": {}, "kind": {}, "_index": 1017}], ["googleapiclient.http.mediainmemoryupload", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaInMemoryUpload": {}}, "docstring": {}, "kind": {}, "_index": 1023}], ["googleapiclient.http.mediainmemoryupload.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1027}], ["googleapiclient.http.mediaiobasedownload", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload": {}}, "docstring": {}, "kind": {}, "_index": 1030}], ["googleapiclient.http.mediaiobasedownload.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1043}], ["googleapiclient.http.mediaiobasedownload._chunksize", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._chunksize": {}}, "docstring": {}, "kind": {}, "_index": 1050}], ["googleapiclient.http.mediaiobasedownload._done", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._done": {}}, "docstring": {}, "kind": {}, "_index": 1056}], ["googleapiclient.http.mediaiobasedownload._fd", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._fd": {}}, "docstring": {}, "kind": {}, "_index": 1045}], ["googleapiclient.http.mediaiobasedownload._headers", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._headers": {}}, "docstring": {}, "kind": {}, "_index": 1062}], ["googleapiclient.http.mediaiobasedownload._progress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._progress": {}}, "docstring": {}, "kind": {}, "_index": 1052}], ["googleapiclient.http.mediaiobasedownload._rand", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._rand": {}}, "docstring": {}, "kind": {}, "_index": 1060}], ["googleapiclient.http.mediaiobasedownload._request", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._request": {}}, "docstring": {}, "kind": {}, "_index": 1047}], ["googleapiclient.http.mediaiobasedownload._sleep", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._sleep": {}}, "docstring": {}, "kind": {}, "_index": 1058}], ["googleapiclient.http.mediaiobasedownload._total_size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._total_size": {}}, "docstring": {}, "kind": {}, "_index": 1054}], ["googleapiclient.http.mediaiobasedownload._uri", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload._uri": {}}, "docstring": {}, "kind": {}, "_index": 1049}], ["googleapiclient.http.mediaiobasedownload.next_chunk", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}}, "docstring": {}, "kind": {}, "_index": 1064}], ["googleapiclient.http.mediaiobaseupload", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload": {}}, "docstring": {}, "kind": {}, "_index": 955}], ["googleapiclient.http.mediaiobaseupload.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}}, "docstring": {}, "kind": {}, "_index": 973}], ["googleapiclient.http.mediaiobaseupload._chunksize", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload._chunksize": {}}, "docstring": {}, "kind": {}, "_index": 987}], ["googleapiclient.http.mediaiobaseupload._fd", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload._fd": {}}, "docstring": {}, "kind": {}, "_index": 983}], ["googleapiclient.http.mediaiobaseupload._mimetype", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload._mimetype": {}}, "docstring": {}, "kind": {}, "_index": 985}], ["googleapiclient.http.mediaiobaseupload._resumable", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload._resumable": {}}, "docstring": {}, "kind": {}, "_index": 989}], ["googleapiclient.http.mediaiobaseupload._size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload._size": {}}, "docstring": {}, "kind": {}, "_index": 991}], ["googleapiclient.http.mediaiobaseupload.chunksize", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.chunksize": {}}, "docstring": {}, "kind": {}, "_index": 992}], ["googleapiclient.http.mediaiobaseupload.getbytes", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.getbytes": {}}, "docstring": {}, "kind": {}, "_index": 996}], ["googleapiclient.http.mediaiobaseupload.has_stream", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.has_stream": {}}, "docstring": {}, "kind": {}, "_index": 998}], ["googleapiclient.http.mediaiobaseupload.mimetype", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.mimetype": {}}, "docstring": {}, "kind": {}, "_index": 993}], ["googleapiclient.http.mediaiobaseupload.resumable", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.resumable": {}}, "docstring": {}, "kind": {}, "_index": 995}], ["googleapiclient.http.mediaiobaseupload.size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.size": {}}, "docstring": {}, "kind": {}, "_index": 994}], ["googleapiclient.http.mediaiobaseupload.stream", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.stream": {}}, "docstring": {}, "kind": {}, "_index": 999}], ["googleapiclient.http.mediaiobaseupload.to_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaIoBaseUpload.to_json": {}}, "docstring": {}, "kind": {}, "_index": 1000}], ["googleapiclient.http.mediaupload", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload": {}}, "docstring": {}, "kind": {}, "_index": 891}], ["googleapiclient.http.mediaupload._to_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload._to_json": {}}, "docstring": {}, "kind": {}, "_index": 943}], ["googleapiclient.http.mediaupload.chunksize", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.chunksize": {}}, "docstring": {}, "kind": {}, "_index": 922}], ["googleapiclient.http.mediaupload.getbytes", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.getbytes": {}}, "docstring": {}, "kind": {}, "_index": 928}], ["googleapiclient.http.mediaupload.has_stream", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.has_stream": {}}, "docstring": {}, "kind": {}, "_index": 935}], ["googleapiclient.http.mediaupload.mimetype", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.mimetype": {}}, "docstring": {}, "kind": {}, "_index": 924}], ["googleapiclient.http.mediaupload.new_from_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.new_from_json": {}}, "docstring": {}, "kind": {}, "_index": 951}], ["googleapiclient.http.mediaupload.resumable", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.resumable": {}}, "docstring": {}, "kind": {}, "_index": 926}], ["googleapiclient.http.mediaupload.size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.size": {}}, "docstring": {}, "kind": {}, "_index": 925}], ["googleapiclient.http.mediaupload.stream", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.stream": {}}, "docstring": {}, "kind": {}, "_index": 940}], ["googleapiclient.http.mediaupload.to_json", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUpload.to_json": {}}, "docstring": {}, "kind": {}, "_index": 949}], ["googleapiclient.http.mediauploadprogress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUploadProgress": {}}, "docstring": {}, "kind": {}, "_index": 866}], ["googleapiclient.http.mediauploadprogress.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUploadProgress.__init__": {}}, "docstring": {}, "kind": {}, "_index": 867}], ["googleapiclient.http.mediauploadprogress.progress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUploadProgress.progress": {}}, "docstring": {}, "kind": {}, "_index": 878}], ["googleapiclient.http.mediauploadprogress.resumable_progress", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUploadProgress.resumable_progress": {}}, "docstring": {}, "kind": {}, "_index": 875}], ["googleapiclient.http.mediauploadprogress.total_size", {"name": {}, "names": {}, "qname": {"googleapiclient.http.MediaUploadProgress.total_size": {}}, "docstring": {}, "kind": {}, "_index": 877}], ["googleapiclient.http.requestmockbuilder", {"name": {}, "names": {}, "qname": {"googleapiclient.http.RequestMockBuilder": {}}, "docstring": {}, "kind": {}, "_index": 1246}], ["googleapiclient.http.requestmockbuilder.__call__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.RequestMockBuilder.__call__": {}}, "docstring": {}, "kind": {}, "_index": 1275}], ["googleapiclient.http.requestmockbuilder.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.http.RequestMockBuilder.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1267}], ["googleapiclient.http.requestmockbuilder.check_unexpected", {"name": {}, "names": {}, "qname": {"googleapiclient.http.RequestMockBuilder.check_unexpected": {}}, "docstring": {}, "kind": {}, "_index": 1273}], ["googleapiclient.http.requestmockbuilder.responses", {"name": {}, "names": {}, "qname": {"googleapiclient.http.RequestMockBuilder.responses": {}}, "docstring": {}, "kind": {}, "_index": 1271}], ["googleapiclient.http.set_user_agent", {"name": {}, "names": {}, "qname": {"googleapiclient.http.set_user_agent": {}}, "docstring": {}, "kind": {}, "_index": 1324}], ["googleapiclient.http.tunnel_patch", {"name": {}, "names": {}, "qname": {"googleapiclient.http.tunnel_patch": {}}, "docstring": {}, "kind": {}, "_index": 1337}], ["googleapiclient.httprequest", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1666}], ["googleapiclient.mimeparse", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse": {}}, "docstring": {}, "kind": {}, "_index": 154}], ["googleapiclient.mimeparse.__author__", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.__author__": {}}, "docstring": {}, "kind": {}, "_index": 623}], ["googleapiclient.mimeparse.__credits__", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.__credits__": {}}, "docstring": {}, "kind": {}, "_index": 632}], ["googleapiclient.mimeparse.__email__", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.__email__": {}}, "docstring": {}, "kind": {}, "_index": 626}], ["googleapiclient.mimeparse.__license__", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.__license__": {}}, "docstring": {}, "kind": {}, "_index": 629}], ["googleapiclient.mimeparse.__version__", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.__version__": {}}, "docstring": {}, "kind": {}, "_index": 622}], ["googleapiclient.mimeparse._filter_blank", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse._filter_blank": {}}, "docstring": {}, "kind": {}, "_index": 690}], ["googleapiclient.mimeparse.best_match", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.best_match": {}}, "docstring": {}, "kind": {}, "_index": 675}], ["googleapiclient.mimeparse.fitness_and_quality_parsed", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}}, "docstring": {}, "kind": {}, "_index": 653}], ["googleapiclient.mimeparse.parse_media_range", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.parse_media_range": {}}, "docstring": {}, "kind": {}, "_index": 643}], ["googleapiclient.mimeparse.parse_mime_type", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.parse_mime_type": {}}, "docstring": {}, "kind": {}, "_index": 634}], ["googleapiclient.mimeparse.quality", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.quality": {}}, "docstring": {}, "kind": {}, "_index": 667}], ["googleapiclient.mimeparse.quality_parsed", {"name": {}, "names": {}, "qname": {"googleapiclient.mimeparse.quality_parsed": {}}, "docstring": {}, "kind": {}, "_index": 665}], ["googleapiclient.model", {"name": {}, "names": {}, "qname": {"googleapiclient.model": {}}, "docstring": {}, "kind": {}, "_index": 194}], ["googleapiclient.model,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1495}], ["googleapiclient.model.__author__", {"name": {}, "names": {}, "qname": {"googleapiclient.model.__author__": {}}, "docstring": {}, "kind": {}, "_index": 692}], ["googleapiclient.model._abstract", {"name": {}, "names": {}, "qname": {"googleapiclient.model._abstract": {}}, "docstring": {}, "kind": {}, "_index": 703}], ["googleapiclient.model._py_version", {"name": {}, "names": {}, "qname": {"googleapiclient.model._PY_VERSION": {}}, "docstring": {}, "kind": {}, "_index": 696}], ["googleapiclient.model.basemodel", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel": {}}, "docstring": {}, "kind": {}, "_index": 720}], ["googleapiclient.model.basemodel._build_query", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel._build_query": {}}, "docstring": {}, "kind": {}, "_index": 741}], ["googleapiclient.model.basemodel._log_request", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel._log_request": {}}, "docstring": {}, "kind": {}, "_index": 737}], ["googleapiclient.model.basemodel._log_response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel._log_response": {}}, "docstring": {}, "kind": {}, "_index": 744}], ["googleapiclient.model.basemodel.accept", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.accept": {}}, "docstring": {}, "kind": {}, "_index": 729}], ["googleapiclient.model.basemodel.alt_param", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.alt_param": {}}, "docstring": {}, "kind": {}, "_index": 735}], ["googleapiclient.model.basemodel.content_type", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.content_type": {}}, "docstring": {}, "kind": {}, "_index": 731}], ["googleapiclient.model.basemodel.deserialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.deserialize": {}}, "docstring": {}, "kind": {}, "_index": 751}], ["googleapiclient.model.basemodel.no_content_response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.no_content_response": {}}, "docstring": {}, "kind": {}, "_index": 734}], ["googleapiclient.model.basemodel.request", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.request": {}}, "docstring": {}, "kind": {}, "_index": 739}], ["googleapiclient.model.basemodel.response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.response": {}}, "docstring": {}, "kind": {}, "_index": 745}], ["googleapiclient.model.basemodel.serialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.BaseModel.serialize": {}}, "docstring": {}, "kind": {}, "_index": 747}], ["googleapiclient.model.dump_request_response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.dump_request_response": {}}, "docstring": {}, "kind": {}, "_index": 701}], ["googleapiclient.model.jsonmodel", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel": {}}, "docstring": {}, "kind": {}, "_index": 753}], ["googleapiclient.model.jsonmodel.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel.__init__": {}}, "docstring": {}, "kind": {}, "_index": 757}], ["googleapiclient.model.jsonmodel._data_wrapper", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel._data_wrapper": {}}, "docstring": {}, "kind": {}, "_index": 763}], ["googleapiclient.model.jsonmodel.accept", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel.accept": {}}, "docstring": {}, "kind": {}, "_index": 754}], ["googleapiclient.model.jsonmodel.alt_param", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel.alt_param": {}}, "docstring": {}, "kind": {}, "_index": 756}], ["googleapiclient.model.jsonmodel.content_type", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel.content_type": {}}, "docstring": {}, "kind": {}, "_index": 755}], ["googleapiclient.model.jsonmodel.deserialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel.deserialize": {}}, "docstring": {}, "kind": {}, "_index": 765}], ["googleapiclient.model.jsonmodel.no_content_response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel.no_content_response": {}}, "docstring": {}, "kind": {}, "_index": 766}], ["googleapiclient.model.jsonmodel.serialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.JsonModel.serialize": {}}, "docstring": {}, "kind": {}, "_index": 764}], ["googleapiclient.model.logger", {"name": {}, "names": {}, "qname": {"googleapiclient.model.LOGGER": {}}, "docstring": {}, "kind": {}, "_index": 697}], ["googleapiclient.model.makepatch", {"name": {}, "names": {}, "qname": {"googleapiclient.model.makepatch": {}}, "docstring": {}, "kind": {}, "_index": 800}], ["googleapiclient.model.mediamodel", {"name": {}, "names": {}, "qname": {"googleapiclient.model.MediaModel": {}}, "docstring": {}, "kind": {}, "_index": 778}], ["googleapiclient.model.mediamodel.accept", {"name": {}, "names": {}, "qname": {"googleapiclient.model.MediaModel.accept": {}}, "docstring": {}, "kind": {}, "_index": 779}], ["googleapiclient.model.mediamodel.alt_param", {"name": {}, "names": {}, "qname": {"googleapiclient.model.MediaModel.alt_param": {}}, "docstring": {}, "kind": {}, "_index": 781}], ["googleapiclient.model.mediamodel.content_type", {"name": {}, "names": {}, "qname": {"googleapiclient.model.MediaModel.content_type": {}}, "docstring": {}, "kind": {}, "_index": 780}], ["googleapiclient.model.mediamodel.deserialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.MediaModel.deserialize": {}}, "docstring": {}, "kind": {}, "_index": 782}], ["googleapiclient.model.mediamodel.no_content_response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.MediaModel.no_content_response": {}}, "docstring": {}, "kind": {}, "_index": 783}], ["googleapiclient.model.model", {"name": {}, "names": {}, "qname": {"googleapiclient.model.Model": {}}, "docstring": {}, "kind": {}, "_index": 704}], ["googleapiclient.model.model.request", {"name": {}, "names": {}, "qname": {"googleapiclient.model.Model.request": {}}, "docstring": {}, "kind": {}, "_index": 707}], ["googleapiclient.model.model.response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.Model.response": {}}, "docstring": {}, "kind": {}, "_index": 715}], ["googleapiclient.model.protocolbuffermodel", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel": {}}, "docstring": {}, "kind": {}, "_index": 787}], ["googleapiclient.model.protocolbuffermodel.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel.__init__": {}}, "docstring": {}, "kind": {}, "_index": 792}], ["googleapiclient.model.protocolbuffermodel._protocol_buffer", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel._protocol_buffer": {}}, "docstring": {}, "kind": {}, "_index": 795}], ["googleapiclient.model.protocolbuffermodel.accept", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel.accept": {}}, "docstring": {}, "kind": {}, "_index": 789}], ["googleapiclient.model.protocolbuffermodel.alt_param", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel.alt_param": {}}, "docstring": {}, "kind": {}, "_index": 791}], ["googleapiclient.model.protocolbuffermodel.content_type", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel.content_type": {}}, "docstring": {}, "kind": {}, "_index": 790}], ["googleapiclient.model.protocolbuffermodel.deserialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel.deserialize": {}}, "docstring": {}, "kind": {}, "_index": 797}], ["googleapiclient.model.protocolbuffermodel.no_content_response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel.no_content_response": {}}, "docstring": {}, "kind": {}, "_index": 798}], ["googleapiclient.model.protocolbuffermodel.serialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.ProtocolBufferModel.serialize": {}}, "docstring": {}, "kind": {}, "_index": 796}], ["googleapiclient.model.rawmodel", {"name": {}, "names": {}, "qname": {"googleapiclient.model.RawModel": {}}, "docstring": {}, "kind": {}, "_index": 769}], ["googleapiclient.model.rawmodel.accept", {"name": {}, "names": {}, "qname": {"googleapiclient.model.RawModel.accept": {}}, "docstring": {}, "kind": {}, "_index": 772}], ["googleapiclient.model.rawmodel.alt_param", {"name": {}, "names": {}, "qname": {"googleapiclient.model.RawModel.alt_param": {}}, "docstring": {}, "kind": {}, "_index": 774}], ["googleapiclient.model.rawmodel.content_type", {"name": {}, "names": {}, "qname": {"googleapiclient.model.RawModel.content_type": {}}, "docstring": {}, "kind": {}, "_index": 773}], ["googleapiclient.model.rawmodel.deserialize", {"name": {}, "names": {}, "qname": {"googleapiclient.model.RawModel.deserialize": {}}, "docstring": {}, "kind": {}, "_index": 775}], ["googleapiclient.model.rawmodel.no_content_response", {"name": {}, "names": {}, "qname": {"googleapiclient.model.RawModel.no_content_response": {}}, "docstring": {}, "kind": {}, "_index": 776}], ["googleapiclient.sample_tools", {"name": {}, "names": {}, "qname": {"googleapiclient.sample_tools": {}}, "docstring": {}, "kind": {}, "_index": 212}], ["googleapiclient.sample_tools.__author__", {"name": {}, "names": {}, "qname": {"googleapiclient.sample_tools.__author__": {}}, "docstring": {}, "kind": {}, "_index": 1793}], ["googleapiclient.sample_tools.init", {"name": {}, "names": {}, "qname": {"googleapiclient.sample_tools.init": {}}, "docstring": {}, "kind": {}, "_index": 1794}], ["googleapiclient.schema", {"name": {}, "names": {}, "qname": {"googleapiclient.schema": {}}, "docstring": {}, "kind": {}, "_index": 220}], ["googleapiclient.schema.__author__", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.__author__": {}}, "docstring": {}, "kind": {}, "_index": 1348}], ["googleapiclient.schema._schematostruct", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct": {}}, "docstring": {}, "kind": {}, "_index": 1373}], ["googleapiclient.schema._schematostruct.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1374}], ["googleapiclient.schema._schematostruct._to_str_impl", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct._to_str_impl": {}}, "docstring": {}, "kind": {}, "_index": 1402}], ["googleapiclient.schema._schematostruct.dent", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.dent": {}}, "docstring": {}, "kind": {}, "_index": 1382}], ["googleapiclient.schema._schematostruct.emit", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.emit": {}}, "docstring": {}, "kind": {}, "_index": 1387}], ["googleapiclient.schema._schematostruct.emitbegin", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.emitBegin": {}}, "docstring": {}, "kind": {}, "_index": 1391}], ["googleapiclient.schema._schematostruct.emitend", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.emitEnd": {}}, "docstring": {}, "kind": {}, "_index": 1394}], ["googleapiclient.schema._schematostruct.from_cache", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.from_cache": {}}, "docstring": {}, "kind": {}, "_index": 1384}], ["googleapiclient.schema._schematostruct.indent", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.indent": {}}, "docstring": {}, "kind": {}, "_index": 1395}], ["googleapiclient.schema._schematostruct.schema", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.schema": {}}, "docstring": {}, "kind": {}, "_index": 1381}], ["googleapiclient.schema._schematostruct.seen", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.seen": {}}, "docstring": {}, "kind": {}, "_index": 1385}], ["googleapiclient.schema._schematostruct.string", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.string": {}}, "docstring": {}, "kind": {}, "_index": 1380}], ["googleapiclient.schema._schematostruct.to_str", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.to_str": {}}, "docstring": {}, "kind": {}, "_index": 1404}], ["googleapiclient.schema._schematostruct.undent", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.undent": {}}, "docstring": {}, "kind": {}, "_index": 1398}], ["googleapiclient.schema._schematostruct.value", {"name": {}, "names": {}, "qname": {"googleapiclient.schema._SchemaToStruct.value": {}}, "docstring": {}, "kind": {}, "_index": 1379}], ["googleapiclient.schema.schemas", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas": {}}, "docstring": {}, "kind": {}, "_index": 1350}], ["googleapiclient.schema.schemas.__init__", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas.__init__": {}}, "docstring": {}, "kind": {}, "_index": 1351}], ["googleapiclient.schema.schemas._prettyprintbyname", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas._prettyPrintByName": {}}, "docstring": {}, "kind": {}, "_index": 1359}], ["googleapiclient.schema.schemas._prettyprintschema", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas._prettyPrintSchema": {}}, "docstring": {}, "kind": {}, "_index": 1367}], ["googleapiclient.schema.schemas.get", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas.get": {}}, "docstring": {}, "kind": {}, "_index": 1370}], ["googleapiclient.schema.schemas.pretty", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas.pretty": {}}, "docstring": {}, "kind": {}, "_index": 1356}], ["googleapiclient.schema.schemas.prettyprintbyname", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas.prettyPrintByName": {}}, "docstring": {}, "kind": {}, "_index": 1365}], ["googleapiclient.schema.schemas.prettyprintschema", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas.prettyPrintSchema": {}}, "docstring": {}, "kind": {}, "_index": 1369}], ["googleapiclient.schema.schemas.schemas", {"name": {}, "names": {}, "qname": {"googleapiclient.schema.Schemas.schemas": {}}, "docstring": {}, "kind": {}, "_index": 1354}], ["googleapiclient.version", {"name": {}, "names": {}, "qname": {"googleapiclient.version": {}}, "docstring": {}, "kind": {}, "_index": 263}], ["googleapiclient.version.__version__", {"name": {}, "names": {}, "qname": {"googleapiclient.version.__version__": {}}, "docstring": {}, "kind": {}, "_index": 693}], ["guarante", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 80}], ["guess", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaFileUpload.__init__": {}}, "kind": {}, "_index": 1008}], ["h", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1327}], ["handl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.mimeparse": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}}, "kind": {}, "_index": 98}], ["happen", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1602}], ["hardcod", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 902}], ["has", {"name": {}, "names": {"googleapiclient._auth.HAS_GOOGLE_AUTH": {}, "googleapiclient._auth.HAS_OAUTH2CLIENT": {}, "googleapiclient.discovery.HAS_UNIVERSE": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 265}], ["has_google_auth", {"name": {"googleapiclient._auth.HAS_GOOGLE_AUTH": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 264}], ["has_oauth2client", {"name": {"googleapiclient._auth.HAS_OAUTH2CLIENT": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 269}], ["has_stream", {"name": {"googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 912}], ["has_universe", {"name": {"googleapiclient.discovery.HAS_UNIVERSE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 618}], ["header", {"name": {}, "names": {"googleapiclient.channel._upper_header_keys": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.HttpMockSequence.__init__": {}, "googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 75}], ["headers", {"name": {"googleapiclient.http.HttpRequest.headers": {}, "googleapiclient.http.HttpMock.headers": {}}, "names": {"googleapiclient.channel.notification_from_headers": {}, "googleapiclient.http.MediaIoBaseDownload._headers": {}, "googleapiclient.http.HttpRequest.headers": {}, "googleapiclient.http.HttpMock.response_headers": {}, "googleapiclient.http.HttpMock.headers": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 600}], ["help", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1306}], ["helper", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth": {}, "googleapiclient._helpers": {}, "googleapiclient.channel.Channel": {}}, "kind": {}, "_index": 5}], ["helpers", {"name": {}, "names": {"googleapiclient._helpers": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 12}], ["here", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 94}], ["highest", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 191}], ["hold", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 221}], ["http", {"name": {"googleapiclient.http": {}, "googleapiclient.http.HttpRequest.http": {}}, "names": {"googleapiclient.http": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient._auth.get_credentials_from_http": {}, "googleapiclient.errors.HttpError": {}, "googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC": {}, "googleapiclient.http.HttpRequest": {}, "googleapiclient.http.HttpRequest.http": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.HttpMock": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.HTTP_PAYLOAD_METHODS": {}, "googleapiclient.discovery.Resource._http": {}}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.mimeparse": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient.errors.HttpError": {}, "googleapiclient.errors.HttpError.status_code": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.HttpRequest": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.execute": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 144}], ["http.request(\"http://examples.com\")", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1302}], ["http.request.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 863}], ["http://tools.ietf.org/html/draft", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._cast": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1557}], ["http://www.w3.org/protocols/rfc2616/rfc2616", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 173}], ["http_method", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1584}], ["http_payload_methods", {"name": {"googleapiclient.discovery.HTTP_PAYLOAD_METHODS": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1420}], ["httperror", {"name": {"googleapiclient.errors.HttpError": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 437}], ["httplib", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 914}], ["httplib2", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.discovery.Resource.close": {}}, "kind": {}, "_index": 1211}], ["httplib2.http", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMock": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1280}], ["httplib2.http()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1328}], ["httplib2.http,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1096}], ["httplib2.httplib2error", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 1073}], ["httplib2.request.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._deserialize_response": {}}, "kind": {}, "_index": 1213}], ["httplib2.respons", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.add_response_callback": {}}, "kind": {}, "_index": 1132}], ["httplib2.response,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 716}], ["httpmock", {"name": {"googleapiclient.http.HttpMock": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1278}], ["httpmocksequ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1296}], ["httpmocksequence", {"name": {"googleapiclient.http.HttpMockSequence": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1292}], ["httprequest", {"name": {"googleapiclient.http.HttpRequest": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest.to_json": {}, "googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1093}], ["httprequest.execute(),", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequestMock.execute": {}}, "kind": {}, "_index": 1241}], ["httprequest.execute().", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder.__call__": {}}, "kind": {}, "_index": 1277}], ["httprequestmock", {"name": {"googleapiclient.http.HttpRequestMock": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequestMock.__init__": {}}, "kind": {}, "_index": 1231}], ["httprespons", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 1268}], ["https://code.google.com/apis/consol", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1667}], ["https://code.google.com/apis/console.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1494}], ["https://google.aip.dev/auth/4114", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1508}], ["i.e.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 938}], ["id", {"name": {"googleapiclient.channel.Channel.id": {}}, "names": {"googleapiclient.channel.X_GOOG_CHANNEL_ID": {}, "googleapiclient.channel.X_GOOG_RESOURCE_ID": {}, "googleapiclient.channel.Notification.resource_id": {}, "googleapiclient.channel.Channel.id": {}, "googleapiclient.channel.Channel.resource_id": {}, "googleapiclient.http.HttpRequest.methodId": {}, "googleapiclient.http.BatchHttpRequest._last_auto_id": {}, "googleapiclient.http.BatchHttpRequest._base_id": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 32}], ["id='cow',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 963}], ["id_", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "kind": {}, "_index": 1196}], ["identifi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "kind": {}, "_index": 548}], ["idiom", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1797}], ["iff", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 1742}], ["ignore", {"name": {}, "names": {"googleapiclient._helpers.POSITIONAL_IGNORE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 320}], ["imag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 1004}], ["impl", {"name": {}, "names": {"googleapiclient.schema._SchemaToStruct._to_str_impl": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1401}], ["implement", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.http": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}}, "kind": {}, "_index": 72}], ["import", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 893}], ["in", {"name": {}, "names": {"googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.HttpRequest._in_error_state": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1021}], ["includ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 86}], ["increas", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}, "googleapiclient.schema._SchemaToStruct.indent": {}}, "kind": {}, "_index": 678}], ["increment", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._new_id": {}}, "kind": {}, "_index": 1216}], ["indent", {"name": {"googleapiclient.schema._SchemaToStruct.indent": {}}, "names": {"googleapiclient.schema._SchemaToStruct.indent": {}}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.indent": {}, "googleapiclient.schema._SchemaToStruct.undent": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1376}], ["index", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 395}], ["indic", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 909}], ["individu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 901}], ["inequ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1252}], ["influenc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 897}], ["info", {"name": {}, "names": {"googleapiclient.discovery._media_path_url_from_info": {}}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.from_json": {}}, "kind": {}, "_index": 1147}], ["inform", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.update": {}, "googleapiclient.model.BaseModel._log_request": {}, "googleapiclient.model.BaseModel._log_response": {}}, "kind": {}, "_index": 597}], ["init", {"name": {"googleapiclient.sample_tools.init": {}}, "names": {"googleapiclient.errors.HttpError.__init__": {}, "googleapiclient.errors.BatchError.__init__": {}, "googleapiclient.errors.UnexpectedMethodError.__init__": {}, "googleapiclient.errors.UnexpectedBodyError.__init__": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.HttpMockSequence.__init__": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.discovery.APICoreVersionError.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}, "googleapiclient.sample_tools.init": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 442}], ["initi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 137}], ["initialize", {"name": {}, "names": {"googleapiclient.discovery_cache.file_cache._read_or_initialize_cache": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1784}], ["insensit", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 77}], ["instanc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 369}], ["instance", {"name": {}, "names": {}, "qname": {}, "docstring": {}, "kind": {"googleapiclient.errors.HttpError.resp": {}, "googleapiclient.errors.HttpError.content": {}, "googleapiclient.errors.HttpError.uri": {}, "googleapiclient.errors.HttpError.error_details": {}, "googleapiclient.errors.HttpError.reason": {}, "googleapiclient.errors.BatchError.resp": {}, "googleapiclient.errors.BatchError.content": {}, "googleapiclient.errors.BatchError.reason": {}, "googleapiclient.channel.Notification.message_number": {}, "googleapiclient.channel.Notification.state": {}, "googleapiclient.channel.Notification.resource_uri": {}, "googleapiclient.channel.Notification.resource_id": {}, "googleapiclient.channel.Channel.type": {}, "googleapiclient.channel.Channel.id": {}, "googleapiclient.channel.Channel.token": {}, "googleapiclient.channel.Channel.address": {}, "googleapiclient.channel.Channel.expiration": {}, "googleapiclient.channel.Channel.params": {}, "googleapiclient.channel.Channel.resource_id": {}, "googleapiclient.channel.Channel.resource_uri": {}, "googleapiclient.model.JsonModel._data_wrapper": {}, "googleapiclient.model.ProtocolBufferModel._protocol_buffer": {}, "googleapiclient.http.MediaUploadProgress.resumable_progress": {}, "googleapiclient.http.MediaUploadProgress.total_size": {}, "googleapiclient.http.MediaDownloadProgress.resumable_progress": {}, "googleapiclient.http.MediaDownloadProgress.total_size": {}, "googleapiclient.http.MediaIoBaseUpload._fd": {}, "googleapiclient.http.MediaIoBaseUpload._mimetype": {}, "googleapiclient.http.MediaIoBaseUpload._chunksize": {}, "googleapiclient.http.MediaIoBaseUpload._resumable": {}, "googleapiclient.http.MediaIoBaseUpload._size": {}, "googleapiclient.http.MediaFileUpload._fd": {}, "googleapiclient.http.MediaFileUpload._filename": {}, "googleapiclient.http.MediaIoBaseDownload._fd": {}, "googleapiclient.http.MediaIoBaseDownload._request": {}, "googleapiclient.http.MediaIoBaseDownload._uri": {}, "googleapiclient.http.MediaIoBaseDownload._chunksize": {}, "googleapiclient.http.MediaIoBaseDownload._progress": {}, "googleapiclient.http.MediaIoBaseDownload._total_size": {}, "googleapiclient.http.MediaIoBaseDownload._done": {}, "googleapiclient.http.MediaIoBaseDownload._sleep": {}, "googleapiclient.http.MediaIoBaseDownload._rand": {}, "googleapiclient.http.MediaIoBaseDownload._headers": {}, "googleapiclient.http._StreamSlice._stream": {}, "googleapiclient.http._StreamSlice._begin": {}, "googleapiclient.http._StreamSlice._chunksize": {}, "googleapiclient.http.HttpRequest.uri": {}, "googleapiclient.http.HttpRequest.method": {}, "googleapiclient.http.HttpRequest.body": {}, "googleapiclient.http.HttpRequest.headers": {}, "googleapiclient.http.HttpRequest.methodId": {}, "googleapiclient.http.HttpRequest.http": {}, "googleapiclient.http.HttpRequest.postproc": {}, "googleapiclient.http.HttpRequest.resumable": {}, "googleapiclient.http.HttpRequest.response_callbacks": {}, "googleapiclient.http.HttpRequest._in_error_state": {}, "googleapiclient.http.HttpRequest.body_size": {}, "googleapiclient.http.HttpRequest.resumable_uri": {}, "googleapiclient.http.HttpRequest.resumable_progress": {}, "googleapiclient.http.HttpRequest._rand": {}, "googleapiclient.http.HttpRequest._sleep": {}, "googleapiclient.http.BatchHttpRequest._batch_uri": {}, "googleapiclient.http.BatchHttpRequest._callback": {}, "googleapiclient.http.BatchHttpRequest._requests": {}, "googleapiclient.http.BatchHttpRequest._callbacks": {}, "googleapiclient.http.BatchHttpRequest._order": {}, "googleapiclient.http.BatchHttpRequest._last_auto_id": {}, "googleapiclient.http.BatchHttpRequest._base_id": {}, "googleapiclient.http.BatchHttpRequest._responses": {}, "googleapiclient.http.BatchHttpRequest._refreshed_credentials": {}, "googleapiclient.http.HttpRequestMock.resp": {}, "googleapiclient.http.HttpRequestMock.content": {}, "googleapiclient.http.HttpRequestMock.postproc": {}, "googleapiclient.http.RequestMockBuilder.responses": {}, "googleapiclient.http.RequestMockBuilder.check_unexpected": {}, "googleapiclient.http.HttpMock.data": {}, "googleapiclient.http.HttpMock.response_headers": {}, "googleapiclient.http.HttpMock.headers": {}, "googleapiclient.http.HttpMock.uri": {}, "googleapiclient.http.HttpMock.method": {}, "googleapiclient.http.HttpMock.body": {}, "googleapiclient.http.HttpMockSequence._iterable": {}, "googleapiclient.http.HttpMockSequence.follow_redirects": {}, "googleapiclient.http.HttpMockSequence.request_sequence": {}, "googleapiclient.schema.Schemas.schemas": {}, "googleapiclient.schema.Schemas.pretty": {}, "googleapiclient.schema._SchemaToStruct.value": {}, "googleapiclient.schema._SchemaToStruct.string": {}, "googleapiclient.schema._SchemaToStruct.schema": {}, "googleapiclient.schema._SchemaToStruct.dent": {}, "googleapiclient.schema._SchemaToStruct.from_cache": {}, "googleapiclient.schema._SchemaToStruct.seen": {}, "googleapiclient.discovery.ResourceMethodParameters.argmap": {}, "googleapiclient.discovery.ResourceMethodParameters.required_params": {}, "googleapiclient.discovery.ResourceMethodParameters.repeated_params": {}, "googleapiclient.discovery.ResourceMethodParameters.pattern_params": {}, "googleapiclient.discovery.ResourceMethodParameters.query_params": {}, "googleapiclient.discovery.ResourceMethodParameters.path_params": {}, "googleapiclient.discovery.ResourceMethodParameters.param_types": {}, "googleapiclient.discovery.ResourceMethodParameters.enum_params": {}, "googleapiclient.discovery.Resource._dynamic_attrs": {}, "googleapiclient.discovery.Resource._http": {}, "googleapiclient.discovery.Resource._baseUrl": {}, "googleapiclient.discovery.Resource._model": {}, "googleapiclient.discovery.Resource._developerKey": {}, "googleapiclient.discovery.Resource._requestBuilder": {}, "googleapiclient.discovery.Resource._resourceDesc": {}, "googleapiclient.discovery.Resource._rootDesc": {}, "googleapiclient.discovery.Resource._schema": {}, "googleapiclient.discovery.Resource._universe_domain": {}, "googleapiclient.discovery.Resource._credentials_validated": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache._max_age": {}, "googleapiclient.discovery_cache.file_cache.Cache._max_age": {}, "googleapiclient.discovery_cache.file_cache.Cache._file": {}}, "_index": 445}], ["instanti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 952}], ["instead", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 558}], ["int", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}}, "kind": {}, "_index": 543}], ["int(status.progress()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1040}], ["integ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1065}], ["interact", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.build_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource": {}}, "kind": {}, "_index": 1347}], ["interfac", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}}, "kind": {}, "_index": 705}], ["intermittent/connect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1517}], ["internet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1537}], ["interpret", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._cast": {}}, "kind": {}, "_index": 1561}], ["invalid", {"name": {}, "names": {"googleapiclient.errors.InvalidJsonError": {}, "googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.errors.InvalidNotificationError": {}}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.errors.HttpError": {}, "googleapiclient.errors.InvalidNotificationError": {}, "googleapiclient.channel.notification_from_headers": {}}, "kind": {}, "_index": 421}], ["invalidchunksizeerror", {"name": {"googleapiclient.errors.InvalidChunkSizeError": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 491}], ["invalidjsonerror", {"name": {"googleapiclient.errors.InvalidJsonError": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 464}], ["invalidnotificationerror", {"name": {"googleapiclient.errors.InvalidNotificationError": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 495}], ["io", {"name": {}, "names": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 954}], ["io.bas", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}}, "kind": {}, "_index": 906}], ["io.fileio('cow.png',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}}, "kind": {}, "_index": 1032}], ["io.iobas", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}}, "kind": {}, "_index": 937}], ["io.stringio", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 1026}], ["io.textiobas", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 1025}], ["is", {"name": {}, "names": {"googleapiclient._auth.is_valid": {}, "googleapiclient._helpers._IS_DIR_MESSAGE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 305}], ["is_valid", {"name": {"googleapiclient._auth.is_valid": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 304}], ["isn't", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 872}], ["ispagetokenparamet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1662}], ["issu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1518}], ["it'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1224}], ["item", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 810}], ["item)).execute()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 818}], ["item['object']['content']", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 814}], ["iter", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1312}], ["iterable", {"name": {}, "names": {"googleapiclient.http.HttpMockSequence._iterable": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1314}], ["json", {"name": {}, "names": {"googleapiclient.errors.InvalidJsonError": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.from_json": {}, "googleapiclient.http.HttpRequest.to_json": {}, "googleapiclient.http.HttpRequest.from_json": {}}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.schema": {}, "googleapiclient.errors.InvalidJsonError": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.HttpRequest.to_json": {}, "googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 201}], ["jsonmodel", {"name": {"googleapiclient.model.JsonModel": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.JsonModel.__init__": {}}, "kind": {}, "_index": 752}], ["jwt", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1522}], ["keep", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 894}], ["kei", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "kind": {}, "_index": 50}], ["key", {"name": {}, "names": {"googleapiclient.discovery.Resource._developerKey": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1684}], ["key2param", {"name": {"googleapiclient.discovery.key2param": {}}, "names": {"googleapiclient.discovery.key2param": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1477}], ["keyerror", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1226}], ["keys", {"name": {}, "names": {"googleapiclient.channel._upper_header_keys": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 534}], ["keyword", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 344}], ["kind", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 237}], ["known", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}}, "kind": {}, "_index": 873}], ["kw1", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 354}], ["kw2", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 355}], ["kwarg", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 862}], ["kwonly1='kw1')", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 357}], ["kwonly1=none):", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 378}], ["kwonly1=none,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 350}], ["kwonly2=none):", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 351}], ["larg", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 895}], ["larger", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}}, "kind": {}, "_index": 484}], ["last", {"name": {}, "names": {"googleapiclient.http.BatchHttpRequest._last_auto_id": {}}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 613}], ["later", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 916}], ["legacy", {"name": {}, "names": {"googleapiclient.http._LEGACY_BATCH_URI": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 838}], ["length", {"name": {}, "names": {"googleapiclient.http.MAX_URI_LENGTH": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http._StreamSlice.read": {}}, "kind": {}, "_index": 824}], ["less", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http._StreamSlice.read": {}}, "kind": {}, "_index": 917}], ["level", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.indent": {}, "googleapiclient.schema._SchemaToStruct.undent": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 1396}], ["librari", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery": {}, "googleapiclient.errors": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 109}], ["license", {"name": {}, "names": {"googleapiclient.mimeparse.__license__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 628}], ["limit", {"name": {}, "names": {"googleapiclient.http.MAX_BATCH_LIMIT": {}}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}}, "kind": {}, "_index": 611}], ["line", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1389}], ["link", {"name": {}, "names": {"googleapiclient._helpers._SYM_LINK_MESSAGE": {}, "googleapiclient.errors.UnknownLinkType": {}}, "qname": {}, "docstring": {"googleapiclient.errors.UnknownLinkType": {}}, "kind": {}, "_index": 326}], ["list", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient._auth.with_scopes": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 163}], ["list_anim", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1161}], ["list_animals(request_id,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1153}], ["list_farm", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1163}], ["list_farmers(request_id,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1156}], ["load", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.credentials_from_file": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 276}], ["local", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1596}], ["locat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1489}], ["lock", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}}, "kind": {}, "_index": 132}], ["log", {"name": {}, "names": {"googleapiclient.model.BaseModel._log_request": {}, "googleapiclient.model.BaseModel._log_response": {}}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.model.BaseModel._log_request": {}, "googleapiclient.model.BaseModel._log_response": {}, "googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 387}], ["logger", {"name": {"googleapiclient._helpers.logger": {}, "googleapiclient.model.LOGGER": {}, "googleapiclient.http.LOGGER": {}, "googleapiclient.discovery.logger": {}, "googleapiclient.discovery_cache.LOGGER": {}, "googleapiclient.discovery_cache.appengine_memcache.LOGGER": {}, "googleapiclient.discovery_cache.file_cache.LOGGER": {}}, "names": {"googleapiclient._helpers.logger": {}, "googleapiclient.model.LOGGER": {}, "googleapiclient.http.LOGGER": {}, "googleapiclient.discovery.logger": {}, "googleapiclient.discovery_cache.LOGGER": {}, "googleapiclient.discovery_cache.appengine_memcache.LOGGER": {}, "googleapiclient.discovery_cache.file_cache.LOGGER": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 309}], ["long", {"name": {}, "names": {"googleapiclient.discovery._media_size_to_long": {}}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 612}], ["longer", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1548}], ["look", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 260}], ["lot", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools": {}}, "kind": {}, "_index": 216}], ["made", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1484}], ["main", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1801}], ["make", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 213}], ["makepatch", {"name": {"googleapiclient.model.makepatch": {}}, "names": {"googleapiclient.model.makepatch": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 799}], ["mani", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 979}], ["manual", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 581}], ["many", {"name": {}, "names": {"googleapiclient.http._TOO_MANY_REQUESTS": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 830}], ["map", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 1248}], ["match", {"name": {}, "names": {"googleapiclient.mimeparse.best_match": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 161}], ["max", {"name": {}, "names": {"googleapiclient.http.MAX_URI_LENGTH": {}, "googleapiclient.http.MAX_BATCH_LIMIT": {}, "googleapiclient.discovery_cache.DISCOVERY_DOC_MAX_AGE": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache._max_age": {}, "googleapiclient.discovery_cache.file_cache.Cache._max_age": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.key2param": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 823}], ["max_ag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}}, "kind": {}, "_index": 1772}], ["max_batch_limit", {"name": {"googleapiclient.http.MAX_BATCH_LIMIT": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 826}], ["max_positional_arg", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 397}], ["max_positional_argu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 392}], ["max_result", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.key2param": {}}, "kind": {}, "_index": 1480}], ["max_siz", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1590}], ["max_uri_length", {"name": {"googleapiclient.http.MAX_URI_LENGTH": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 822}], ["maximum", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 393}], ["maxsiz", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_size_to_long": {}}, "kind": {}, "_index": 1566}], ["mean", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 936}], ["mechan", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 561}], ["media", {"name": {}, "names": {"googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.http.MediaUploadProgress": {}, "googleapiclient.http.MediaDownloadProgress": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS": {}, "googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 164}], ["media_bodi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaFileUpload": {}, "googleapiclient.discovery._fix_up_media_upload": {}}, "kind": {}, "_index": 1003}], ["media_body=media)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1137}], ["media_body=media).execute()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 965}], ["media_body_parameter_default_value", {"name": {"googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1429}], ["media_mime_typ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_upload": {}}, "kind": {}, "_index": 1587}], ["media_mime_type_parameter_default_value", {"name": {"googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1431}], ["media_path_url", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1591}], ["media_rang", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}}, "kind": {}, "_index": 657}], ["media_upload", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_upload": {}}, "kind": {}, "_index": 1588}], ["mediadownloadprogress", {"name": {"googleapiclient.http.MediaDownloadProgress": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}}, "kind": {}, "_index": 883}], ["mediafileupload", {"name": {"googleapiclient.http.MediaFileUpload": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.to_json": {}}, "kind": {}, "_index": 1001}], ["mediafileupload('cow.png',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1005}], ["mediainmemoryupload", {"name": {"googleapiclient.http.MediaInMemoryUpload": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 1020}], ["mediaiobasedownload", {"name": {"googleapiclient.http.MediaIoBaseDownload": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1029}], ["mediaiobasedownload(fh,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}}, "kind": {}, "_index": 1034}], ["mediaiobaseupload", {"name": {"googleapiclient.http.MediaIoBaseUpload": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 953}], ["mediaiobaseupload(fh,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}}, "kind": {}, "_index": 958}], ["mediamodel", {"name": {"googleapiclient.model.MediaModel": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 777}], ["mediaupload", {"name": {"googleapiclient.http.MediaUpload": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery._fix_up_media_upload": {}}, "kind": {}, "_index": 890}], ["mediauploadprogress", {"name": {"googleapiclient.http.MediaUploadProgress": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 864}], ["mediauploadsizeerror", {"name": {"googleapiclient.errors.MediaUploadSizeError": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 480}], ["member", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload._to_json": {}}, "kind": {}, "_index": 946}], ["memcach", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}}, "kind": {}, "_index": 121}], ["memcache", {"name": {}, "names": {"googleapiclient.discovery_cache.appengine_memcache": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 118}], ["memori", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 918}], ["memory", {"name": {}, "names": {"googleapiclient.http.MediaInMemoryUpload": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1022}], ["messag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.notification_from_headers": {}}, "kind": {}, "_index": 604}], ["message", {"name": {}, "names": {"googleapiclient._helpers._SYM_LINK_MESSAGE": {}, "googleapiclient._helpers._IS_DIR_MESSAGE": {}, "googleapiclient._helpers._MISSING_FILE_MESSAGE": {}, "googleapiclient.channel.X_GOOG_MESSAGE_NUMBER": {}, "googleapiclient.channel.Notification.message_number": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 327}], ["message_numb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}}, "kind": {}, "_index": 542}], ["message_number", {"name": {"googleapiclient.channel.Notification.message_number": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 552}], ["metadata", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "kind": {}, "_index": 1583}], ["method", {"name": {"googleapiclient.http.HttpRequest.method": {}, "googleapiclient.http.HttpMock.method": {}}, "names": {"googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.http.HttpRequest.method": {}, "googleapiclient.http.HttpRequest.methodId": {}, "googleapiclient.http.HttpMock.method": {}, "googleapiclient.discovery.DEFAULT_METHOD_DOC": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery._methodProperties": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.http": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {"googleapiclient.errors.HttpError.__init__": {}, "googleapiclient.errors.HttpError._get_reason": {}, "googleapiclient.errors.HttpError.__repr__": {}, "googleapiclient.errors.BatchError.__init__": {}, "googleapiclient.errors.BatchError.__repr__": {}, "googleapiclient.errors.UnexpectedMethodError.__init__": {}, "googleapiclient.errors.UnexpectedBodyError.__init__": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel._log_request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.model.BaseModel._log_response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaUpload.mimetype": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__del__": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.from_json": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.HttpRequest.to_json": {}, "googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.http.HttpRequest.null_postproc": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.HttpRequestMock.execute": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.HttpMock.request": {}, "googleapiclient.http.HttpMock.close": {}, "googleapiclient.http.HttpMockSequence.__init__": {}, "googleapiclient.http.HttpMockSequence.request": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}, "googleapiclient.schema._SchemaToStruct.indent": {}, "googleapiclient.schema._SchemaToStruct.undent": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.APICoreVersionError.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}, "googleapiclient.discovery.Resource.__enter__": {}, "googleapiclient.discovery.Resource.__exit__": {}, "googleapiclient.discovery.Resource.close": {}, "googleapiclient.discovery.Resource._set_service_methods": {}, "googleapiclient.discovery.Resource._add_basic_methods": {}, "googleapiclient.discovery.Resource._add_nested_resources": {}, "googleapiclient.discovery.Resource._add_next_methods": {}, "googleapiclient.discovery.Resource._validate_credentials": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "_index": 54}], ["method_desc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "kind": {}, "_index": 1582}], ["method_id", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1597}], ["methoddesc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 1654}], ["methodid", {"name": {"googleapiclient.http.HttpRequest.methodId": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 1101}], ["methodnam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1653}], ["methods", {"name": {}, "names": {"googleapiclient.discovery.HTTP_PAYLOAD_METHODS": {}, "googleapiclient.discovery.Resource._set_service_methods": {}, "googleapiclient.discovery.Resource._add_basic_methods": {}, "googleapiclient.discovery.Resource._add_next_methods": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1421}], ["millisecond", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 572}], ["mime", {"name": {}, "names": {"googleapiclient.errors.UnacceptableMimeTypeError": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.http.MediaUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.mimetype": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 155}], ["mimeparse", {"name": {"googleapiclient.mimeparse": {}}, "names": {"googleapiclient.mimeparse": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 153}], ["mimetyp", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.UnacceptableMimeTypeError": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 478}], ["mimetype", {"name": {"googleapiclient.http.MediaUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.mimetype": {}}, "names": {"googleapiclient.http.MediaUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload._mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.mimetype": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 923}], ["mimetype='image/png',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 959}], ["missing", {"name": {}, "names": {"googleapiclient._helpers._MISSING_FILE_MESSAGE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 333}], ["mock", {"name": {}, "names": {"googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMock": {}, "googleapiclient.http.HttpMockSequence": {}}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.HttpRequestMock.execute": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMock": {}, "googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1232}], ["mode", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}}, "kind": {}, "_index": 978}], ["mode='wb')", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload": {}}, "kind": {}, "_index": 1033}], ["model", {"name": {"googleapiclient.model": {}, "googleapiclient.model.Model": {}}, "names": {"googleapiclient.model": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.discovery.Resource._model": {}}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 193}], ["model.jsonmodel.response()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequestMock.__init__": {}}, "kind": {}, "_index": 1236}], ["modifi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 806}], ["modul", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.errors.Error": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.discovery_cache.autodetect": {}}, "kind": {}, "_index": 158}], ["module", {"name": {}, "names": {}, "qname": {}, "docstring": {}, "kind": {"googleapiclient._auth": {}, "googleapiclient._helpers": {}, "googleapiclient.channel": {}, "googleapiclient.discovery": {}, "googleapiclient.discovery_cache.appengine_memcache": {}, "googleapiclient.discovery_cache.base": {}, "googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.errors": {}, "googleapiclient.http": {}, "googleapiclient.mimeparse": {}, "googleapiclient.model": {}, "googleapiclient.sample_tools": {}, "googleapiclient.schema": {}, "googleapiclient.version": {}}, "_index": 10}], ["monitor", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}}, "kind": {}, "_index": 546}], ["more", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}}, "kind": {}, "_index": 198}], ["mtl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1512}], ["mtls", {"name": {}, "names": {"googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1441}], ["multipl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 128}], ["mutual", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1525}], ["my_method(cls,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 380}], ["my_method(self,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 376}], ["myclass(object):", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 374}], ["n", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.http._StreamSlice.read": {}}, "kind": {}, "_index": 88}], ["n.resource_st", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 95}], ["name", {"name": {}, "names": {"googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery._findPageTokenName": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient._helpers.positional": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 261}], ["name/6.0\")", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1330}], ["name='cow.png',", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 964}], ["names", {"name": {}, "names": {"googleapiclient.discovery._PAGE_TOKEN_NAMES": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1434}], ["namespace", {"name": {"googleapiclient.discovery_cache.appengine_memcache.NAMESPACE": {}}, "names": {"googleapiclient.discovery_cache.appengine_memcache.NAMESPACE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1768}], ["necessari", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}, "googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 284}], ["need", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 70}], ["nested", {"name": {}, "names": {"googleapiclient.discovery.Resource._add_nested_resources": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1732}], ["netloc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1601}], ["never", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 972}], ["new", {"name": {}, "names": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 44}], ["new_from_json", {"name": {"googleapiclient.http.MediaUpload.new_from_json": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 950}], ["new_webhook_channel", {"name": {"googleapiclient.channel.new_webhook_channel": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}}, "kind": {}, "_index": 559}], ["new_webhook_channel(\"https://example.com/my_web_hook\")", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 49}], ["next", {"name": {}, "names": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource._add_next_methods": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 243}], ["next_chunk", {"name": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1063}], ["nextpagetoken", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.discovery._findPageTokenName": {}}, "kind": {}, "_index": 241}], ["nextpagetokennam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1661}], ["no", {"name": {}, "names": {"googleapiclient.model.BaseModel.no_content_response": {}, "googleapiclient.model.JsonModel.no_content_response": {}, "googleapiclient.model.RawModel.no_content_response": {}, "googleapiclient.model.MediaModel.no_content_response": {}, "googleapiclient.model.ProtocolBufferModel.no_content_response": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 733}], ["no_content_respons", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}}, "kind": {}, "_index": 724}], ["no_content_response", {"name": {"googleapiclient.model.BaseModel.no_content_response": {}, "googleapiclient.model.JsonModel.no_content_response": {}, "googleapiclient.model.RawModel.no_content_response": {}, "googleapiclient.model.MediaModel.no_content_response": {}, "googleapiclient.model.ProtocolBufferModel.no_content_response": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 732}], ["non", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}}, "kind": {}, "_index": 717}], ["none", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery_cache.autodetect": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}}, "kind": {}, "_index": 433}], ["not_exist", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Notification.__init__": {}}, "kind": {}, "_index": 102}], ["note", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 24}], ["noth", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 389}], ["notif", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.errors.InvalidNotificationError": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 19}], ["notification", {"name": {"googleapiclient.channel.Notification": {}}, "names": {"googleapiclient.errors.InvalidNotificationError": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.notification_from_headers": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 496}], ["notification_from_head", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}}, "kind": {}, "_index": 540}], ["notification_from_headers", {"name": {"googleapiclient.channel.notification_from_headers": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 599}], ["notification_from_headers(channel,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 89}], ["now", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 68}], ["null", {"name": {}, "names": {"googleapiclient.http.HttpRequest.null_postproc": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1149}], ["null_postproc", {"name": {"googleapiclient.http.HttpRequest.null_postproc": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1148}], ["num_retri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 857}], ["number", {"name": {}, "names": {"googleapiclient.channel.X_GOOG_MESSAGE_NUMBER": {}, "googleapiclient.channel.Notification.message_number": {}}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 394}], ["oauth", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.tunnel_patch": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1341}], ["oauth2client", {"name": {}, "names": {"googleapiclient._auth.HAS_OAUTH2CLIENT": {}}, "qname": {}, "docstring": {"googleapiclient._auth": {}}, "kind": {}, "_index": 8}], ["oauth2client.client.credentials]):", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}, "googleapiclient._auth.authorized_http": {}}, "kind": {}, "_index": 288}], ["oauth2client.client.credentials]:", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}}, "kind": {}, "_index": 291}], ["oauth2client.credenti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1496}], ["object", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.model": {}, "googleapiclient.schema": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.http.build_http": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery.Resource.__setstate__": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.autodetect": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 150}], ["obtain", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1493}], ["occur", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.errors.BatchError": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 422}], ["offset", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}}, "kind": {}, "_index": 930}], ["ok", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 358}], ["omit", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 246}], ["on", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._findPageTokenName": {}}, "kind": {}, "_index": 197}], ["onc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1071}], ["opaqu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 574}], ["open", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}}, "kind": {}, "_index": 976}], ["oper", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.UnacceptableMimeTypeError": {}, "googleapiclient.errors.BatchError": {}}, "kind": {}, "_index": 479}], ["oppos", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1547}], ["opt_expected_bodi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1250}], ["option", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1499}], ["options", {"name": {}, "names": {"googleapiclient.discovery._discovery_service_uri_options": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1529}], ["or", {"name": {}, "names": {"googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.discovery_cache.file_cache._read_or_initialize_cache": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 472}], ["order", {"name": {}, "names": {"googleapiclient.http.BatchHttpRequest._order": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 677}], ["origin", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 807}], ["otherwis", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._should_retry_response": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 848}], ["out", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema.Schemas.__init__": {}}, "kind": {}, "_index": 1353}], ["outgo", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}}, "kind": {}, "_index": 708}], ["output", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}}, "kind": {}, "_index": 256}], ["over", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 568}], ["overrid", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.build_http": {}}, "kind": {}, "_index": 1345}], ["overridden", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 1603}], ["packag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1553}], ["package", {"name": {}, "names": {}, "qname": {}, "docstring": {}, "kind": {"googleapiclient": {}, "googleapiclient.discovery_cache": {}}, "_index": 1}], ["page", {"name": {}, "names": {"googleapiclient.discovery._PAGE_TOKEN_NAMES": {}, "googleapiclient.discovery._findPageTokenName": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery._findPageTokenName": {}}, "kind": {}, "_index": 244}], ["pagetoken", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._findPageTokenName": {}}, "kind": {}, "_index": 1748}], ["pagetokennam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1660}], ["pair", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.HttpMockSequence.__init__": {}}, "kind": {}, "_index": 409}], ["param", {"name": {}, "names": {"googleapiclient.model.BaseModel.alt_param": {}, "googleapiclient.model.JsonModel.alt_param": {}, "googleapiclient.model.RawModel.alt_param": {}, "googleapiclient.model.MediaModel.alt_param": {}, "googleapiclient.model.ProtocolBufferModel.alt_param": {}, "googleapiclient.discovery.ResourceMethodParameters.param_types": {}}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.model.BaseModel._build_query": {}}, "kind": {}, "_index": 419}], ["param_typ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1619}], ["param_types", {"name": {"googleapiclient.discovery.ResourceMethodParameters.param_types": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1642}], ["paramet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient._helpers.positional": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 183}], ["parameter", {"name": {}, "names": {"googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 429}], ["parameters", {"name": {}, "names": {"googleapiclient.discovery.STACK_QUERY_PARAMETERS": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1451}], ["params", {"name": {"googleapiclient.channel.Channel.params": {}}, "names": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.CHANNEL_PARAMS": {}, "googleapiclient.channel.Channel.params": {}, "googleapiclient.discovery.ResourceMethodParameters.required_params": {}, "googleapiclient.discovery.ResourceMethodParameters.repeated_params": {}, "googleapiclient.discovery.ResourceMethodParameters.pattern_params": {}, "googleapiclient.discovery.ResourceMethodParameters.query_params": {}, "googleapiclient.discovery.ResourceMethodParameters.path_params": {}, "googleapiclient.discovery.ResourceMethodParameters.enum_params": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 415}], ["parent", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1805}], ["pars", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.mimeparse": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.errors.InvalidJsonError": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 85}], ["parse", {"name": {}, "names": {"googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 401}], ["parse_media_rang", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}}, "kind": {}, "_index": 178}], ["parse_media_range", {"name": {"googleapiclient.mimeparse.parse_media_range": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 641}], ["parse_mime_typ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 175}], ["parse_mime_type", {"name": {"googleapiclient.mimeparse.parse_mime_type": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 633}], ["parse_unique_urlencoded", {"name": {"googleapiclient._helpers.parse_unique_urlencoded": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 400}], ["parsed", {"name": {}, "names": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 652}], ["parsed_rang", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}}, "kind": {}, "_index": 663}], ["parser", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 157}], ["part", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}}, "kind": {}, "_index": 177}], ["particular", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 920}], ["particularli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 898}], ["pass", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 583}], ["patch", {"name": {}, "names": {"googleapiclient.http.tunnel_patch": {}}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 801}], ["path", {"name": {}, "names": {"googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.ResourceMethodParameters.path_params": {}}, "qname": {}, "docstring": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 711}], ["path_param", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 709}], ["path_params", {"name": {"googleapiclient.discovery.ResourceMethodParameters.path_params": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1640}], ["path_url", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1574}], ["pattern", {"name": {}, "names": {"googleapiclient.discovery.ResourceMethodParameters.pattern_params": {}}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 149}], ["pattern_param", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1616}], ["pattern_params", {"name": {"googleapiclient.discovery.ResourceMethodParameters.pattern_params": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1636}], ["payload", {"name": {}, "names": {"googleapiclient.discovery.HTTP_PAYLOAD_METHODS": {}}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._deserialize_response": {}}, "kind": {}, "_index": 1212}], ["percent", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}}, "kind": {}, "_index": 879}], ["percentag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}}, "kind": {}, "_index": 881}], ["perform", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}}, "kind": {}, "_index": 748}], ["pickl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1711}], ["place", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 1080}], ["platform", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 911}], ["point", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1488}], ["popul", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "kind": {}, "_index": 1146}], ["pos1", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 377}], ["posit", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http._StreamSlice.__init__": {}}, "kind": {}, "_index": 340}], ["positional", {"name": {"googleapiclient._helpers.positional": {}}, "names": {"googleapiclient._helpers.POSITIONAL_WARNING": {}, "googleapiclient._helpers.POSITIONAL_EXCEPTION": {}, "googleapiclient._helpers.POSITIONAL_IGNORE": {}, "googleapiclient._helpers.POSITIONAL_SET": {}, "googleapiclient._helpers.positional": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 312}], ["positional_except", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 384}], ["positional_exception", {"name": {"googleapiclient._helpers.POSITIONAL_EXCEPTION": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 316}], ["positional_ignor", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 386}], ["positional_ignore", {"name": {"googleapiclient._helpers.POSITIONAL_IGNORE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 319}], ["positional_set", {"name": {"googleapiclient._helpers.POSITIONAL_SET": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 322}], ["positional_warn", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 385}], ["positional_warning", {"name": {"googleapiclient._helpers.POSITIONAL_WARNING": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 311}], ["possibl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 345}], ["post", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 607}], ["postproc", {"name": {"googleapiclient.http.HttpRequest.postproc": {}, "googleapiclient.http.HttpRequestMock.postproc": {}}, "names": {"googleapiclient.http.HttpRequest.postproc": {}, "googleapiclient.http.HttpRequest.null_postproc": {}, "googleapiclient.http.HttpRequestMock.postproc": {}}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}}, "kind": {}, "_index": 1097}], ["potenti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}}, "kind": {}, "_index": 425}], ["pre", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 188}], ["prefer", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._discovery_service_uri_options": {}}, "kind": {}, "_index": 1531}], ["prepend", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "kind": {}, "_index": 1197}], ["present", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 1079}], ["presum", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._header_to_id": {}}, "kind": {}, "_index": 1202}], ["pretti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}}, "kind": {}, "_index": 223}], ["pretty", {"name": {"googleapiclient.schema.Schemas.pretty": {}}, "names": {"googleapiclient.schema.Schemas.pretty": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1355}], ["prettyprintbyname", {"name": {"googleapiclient.schema.Schemas.prettyPrintByName": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1364}], ["prettyprintschema", {"name": {"googleapiclient.schema.Schemas.prettyPrintSchema": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1368}], ["prevent", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 396}], ["print", {"name": {}, "names": {"googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}}, "kind": {}, "_index": 224}], ["privat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1516}], ["problem", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1081}], ["process", {"name": {}, "names": {"googleapiclient.http.HttpRequest._process_response": {}}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.schema": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}}, "kind": {}, "_index": 129}], ["produc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.discovery.build": {}}, "kind": {}, "_index": 254}], ["progress", {"name": {"googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}}, "names": {"googleapiclient.http.MediaUploadProgress": {}, "googleapiclient.http.MediaUploadProgress.resumable_progress": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress": {}, "googleapiclient.http.MediaDownloadProgress.resumable_progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaIoBaseDownload._progress": {}, "googleapiclient.http.HttpRequest.resumable_progress": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 865}], ["project", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1265}], ["proper", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 647}], ["properli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 742}], ["properti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 231}], ["properties", {"name": {}, "names": {"googleapiclient.discovery._methodProperties": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1750}], ["property", {"name": {}, "names": {}, "qname": {}, "docstring": {}, "kind": {"googleapiclient.errors.HttpError.status_code": {}, "googleapiclient.model.JsonModel.no_content_response": {}, "googleapiclient.model.RawModel.no_content_response": {}, "googleapiclient.model.MediaModel.no_content_response": {}, "googleapiclient.model.ProtocolBufferModel.no_content_response": {}}, "_index": 457}], ["protocol", {"name": {}, "names": {"googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel._protocol_buffer": {}}, "qname": {}, "docstring": {"googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}}, "kind": {}, "_index": 785}], ["protocol_buff", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.ProtocolBufferModel.__init__": {}}, "kind": {}, "_index": 793}], ["protocolbuffermodel", {"name": {"googleapiclient.model.ProtocolBufferModel": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.ProtocolBufferModel.__init__": {}}, "kind": {}, "_index": 784}], ["prototyp", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 225}], ["provid", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 159}], ["pull", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema.Schemas.__init__": {}}, "kind": {}, "_index": 1352}], ["put", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 74}], ["py", {"name": {}, "names": {"googleapiclient.model._PY_VERSION": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 695}], ["python", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 207}], ["q", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 181}], ["q=0.1')", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 685}], ["qualiti", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 182}], ["quality", {"name": {"googleapiclient.mimeparse.quality": {}}, "names": {"googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 651}], ["quality('text/html','text/*;q=0.3,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality": {}}, "kind": {}, "_index": 669}], ["quality_pars", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}}, "kind": {}, "_index": 186}], ["quality_parsed", {"name": {"googleapiclient.mimeparse.quality_parsed": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 664}], ["queri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 418}], ["query", {"name": {}, "names": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETERS": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.ResourceMethodParameters.query_params": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 414}], ["query_param", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 712}], ["query_params", {"name": {"googleapiclient.discovery.ResourceMethodParameters.query_params": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1638}], ["rais", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 356}], ["rand", {"name": {}, "names": {"googleapiclient.http.MediaIoBaseDownload._rand": {}, "googleapiclient.http.HttpRequest._rand": {}}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 860}], ["random", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 861}], ["rang", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 165}], ["range", {"name": {}, "names": {"googleapiclient.mimeparse.parse_media_range": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 642}], ["rare", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 1332}], ["raw", {"name": {}, "names": {"googleapiclient.model.RawModel": {}}, "qname": {}, "docstring": {"googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}}, "kind": {}, "_index": 768}], ["rawmodel", {"name": {"googleapiclient.model.RawModel": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 767}], ["reach", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http._StreamSlice.read": {}}, "kind": {}, "_index": 934}], ["read", {"name": {"googleapiclient.http._StreamSlice.read": {}}, "names": {"googleapiclient.http._StreamSlice.read": {}, "googleapiclient.discovery_cache.file_cache._read_or_initialize_cache": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.http.HttpMock.__init__": {}}, "kind": {}, "_index": 931}], ["realli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequestMock.execute": {}}, "kind": {}, "_index": 1242}], ["reason", {"name": {"googleapiclient.errors.HttpError.reason": {}, "googleapiclient.errors.BatchError.reason": {}}, "names": {"googleapiclient.errors.HttpError.reason": {}, "googleapiclient.errors.HttpError._get_reason": {}, "googleapiclient.errors.BatchError.reason": {}}, "qname": {}, "docstring": {"googleapiclient.errors.HttpError._get_reason": {}}, "kind": {}, "_index": 451}], ["receiv", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}}, "kind": {}, "_index": 35}], ["reconstitut", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1719}], ["recurs", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1361}], ["redirects", {"name": {}, "names": {"googleapiclient.http.HttpMockSequence.follow_redirects": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1317}], ["refer", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1620}], ["refresh", {"name": {}, "names": {"googleapiclient._auth.refresh_credentials": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}}, "kind": {}, "_index": 299}], ["refresh_credentials", {"name": {"googleapiclient._auth.refresh_credentials": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 298}], ["refreshed", {"name": {}, "names": {"googleapiclient.http.BatchHttpRequest._refreshed_credentials": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1188}], ["regular", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1617}], ["rel", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1572}], ["rememb", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 370}], ["repeat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 217}], ["repeated", {"name": {}, "names": {"googleapiclient.discovery.ResourceMethodParameters.repeated_params": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1634}], ["repeated_param", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1615}], ["repeated_params", {"name": {"googleapiclient.discovery.ResourceMethodParameters.repeated_params": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1633}], ["replac", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery._urljoin": {}}, "kind": {}, "_index": 423}], ["repr", {"name": {}, "names": {"googleapiclient.errors.HttpError.__repr__": {}, "googleapiclient.errors.BatchError.__repr__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 462}], ["repres", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 1068}], ["represent", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.HttpRequest.to_json": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery._cast": {}}, "kind": {}, "_index": 208}], ["req_typ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 858}], ["request", {"name": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.http.HttpMock.request": {}, "googleapiclient.http.HttpMockSequence.request": {}}, "names": {"googleapiclient.model.dump_request_response": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel._log_request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload._request": {}, "googleapiclient.http.HttpRequest": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMock.request": {}, "googleapiclient.http.HttpMockSequence.request_sequence": {}, "googleapiclient.http.HttpMockSequence.request": {}, "googleapiclient.discovery.Resource._requestBuilder": {}}, "qname": {}, "docstring": {"googleapiclient.http": {}, "googleapiclient.model": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel._log_request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._log_response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.HttpRequestMock.execute": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 147}], ["request.next_chunk()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1138}], ["request/response.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequestMock.execute": {}}, "kind": {}, "_index": 1243}], ["request_id", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1219}], ["request_sequence", {"name": {"googleapiclient.http.HttpMockSequence.request_sequence": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1319}], ["requestbuild", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1254}], ["requestbuilder=requestbuilder)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1259}], ["requestmockbuild", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 509}], ["requestmockbuilder", {"name": {"googleapiclient.http.RequestMockBuilder": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1244}], ["requests", {"name": {}, "names": {"googleapiclient.http._TOO_MANY_REQUESTS": {}, "googleapiclient.http.BatchHttpRequest._requests": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 831}], ["requir", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 363}], ["required", {"name": {}, "names": {"googleapiclient.discovery.ResourceMethodParameters.required_params": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1631}], ["required_param", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1614}], ["required_params", {"name": {"googleapiclient.discovery.ResourceMethodParameters.required_params": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1630}], ["reserv", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1472}], ["reserved", {"name": {}, "names": {"googleapiclient.discovery.RESERVED_WORDS": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1460}], ["reserved_words", {"name": {"googleapiclient.discovery.RESERVED_WORDS": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1459}], ["resourc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 545}], ["resource", {"name": {"googleapiclient.discovery.Resource": {}}, "names": {"googleapiclient.channel.X_GOOG_RESOURCE_STATE": {}, "googleapiclient.channel.X_GOOG_RESOURCE_URI": {}, "googleapiclient.channel.X_GOOG_RESOURCE_ID": {}, "googleapiclient.channel.Notification.resource_uri": {}, "googleapiclient.channel.Notification.resource_id": {}, "googleapiclient.channel.Channel.resource_id": {}, "googleapiclient.channel.Channel.resource_uri": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.Resource": {}, "googleapiclient.discovery.Resource._resourceDesc": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 527}], ["resource_id", {"name": {"googleapiclient.channel.Notification.resource_id": {}, "googleapiclient.channel.Channel.resource_id": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.update": {}}, "kind": {}, "_index": 66}], ["resource_uri", {"name": {"googleapiclient.channel.Notification.resource_uri": {}, "googleapiclient.channel.Channel.resource_uri": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 551}], ["resourcedesc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1668}], ["resourcemethodparamet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters.__init__": {}}, "kind": {}, "_index": 1626}], ["resourcemethodparameters", {"name": {"googleapiclient.discovery.ResourceMethodParameters": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1611}], ["resources", {"name": {}, "names": {"googleapiclient.discovery.Resource._add_nested_resources": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1733}], ["resp", {"name": {"googleapiclient.errors.HttpError.resp": {}, "googleapiclient.errors.BatchError.resp": {}, "googleapiclient.http.HttpRequestMock.resp": {}}, "names": {"googleapiclient.errors.HttpError.resp": {}, "googleapiclient.errors.BatchError.resp": {}, "googleapiclient.http.HttpRequestMock.resp": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 59}], ["resp_statu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._should_retry_response": {}}, "kind": {}, "_index": 846}], ["respect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 390}], ["respons", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.errors.HttpError.status_code": {}, "googleapiclient.errors.HttpError._get_reason": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel._log_response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.HttpRequestMock.execute": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 195}], ["response", {"name": {"googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}}, "names": {"googleapiclient.model.dump_request_response": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.no_content_response": {}, "googleapiclient.model.BaseModel._log_response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.JsonModel.no_content_response": {}, "googleapiclient.model.RawModel.no_content_response": {}, "googleapiclient.model.MediaModel.no_content_response": {}, "googleapiclient.model.ProtocolBufferModel.no_content_response": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http.HttpRequest.response_callbacks": {}, "googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.HttpMock.response_headers": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 700}], ["response_callbacks", {"name": {"googleapiclient.http.HttpRequest.response_callbacks": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1111}], ["response_headers", {"name": {"googleapiclient.http.HttpMock.response_headers": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1283}], ["responses", {"name": {"googleapiclient.http.RequestMockBuilder.responses": {}}, "names": {"googleapiclient.http.BatchHttpRequest._responses": {}, "googleapiclient.http.RequestMockBuilder.responses": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1185}], ["restor", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1715}], ["result", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.key2param": {}}, "kind": {}, "_index": 245}], ["resum", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.http.MediaUploadProgress": {}, "googleapiclient.http.MediaDownloadProgress": {}, "googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}}, "kind": {}, "_index": 490}], ["resumable", {"name": {"googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.HttpRequest.resumable": {}}, "names": {"googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.http.MediaUploadProgress.resumable_progress": {}, "googleapiclient.http.MediaDownloadProgress.resumable_progress": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload._resumable": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.HttpRequest.resumable": {}, "googleapiclient.http.HttpRequest.resumable_uri": {}, "googleapiclient.http.HttpRequest.resumable_progress": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 487}], ["resumable=true)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 961}], ["resumable=true.", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}}, "kind": {}, "_index": 980}], ["resumable_progress", {"name": {"googleapiclient.http.MediaUploadProgress.resumable_progress": {}, "googleapiclient.http.MediaDownloadProgress.resumable_progress": {}, "googleapiclient.http.HttpRequest.resumable_progress": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}}, "kind": {}, "_index": 868}], ["resumable_uri", {"name": {"googleapiclient.http.HttpRequest.resumable_uri": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1118}], ["resumablemediastatu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}}, "kind": {}, "_index": 1139}], ["resumableuploaderror", {"name": {"googleapiclient.errors.ResumableUploadError": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 486}], ["resumbal", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}}, "kind": {}, "_index": 1102}], ["retri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._should_retry_response": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 845}], ["retriev", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 84}], ["retrieve", {"name": {}, "names": {"googleapiclient.discovery._retrieve_discovery_doc": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1534}], ["retry", {"name": {}, "names": {"googleapiclient.http._should_retry_response": {}, "googleapiclient.http._retry_request": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 842}], ["return", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.schema": {}, "googleapiclient._auth.credentials_from_file": {}, "googleapiclient._auth.default_credentials": {}, "googleapiclient._auth.with_scopes": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient._helpers.positional": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.errors.HttpError.status_code": {}, "googleapiclient.errors.InvalidJsonError": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaUpload.mimetype": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.HttpRequest.to_json": {}, "googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.http.build_http": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.Resource._validate_credentials": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.autodetect": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 57}], ["rfc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 169}], ["root", {"name": {}, "names": {"googleapiclient.discovery.Resource._rootDesc": {}}, "qname": {}, "docstring": {"googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1571}], ["root_desc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1573}], ["rootdesc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1656}], ["rooturl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1549}], ["routin", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 1796}], ["rpc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1598}], ["rpcname", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 1263}], ["run", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1339}], ["s", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.MediaUpload.new_from_json": {}}, "kind": {}, "_index": 251}], ["s.prettyprintbyname('foo')", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 253}], ["safe", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.key2param": {}}, "kind": {}, "_index": 1481}], ["same", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.http.HttpRequestMock.execute": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 131}], ["sampl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.sample_tools": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 214}], ["sample", {"name": {}, "names": {"googleapiclient.sample_tools": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 210}], ["sample_tools", {"name": {"googleapiclient.sample_tools": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 209}], ["save", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1511}], ["schema", {"name": {"googleapiclient.schema": {}, "googleapiclient.schema._SchemaToStruct.schema": {}}, "names": {"googleapiclient.schema": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct": {}, "googleapiclient.schema._SchemaToStruct.schema": {}, "googleapiclient.discovery.Resource._schema": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.schema.Schemas": {}, "googleapiclient.schema.Schemas.__init__": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 219}], ["schema_typ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._cast": {}}, "kind": {}, "_index": 1560}], ["schemas", {"name": {"googleapiclient.schema.Schemas": {}, "googleapiclient.schema.Schemas.schemas": {}}, "names": {"googleapiclient.schema.Schemas": {}, "googleapiclient.schema.Schemas.schemas": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1349}], ["schemas(schema)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 252}], ["scope", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 283}], ["scopes", {"name": {}, "names": {"googleapiclient._auth.with_scopes": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 281}], ["search", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._findPageTokenName": {}}, "kind": {}, "_index": 1747}], ["sec", {"name": {}, "names": {"googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 835}], ["sec14.html#sec14.1", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 174}], ["second", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.__init__": {}, "googleapiclient.discovery_cache.file_cache.Cache.__init__": {}}, "kind": {}, "_index": 187}], ["section", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 167}], ["see", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__call__": {}, "googleapiclient.discovery._cast": {}}, "kind": {}, "_index": 166}], ["seek", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http._StreamSlice.__init__": {}}, "kind": {}, "_index": 908}], ["seekabl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}}, "kind": {}, "_index": 939}], ["seen", {"name": {"googleapiclient.schema._SchemaToStruct.seen": {}}, "names": {"googleapiclient.schema._SchemaToStruct.seen": {}}, "qname": {}, "docstring": {"googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "kind": {}, "_index": 1360}], ["self", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 372}], ["self.request.headers)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 90}], ["self.request.headers[x_goog_channel_id]", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 83}], ["send", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._execute": {}}, "kind": {}, "_index": 804}], ["sent", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.update": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}}, "kind": {}, "_index": 598}], ["sequenc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.HttpMockSequence.__init__": {}}, "kind": {}, "_index": 1295}], ["sequence", {"name": {}, "names": {"googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.HttpMockSequence.request_sequence": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1293}], ["serial", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 199}], ["serializ", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.http.MediaIoBaseUpload.to_json": {}}, "kind": {}, "_index": 714}], ["serialize", {"name": {"googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}}, "names": {"googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 746}], ["server", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest._execute": {}}, "kind": {}, "_index": 1222}], ["servic", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 610}], ["service", {"name": {}, "names": {"googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery.Resource._set_service_methods": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1528}], ["service.activities().get(postid=postid,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 811}], ["service.activities.patch(postid=postid,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 815}], ["service.channels().stop(channel.body()).execute()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 104}], ["service.objects().watchall(", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 60}], ["servicenam", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery_cache.get_static_doc": {}}, "kind": {}, "_index": 1483}], ["servicepath", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1550}], ["set", {"name": {"googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "names": {"googleapiclient._helpers.POSITIONAL_SET": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery.Resource._set_service_methods": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.build_http": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 41}], ["set_paramet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.ResourceMethodParameters.__init__": {}}, "kind": {}, "_index": 1628}], ["set_parameters", {"name": {"googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1647}], ["set_user_agent", {"name": {"googleapiclient.http.set_user_agent": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1322}], ["set_user_agent(h,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 1329}], ["setstate", {"name": {}, "names": {"googleapiclient.discovery.Resource.__setstate__": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1717}], ["share", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}}, "kind": {}, "_index": 130}], ["shifts", {"name": {}, "names": {"googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1425}], ["short", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.getbytes": {}}, "kind": {}, "_index": 997}], ["shorter", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.getbytes": {}}, "kind": {}, "_index": 932}], ["should", {"name": {}, "names": {"googleapiclient.http._should_retry_response": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 841}], ["side", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1580}], ["sign", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1521}], ["signatur", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.add_response_callback": {}, "googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1130}], ["simpl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1247}], ["singl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.http": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.HttpRequest": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 127}], ["situat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 680}], ["size", {"name": {"googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}}, "names": {"googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.http.DEFAULT_CHUNK_SIZE": {}, "googleapiclient.http.MediaUploadProgress.total_size": {}, "googleapiclient.http.MediaDownloadProgress.total_size": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload._size": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaIoBaseDownload._total_size": {}, "googleapiclient.http.HttpRequest.body_size": {}, "googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS": {}, "googleapiclient.discovery._media_size_to_long": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http._StreamSlice.__init__": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 482}], ["sleep", {"name": {}, "names": {"googleapiclient.http.MediaIoBaseDownload._sleep": {}, "googleapiclient.http.HttpRequest._sleep": {}}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 859}], ["slice", {"name": {}, "names": {"googleapiclient.http._StreamSlice": {}}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 1076}], ["socket.setdefaulttimeout(timeout_in_sec)", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.build_http": {}}, "kind": {}, "_index": 1346}], ["someth", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__getstate__": {}}, "kind": {}, "_index": 1154}], ["sort", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 676}], ["sourc", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload.__init__": {}}, "kind": {}, "_index": 975}], ["special", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1303}], ["specif", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.mimeparse": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 92}], ["specifi", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}}, "kind": {}, "_index": 1575}], ["ssl.sslerror).", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 856}], ["stabl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 575}], ["stack", {"name": {}, "names": {"googleapiclient.discovery.STACK_QUERY_PARAMETERS": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1450}], ["stack_query_paramet", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 1579}], ["stack_query_parameter_default_value", {"name": {"googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1453}], ["stack_query_parameters", {"name": {"googleapiclient.discovery.STACK_QUERY_PARAMETERS": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1449}], ["start", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}}, "kind": {}, "_index": 55}], ["state", {"name": {"googleapiclient.channel.Notification.state": {}}, "names": {"googleapiclient.channel.X_GOOG_RESOURCE_STATE": {}, "googleapiclient.channel.Notification.state": {}, "googleapiclient.http.HttpRequest._in_error_state": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 99}], ["static", {"name": {}, "names": {"googleapiclient.discovery_cache.get_static_doc": {}}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {"googleapiclient.http.MediaFileUpload.from_json": {}, "googleapiclient.http.HttpRequest.from_json": {}, "googleapiclient.http.HttpRequest.null_postproc": {}}, "_index": 1019}], ["static_discoveri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1519}], ["statu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.HttpError.status_code": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.http._should_retry_response": {}, "googleapiclient.http.MediaUploadProgress": {}, "googleapiclient.http.MediaDownloadProgress": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 456}], ["status", {"name": {}, "names": {"googleapiclient.errors.HttpError.status_code": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 454}], ["status_code", {"name": {"googleapiclient.errors.HttpError.status_code": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 453}], ["step", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1134}], ["still", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 852}], ["stop", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel.update": {}}, "kind": {}, "_index": 71}], ["store", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.discovery_cache.file_cache": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 36}], ["str", {"name": {}, "names": {"googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 544}], ["stream", {"name": {"googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}}, "names": {"googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http._StreamSlice._stream": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http._StreamSlice.__init__": {}}, "kind": {}, "_index": 905}], ["string", {"name": {"googleapiclient.schema._SchemaToStruct.string": {}}, "names": {"googleapiclient.schema._SchemaToStruct.string": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.model.BaseModel.serialize": {}, "googleapiclient.model.BaseModel.deserialize": {}, "googleapiclient.model.JsonModel.serialize": {}, "googleapiclient.model.JsonModel.deserialize": {}, "googleapiclient.model.RawModel.deserialize": {}, "googleapiclient.model.MediaModel.deserialize": {}, "googleapiclient.model.ProtocolBufferModel.serialize": {}, "googleapiclient.model.ProtocolBufferModel.deserialize": {}, "googleapiclient.http.MediaUpload.getbytes": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.getbytes": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http._StreamSlice.read": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.BatchHttpRequest._serialize_request": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.HttpMock.__init__": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas.prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema.Schemas.prettyPrintSchema": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}, "googleapiclient.discovery.fix_method_name": {}, "googleapiclient.discovery.key2param": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery._findPageTokenName": {}, "googleapiclient.discovery._methodProperties": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 233}], ["strip", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload._to_json": {}}, "kind": {}, "_index": 944}], ["struct", {"name": {}, "names": {"googleapiclient.schema._SchemaToStruct": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1372}], ["stuff", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 93}], ["style", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 343}], ["sub", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 910}], ["subclass", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaUpload.new_from_json": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}}, "kind": {}, "_index": 721}], ["subject", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 29}], ["subscript", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 22}], ["subtyp", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}}, "kind": {}, "_index": 637}], ["such", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.model.Model": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.BatchHttpRequest._deserialize_response": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.discovery._media_size_to_long": {}}, "kind": {}, "_index": 200}], ["suitabl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}}, "kind": {}, "_index": 808}], ["suppli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}, "googleapiclient.http.BatchHttpRequest.add": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 727}], ["support", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.http": {}, "googleapiclient.model": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._urljoin": {}}, "kind": {}, "_index": 20}], ["suppos", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "kind": {}, "_index": 1198}], ["sym", {"name": {}, "names": {"googleapiclient._helpers._SYM_LINK_MESSAGE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 325}], ["sync", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Notification.__init__": {}}, "kind": {}, "_index": 97}], ["take", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 259}], ["taken", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1262}], ["target", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 567}], ["templat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1487}], ["termin", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}}, "kind": {}, "_index": 1392}], ["test", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1307}], ["text", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema._SchemaToStruct.emit": {}, "googleapiclient.schema._SchemaToStruct.emitBegin": {}, "googleapiclient.schema._SchemaToStruct.emitEnd": {}}, "kind": {}, "_index": 1388}], ["text/html;level=1,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality": {}}, "kind": {}, "_index": 671}], ["text/html;level=2;q=0.4,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality": {}}, "kind": {}, "_index": 672}], ["text/html;q=0.7,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.quality": {}}, "kind": {}, "_index": 670}], ["that'", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Channel.body": {}}, "kind": {}, "_index": 33}], ["third", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 1167}], ["those", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.schema": {}}, "kind": {}, "_index": 23}], ["through", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.createNextMethod": {}}, "kind": {}, "_index": 1485}], ["thrown", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._retry_request": {}}, "kind": {}, "_index": 855}], ["tie", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.best_match": {}}, "kind": {}, "_index": 681}], ["time", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 571}], ["timeout", {"name": {}, "names": {"googleapiclient.http.DEFAULT_HTTP_TIMEOUT_SEC": {}}, "qname": {}, "docstring": {"googleapiclient.http.build_http": {}}, "kind": {}, "_index": 834}], ["timestamp", {"name": {}, "names": {"googleapiclient.discovery_cache.file_cache._to_timestamp": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1781}], ["tl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1526}], ["to", {"name": {}, "names": {"googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaIoBaseUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.HttpRequest.to_json": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.schema._SchemaToStruct": {}, "googleapiclient.schema._SchemaToStruct._to_str_impl": {}, "googleapiclient.schema._SchemaToStruct.to_str": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery_cache.file_cache._to_timestamp": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 942}], ["to_json", {"name": {"googleapiclient.http.MediaUpload.to_json": {}, "googleapiclient.http.MediaIoBaseUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.to_json": {}, "googleapiclient.http.HttpRequest.to_json": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload.new_from_json": {}}, "kind": {}, "_index": 948}], ["to_str", {"name": {"googleapiclient.schema._SchemaToStruct.to_str": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1403}], ["token", {"name": {"googleapiclient.channel.Channel.token": {}}, "names": {"googleapiclient.channel.Channel.token": {}, "googleapiclient.discovery._PAGE_TOKEN_NAMES": {}, "googleapiclient.discovery._findPageTokenName": {}}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery._findPageTokenName": {}}, "kind": {}, "_index": 242}], ["too", {"name": {}, "names": {"googleapiclient.http._TOO_MANY_REQUESTS": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 829}], ["tools", {"name": {}, "names": {"googleapiclient.sample_tools": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 211}], ["top", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery._methodProperties": {}}, "kind": {}, "_index": 1669}], ["total", {"name": {}, "names": {"googleapiclient.http.MediaUploadProgress.total_size": {}, "googleapiclient.http.MediaDownloadProgress.total_size": {}, "googleapiclient.http.MediaIoBaseDownload._total_size": {}}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}}, "kind": {}, "_index": 871}], ["total_s", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaDownloadProgress.__init__": {}}, "kind": {}, "_index": 870}], ["total_size", {"name": {"googleapiclient.http.MediaUploadProgress.total_size": {}, "googleapiclient.http.MediaDownloadProgress.total_size": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 876}], ["track", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._set_dynamic_attr": {}}, "kind": {}, "_index": 1703}], ["transform", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.__init__": {}}, "kind": {}, "_index": 1099}], ["transport", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 1074}], ["tri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._discovery_service_uri_options": {}}, "kind": {}, "_index": 1532}], ["trigger", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpMockSequence": {}}, "kind": {}, "_index": 1304}], ["trim", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}}, "kind": {}, "_index": 1709}], ["tripl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_media_upload": {}}, "kind": {}, "_index": 1589}], ["true", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._should_retry_response": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 847}], ["truncat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 1078}], ["tunnel", {"name": {}, "names": {"googleapiclient.http.tunnel_patch": {}}, "qname": {}, "docstring": {"googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1336}], ["tunnel_patch", {"name": {"googleapiclient.http.tunnel_patch": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1335}], ["tunnel_patch(h,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.tunnel_patch": {}}, "kind": {}, "_index": 1338}], ["tupl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.http.RequestMockBuilder": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 636}], ["two", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}}, "kind": {}, "_index": 1490}], ["type", {"name": {"googleapiclient.channel.Channel.type": {}}, "names": {"googleapiclient.errors.UnknownFileType": {}, "googleapiclient.errors.UnknownLinkType": {}, "googleapiclient.errors.UnacceptableMimeTypeError": {}, "googleapiclient.channel.Channel.type": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.model.BaseModel.content_type": {}, "googleapiclient.model.JsonModel.content_type": {}, "googleapiclient.model.RawModel.content_type": {}, "googleapiclient.model.MediaModel.content_type": {}, "googleapiclient.model.ProtocolBufferModel.content_type": {}, "googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}, "googleapiclient.schema": {}, "googleapiclient.errors.UnknownFileType": {}, "googleapiclient.errors.UnknownLinkType": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.quality_parsed": {}, "googleapiclient.mimeparse.quality": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.mimetype": {}, "googleapiclient.http.MediaIoBaseUpload.to_json": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 156}], ["typeerror", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 398}], ["types", {"name": {}, "names": {"googleapiclient.discovery.ResourceMethodParameters.param_types": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1643}], ["typic", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 580}], ["unaccept", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.UnacceptableMimeTypeError": {}}, "kind": {}, "_index": 477}], ["unacceptable", {"name": {}, "names": {"googleapiclient.errors.UnacceptableMimeTypeError": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 475}], ["unacceptablemimetypeerror", {"name": {"googleapiclient.errors.UnacceptableMimeTypeError": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 474}], ["unauthent", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 1333}], ["undent", {"name": {"googleapiclient.schema._SchemaToStruct.undent": {}}, "names": {"googleapiclient.schema._SchemaToStruct.undent": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1397}], ["under", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}}, "kind": {}, "_index": 903}], ["underli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 913}], ["unexpect", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.HttpError": {}, "googleapiclient.errors.UnknownFileType": {}, "googleapiclient.errors.UnknownLinkType": {}, "googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.errors.UnexpectedBodyError": {}}, "kind": {}, "_index": 440}], ["unexpected", {"name": {}, "names": {"googleapiclient.errors.UnexpectedMethodError": {}, "googleapiclient.errors.UnexpectedBodyError": {}, "googleapiclient.http.RequestMockBuilder.check_unexpected": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 507}], ["unexpectedbodyerror", {"name": {"googleapiclient.errors.UnexpectedBodyError": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 511}], ["unexpectedmethoderror", {"name": {"googleapiclient.errors.UnexpectedMethodError": {}}, "names": {}, "qname": {}, "docstring": {"googleapiclient.errors.UnexpectedMethodError.__init__": {}, "googleapiclient.errors.UnexpectedBodyError.__init__": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 506}], ["unicod", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._retrieve_discovery_doc": {}}, "kind": {}, "_index": 1540}], ["union", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}, "googleapiclient._auth.authorized_http": {}}, "kind": {}, "_index": 286}], ["union[google.auth.credentials.credentials,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.with_scopes": {}}, "kind": {}, "_index": 290}], ["union[httplib2.http,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth.authorized_http": {}}, "kind": {}, "_index": 296}], ["uniqu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest.add": {}}, "kind": {}, "_index": 405}], ["unique", {"name": {}, "names": {"googleapiclient._helpers.parse_unique_urlencoded": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 402}], ["univers", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 1199}], ["universe", {"name": {}, "names": {"googleapiclient.discovery.HAS_UNIVERSE": {}, "googleapiclient.discovery.GOOGLE_CLOUD_UNIVERSE_DOMAIN": {}, "googleapiclient.discovery.DEFAULT_UNIVERSE": {}, "googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}, "googleapiclient.discovery.Resource._universe_domain": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 619}], ["universe_domain", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 1670}], ["universemismatcherror", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 1744}], ["unknown", {"name": {}, "names": {"googleapiclient.errors.UnknownFileType": {}, "googleapiclient.errors.UnknownLinkType": {}, "googleapiclient.errors.UnknownApiNameOrVersion": {}}, "qname": {}, "docstring": {"googleapiclient.errors.UnknownFileType": {}, "googleapiclient.errors.UnknownLinkType": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaDownloadProgress.progress": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}}, "kind": {}, "_index": 467}], ["unknownapinameorversion", {"name": {"googleapiclient.errors.UnknownApiNameOrVersion": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 471}], ["unknownfiletype", {"name": {"googleapiclient.errors.UnknownFileType": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 466}], ["unknownlinktype", {"name": {"googleapiclient.errors.UnknownLinkType": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 469}], ["unsubscrib", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 103}], ["unsuppli", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder.__init__": {}}, "kind": {}, "_index": 1270}], ["until", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}}, "kind": {}, "_index": 1140}], ["up", {"name": {}, "names": {"googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.schema": {}, "googleapiclient.mimeparse.parse_mime_type": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 34}], ["updat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.makepatch": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 65}], ["update", {"name": {"googleapiclient.channel.Channel.update": {}}, "names": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.Channel.update": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 413}], ["update_query_params", {"name": {"googleapiclient._helpers.update_query_params": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 412}], ["upload", {"name": {}, "names": {"googleapiclient.errors.MediaUploadSizeError": {}, "googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.http.MediaUploadProgress": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.discovery._fix_up_media_upload": {}}, "qname": {}, "docstring": {"googleapiclient.errors.ResumableUploadError": {}, "googleapiclient.http.MediaUploadProgress": {}, "googleapiclient.http.MediaUploadProgress.__init__": {}, "googleapiclient.http.MediaUploadProgress.progress": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaUpload.chunksize": {}, "googleapiclient.http.MediaUpload.size": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaUpload.has_stream": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.chunksize": {}, "googleapiclient.http.MediaIoBaseUpload.size": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.has_stream": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.to_json": {}, "googleapiclient.http.MediaFileUpload": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.HttpRequest._process_response": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}}, "kind": {}, "_index": 481}], ["upper", {"name": {}, "names": {"googleapiclient.channel._upper_header_keys": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 82}], ["uri", {"name": {"googleapiclient.errors.HttpError.uri": {}, "googleapiclient.http.HttpRequest.uri": {}, "googleapiclient.http.HttpMock.uri": {}}, "names": {"googleapiclient.errors.HttpError.uri": {}, "googleapiclient.channel.X_GOOG_RESOURCE_URI": {}, "googleapiclient.channel.Notification.resource_uri": {}, "googleapiclient.channel.Channel.resource_uri": {}, "googleapiclient.http.MAX_URI_LENGTH": {}, "googleapiclient.http._LEGACY_BATCH_URI": {}, "googleapiclient.http.MediaIoBaseDownload._uri": {}, "googleapiclient.http.HttpRequest.uri": {}, "googleapiclient.http.HttpRequest.resumable_uri": {}, "googleapiclient.http.BatchHttpRequest._batch_uri": {}, "googleapiclient.http.HttpMock.uri": {}, "googleapiclient.discovery.DISCOVERY_URI": {}, "googleapiclient.discovery.V2_DISCOVERY_URI": {}, "googleapiclient.discovery._discovery_service_uri_options": {}}, "qname": {}, "docstring": {"googleapiclient._helpers.update_query_params": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.BaseModel.request": {}, "googleapiclient.model.BaseModel._build_query": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.BatchHttpRequest.__init__": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 417}], ["uritemplate", {"name": {"googleapiclient.discovery.URITEMPLATE": {}}, "names": {"googleapiclient.discovery.URITEMPLATE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1409}], ["url", {"name": {}, "names": {"googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery.Resource._baseUrl": {}}, "qname": {}, "docstring": {"googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery._fix_up_media_path_base_url": {}, "googleapiclient.discovery._urljoin": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.Resource.__init__": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.base.Cache.set": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.set": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.set": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 407}], ["urlencod", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.parse_unique_urlencoded": {}}, "kind": {}, "_index": 406}], ["urlencoded", {"name": {}, "names": {"googleapiclient._helpers.parse_unique_urlencoded": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 403}], ["urljoin", {"name": {}, "names": {"googleapiclient.discovery._urljoin": {}}, "qname": {}, "docstring": {"googleapiclient.discovery._urljoin": {}}, "kind": {}, "_index": 1607}], ["us", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._auth": {}, "googleapiclient._helpers": {}, "googleapiclient.channel": {}, "googleapiclient.schema": {}, "googleapiclient._auth.authorized_http": {}, "googleapiclient._helpers.positional": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.model.ProtocolBufferModel.__init__": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaInMemoryUpload": {}, "googleapiclient.http.MediaInMemoryUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.http.HttpRequest.__init__": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}, "googleapiclient.http.BatchHttpRequest._new_id": {}, "googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}, "googleapiclient.http.HttpRequestMock": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.tunnel_patch": {}, "googleapiclient.http.build_http": {}, "googleapiclient.schema.Schemas._prettyPrintByName": {}, "googleapiclient.schema.Schemas._prettyPrintSchema": {}, "googleapiclient.schema._SchemaToStruct.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._media_path_url_from_info": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.createMethod": {}, "googleapiclient.discovery.createNextMethod": {}, "googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 7}], ["usag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 809}], ["use", {"name": {}, "names": {"googleapiclient.discovery.GOOGLE_API_USE_CLIENT_CERTIFICATE": {}, "googleapiclient.discovery.GOOGLE_API_USE_MTLS_ENDPOINT": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1437}], ["user", {"name": {}, "names": {"googleapiclient.http.set_user_agent": {}}, "qname": {}, "docstring": {"googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 579}], ["user_ag", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.set_user_agent": {}}, "kind": {}, "_index": 1326}], ["userid=userid).execute()", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 812}], ["userid=userid,", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 816}], ["usual", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.http.HttpRequestMock.__init__": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 537}], ["util", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers": {}, "googleapiclient.discovery_cache": {}, "googleapiclient.sample_tools": {}, "googleapiclient.http.MediaUpload._to_json": {}, "googleapiclient.http.MediaUpload.new_from_json": {}}, "kind": {}, "_index": 16}], ["uuid", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}}, "kind": {}, "_index": 563}], ["v1", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1258}], ["v2", {"name": {}, "names": {"googleapiclient.discovery.V2_DISCOVERY_URI": {}}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest": {}}, "kind": {}, "_index": 1159}], ["v2_discovery_uri", {"name": {"googleapiclient.discovery.V2_DISCOVERY_URI": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1415}], ["valid", {"name": {}, "names": {"googleapiclient._auth.is_valid": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient.errors.InvalidChunkSizeError": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.Resource._validate_credentials": {}}, "kind": {}, "_index": 87}], ["validate", {"name": {}, "names": {"googleapiclient.discovery.Resource._validate_credentials": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1738}], ["validated", {"name": {}, "names": {"googleapiclient.discovery.Resource._credentials_validated": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1698}], ["valu", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient._helpers.positional": {}, "googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient._helpers.update_query_params": {}, "googleapiclient._helpers._add_query_parameter": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.new_webhook_channel": {}, "googleapiclient.mimeparse.parse_media_range": {}, "googleapiclient.mimeparse.fitness_and_quality_parsed": {}, "googleapiclient.mimeparse.best_match": {}, "googleapiclient.model.BaseModel": {}, "googleapiclient.http._retry_request": {}, "googleapiclient.http.MediaUpload.stream": {}, "googleapiclient.http.MediaIoBaseUpload.__init__": {}, "googleapiclient.http.MediaIoBaseUpload.stream": {}, "googleapiclient.http.MediaFileUpload.__init__": {}, "googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.BatchHttpRequest._id_to_header": {}, "googleapiclient.http.BatchHttpRequest._header_to_id": {}, "googleapiclient.http.HttpMockSequence": {}, "googleapiclient.http.set_user_agent": {}, "googleapiclient.schema.Schemas.get": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery._cast": {}, "googleapiclient.discovery._media_size_to_long": {}, "googleapiclient.discovery._fix_up_parameters": {}, "googleapiclient.discovery._fix_up_media_upload": {}, "googleapiclient.discovery._fix_up_method_description": {}, "googleapiclient.discovery.ResourceMethodParameters": {}, "googleapiclient.discovery.ResourceMethodParameters.__init__": {}, "googleapiclient.discovery.ResourceMethodParameters.set_parameters": {}, "googleapiclient.discovery.Resource._set_dynamic_attr": {}, "googleapiclient.discovery_cache.base.Cache.get": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache.get": {}, "googleapiclient.discovery_cache.file_cache.Cache.get": {}}, "kind": {}, "_index": 67}], ["value", {"name": {"googleapiclient.schema._SchemaToStruct.value": {}}, "names": {"googleapiclient.schema._SchemaToStruct.value": {}, "googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE": {}, "googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1378}], ["valueerror", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.parse_unique_urlencoded": {}, "googleapiclient.channel.notification_from_headers": {}}, "kind": {}, "_index": 411}], ["variabl", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}, "googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1502}], ["variable", {"name": {}, "names": {}, "qname": {}, "docstring": {}, "kind": {"googleapiclient._auth.HAS_GOOGLE_AUTH": {}, "googleapiclient._auth.HAS_OAUTH2CLIENT": {}, "googleapiclient._helpers.logger": {}, "googleapiclient.errors.__author__": {}, "googleapiclient.errors.HttpError.resp": {}, "googleapiclient.errors.HttpError.content": {}, "googleapiclient.errors.HttpError.uri": {}, "googleapiclient.errors.HttpError.error_details": {}, "googleapiclient.errors.HttpError.reason": {}, "googleapiclient.errors.BatchError.resp": {}, "googleapiclient.errors.BatchError.content": {}, "googleapiclient.errors.BatchError.reason": {}, "googleapiclient.channel.Notification.message_number": {}, "googleapiclient.channel.Notification.state": {}, "googleapiclient.channel.Notification.resource_uri": {}, "googleapiclient.channel.Notification.resource_id": {}, "googleapiclient.channel.Channel.type": {}, "googleapiclient.channel.Channel.id": {}, "googleapiclient.channel.Channel.token": {}, "googleapiclient.channel.Channel.address": {}, "googleapiclient.channel.Channel.expiration": {}, "googleapiclient.channel.Channel.params": {}, "googleapiclient.channel.Channel.resource_id": {}, "googleapiclient.channel.Channel.resource_uri": {}, "googleapiclient.discovery.__author__": {}, "googleapiclient.discovery.HAS_UNIVERSE": {}, "googleapiclient.mimeparse.__version__": {}, "googleapiclient.mimeparse.__author__": {}, "googleapiclient.mimeparse.__email__": {}, "googleapiclient.mimeparse.__license__": {}, "googleapiclient.mimeparse.__credits__": {}, "googleapiclient.http.__author__": {}, "googleapiclient.model.__author__": {}, "googleapiclient.version.__version__": {}, "googleapiclient.model.dump_request_response": {}, "googleapiclient.model.BaseModel.accept": {}, "googleapiclient.model.BaseModel.content_type": {}, "googleapiclient.model.BaseModel.no_content_response": {}, "googleapiclient.model.BaseModel.alt_param": {}, "googleapiclient.model.JsonModel.accept": {}, "googleapiclient.model.JsonModel.content_type": {}, "googleapiclient.model.JsonModel.alt_param": {}, "googleapiclient.model.JsonModel._data_wrapper": {}, "googleapiclient.model.RawModel.accept": {}, "googleapiclient.model.RawModel.content_type": {}, "googleapiclient.model.RawModel.alt_param": {}, "googleapiclient.model.MediaModel.accept": {}, "googleapiclient.model.MediaModel.content_type": {}, "googleapiclient.model.MediaModel.alt_param": {}, "googleapiclient.model.ProtocolBufferModel.accept": {}, "googleapiclient.model.ProtocolBufferModel.content_type": {}, "googleapiclient.model.ProtocolBufferModel.alt_param": {}, "googleapiclient.model.ProtocolBufferModel._protocol_buffer": {}, "googleapiclient.http.MediaUploadProgress.resumable_progress": {}, "googleapiclient.http.MediaUploadProgress.total_size": {}, "googleapiclient.http.MediaDownloadProgress.resumable_progress": {}, "googleapiclient.http.MediaDownloadProgress.total_size": {}, "googleapiclient.http.MediaIoBaseUpload._fd": {}, "googleapiclient.http.MediaIoBaseUpload._mimetype": {}, "googleapiclient.http.MediaIoBaseUpload._chunksize": {}, "googleapiclient.http.MediaIoBaseUpload._resumable": {}, "googleapiclient.http.MediaIoBaseUpload._size": {}, "googleapiclient.http.MediaFileUpload._fd": {}, "googleapiclient.http.MediaFileUpload._filename": {}, "googleapiclient.http.MediaIoBaseDownload._fd": {}, "googleapiclient.http.MediaIoBaseDownload._request": {}, "googleapiclient.http.MediaIoBaseDownload._uri": {}, "googleapiclient.http.MediaIoBaseDownload._chunksize": {}, "googleapiclient.http.MediaIoBaseDownload._progress": {}, "googleapiclient.http.MediaIoBaseDownload._total_size": {}, "googleapiclient.http.MediaIoBaseDownload._done": {}, "googleapiclient.http.MediaIoBaseDownload._sleep": {}, "googleapiclient.http.MediaIoBaseDownload._rand": {}, "googleapiclient.http.MediaIoBaseDownload._headers": {}, "googleapiclient.http._StreamSlice._stream": {}, "googleapiclient.http._StreamSlice._begin": {}, "googleapiclient.http._StreamSlice._chunksize": {}, "googleapiclient.http.HttpRequest.uri": {}, "googleapiclient.http.HttpRequest.method": {}, "googleapiclient.http.HttpRequest.body": {}, "googleapiclient.http.HttpRequest.headers": {}, "googleapiclient.http.HttpRequest.methodId": {}, "googleapiclient.http.HttpRequest.http": {}, "googleapiclient.http.HttpRequest.postproc": {}, "googleapiclient.http.HttpRequest.resumable": {}, "googleapiclient.http.HttpRequest.response_callbacks": {}, "googleapiclient.http.HttpRequest._in_error_state": {}, "googleapiclient.http.HttpRequest.body_size": {}, "googleapiclient.http.HttpRequest.resumable_uri": {}, "googleapiclient.http.HttpRequest.resumable_progress": {}, "googleapiclient.http.HttpRequest._rand": {}, "googleapiclient.http.HttpRequest._sleep": {}, "googleapiclient.http.BatchHttpRequest._batch_uri": {}, "googleapiclient.http.BatchHttpRequest._callback": {}, "googleapiclient.http.BatchHttpRequest._requests": {}, "googleapiclient.http.BatchHttpRequest._callbacks": {}, "googleapiclient.http.BatchHttpRequest._order": {}, "googleapiclient.http.BatchHttpRequest._last_auto_id": {}, "googleapiclient.http.BatchHttpRequest._base_id": {}, "googleapiclient.http.BatchHttpRequest._responses": {}, "googleapiclient.http.BatchHttpRequest._refreshed_credentials": {}, "googleapiclient.http.HttpRequestMock.resp": {}, "googleapiclient.http.HttpRequestMock.content": {}, "googleapiclient.http.HttpRequestMock.postproc": {}, "googleapiclient.http.RequestMockBuilder.responses": {}, "googleapiclient.http.RequestMockBuilder.check_unexpected": {}, "googleapiclient.http.HttpMock.data": {}, "googleapiclient.http.HttpMock.response_headers": {}, "googleapiclient.http.HttpMock.headers": {}, "googleapiclient.http.HttpMock.uri": {}, "googleapiclient.http.HttpMock.method": {}, "googleapiclient.http.HttpMock.body": {}, "googleapiclient.http.HttpMockSequence._iterable": {}, "googleapiclient.http.HttpMockSequence.follow_redirects": {}, "googleapiclient.http.HttpMockSequence.request_sequence": {}, "googleapiclient.schema.__author__": {}, "googleapiclient.schema.Schemas.schemas": {}, "googleapiclient.schema.Schemas.pretty": {}, "googleapiclient.schema._SchemaToStruct.value": {}, "googleapiclient.schema._SchemaToStruct.string": {}, "googleapiclient.schema._SchemaToStruct.schema": {}, "googleapiclient.schema._SchemaToStruct.dent": {}, "googleapiclient.schema._SchemaToStruct.from_cache": {}, "googleapiclient.schema._SchemaToStruct.seen": {}, "googleapiclient.discovery.logger": {}, "googleapiclient.discovery.ResourceMethodParameters.argmap": {}, "googleapiclient.discovery.ResourceMethodParameters.required_params": {}, "googleapiclient.discovery.ResourceMethodParameters.repeated_params": {}, "googleapiclient.discovery.ResourceMethodParameters.pattern_params": {}, "googleapiclient.discovery.ResourceMethodParameters.query_params": {}, "googleapiclient.discovery.ResourceMethodParameters.path_params": {}, "googleapiclient.discovery.ResourceMethodParameters.param_types": {}, "googleapiclient.discovery.ResourceMethodParameters.enum_params": {}, "googleapiclient.discovery.Resource._dynamic_attrs": {}, "googleapiclient.discovery.Resource._http": {}, "googleapiclient.discovery.Resource._baseUrl": {}, "googleapiclient.discovery.Resource._model": {}, "googleapiclient.discovery.Resource._developerKey": {}, "googleapiclient.discovery.Resource._requestBuilder": {}, "googleapiclient.discovery.Resource._resourceDesc": {}, "googleapiclient.discovery.Resource._rootDesc": {}, "googleapiclient.discovery.Resource._schema": {}, "googleapiclient.discovery.Resource._universe_domain": {}, "googleapiclient.discovery.Resource._credentials_validated": {}, "googleapiclient.discovery_cache.appengine_memcache.Cache._max_age": {}, "googleapiclient.discovery_cache.appengine_memcache.cache": {}, "googleapiclient.discovery_cache.file_cache.Cache._max_age": {}, "googleapiclient.discovery_cache.file_cache.Cache._file": {}, "googleapiclient.discovery_cache.file_cache.cache": {}, "googleapiclient.sample_tools.__author__": {}}, "_index": 268}], ["varname", {"name": {"googleapiclient.discovery.VARNAME": {}}, "names": {"googleapiclient.discovery.VARNAME": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1411}], ["veri", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 968}], ["version", {"name": {"googleapiclient.version": {}}, "names": {"googleapiclient.version": {}, "googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.mimeparse.__version__": {}, "googleapiclient.version.__version__": {}, "googleapiclient.model._PY_VERSION": {}, "googleapiclient.discovery.APICoreVersionError": {}}, "qname": {}, "docstring": {"googleapiclient.errors.UnknownApiNameOrVersion": {}, "googleapiclient.channel.Notification": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.http._StreamSlice": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._discovery_service_uri_options": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery_cache.get_static_doc": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 262}], ["via", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.sample_tools.init": {}}, "kind": {}, "_index": 46}], ["violat", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 391}], ["virtual", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 1084}], ["wai", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.makepatch": {}}, "kind": {}, "_index": 803}], ["want", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1513}], ["warn", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}}, "kind": {}, "_index": 388}], ["warning", {"name": {}, "names": {"googleapiclient._helpers.POSITIONAL_WARNING": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 313}], ["watch", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.Notification.__init__": {}, "googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}, "googleapiclient.channel.Channel.body": {}, "googleapiclient.channel.Channel.update": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 53}], ["web_hook", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel.Channel": {}, "googleapiclient.channel.Channel.__init__": {}}, "kind": {}, "_index": 562}], ["webapp2", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.channel": {}}, "kind": {}, "_index": 73}], ["webhook", {"name": {}, "names": {"googleapiclient.channel.new_webhook_channel": {}}, "qname": {}, "docstring": {"googleapiclient.channel": {}, "googleapiclient.channel.notification_from_headers": {}, "googleapiclient.channel.new_webhook_channel": {}}, "kind": {}, "_index": 47}], ["well", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.BaseModel": {}}, "kind": {}, "_index": 722}], ["whatev", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._fix_up_parameters": {}}, "kind": {}, "_index": 1578}], ["whenev", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery_cache.file_cache": {}}, "kind": {}, "_index": 133}], ["whether", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http._should_retry_response": {}, "googleapiclient.http.MediaUpload.resumable": {}, "googleapiclient.http.MediaIoBaseUpload.resumable": {}, "googleapiclient.http.RequestMockBuilder.__init__": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery._retrieve_discovery_doc": {}, "googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 844}], ["wiki", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 1266}], ["wild", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse": {}}, "kind": {}, "_index": 179}], ["wipe", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.Resource.__getstate__": {}, "googleapiclient.discovery.Resource.__setstate__": {}}, "kind": {}, "_index": 1714}], ["wire", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model": {}, "googleapiclient.model.Model": {}, "googleapiclient.model.Model.request": {}, "googleapiclient.model.Model.response": {}, "googleapiclient.model.BaseModel.response": {}, "googleapiclient.discovery.build": {}, "googleapiclient.discovery.Resource.__init__": {}}, "kind": {}, "_index": 205}], ["with", {"name": {}, "names": {"googleapiclient._auth.with_scopes": {}, "googleapiclient.discovery._check_api_core_compatible_with_credentials_universe": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 280}], ["with_scopes", {"name": {"googleapiclient._auth.with_scopes": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 279}], ["within", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.build_from_document": {}}, "kind": {}, "_index": 1551}], ["word", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery.fix_method_name": {}}, "kind": {}, "_index": 1473}], ["words", {"name": {}, "names": {"googleapiclient.discovery.RESERVED_WORDS": {}}, "qname": {}, "docstring": {}, "kind": {}, "_index": 1461}], ["work", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaUpload": {}, "googleapiclient.http.MediaIoBaseUpload": {}, "googleapiclient.http.MediaFileUpload": {}}, "kind": {}, "_index": 899}], ["wrap", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.http._StreamSlice.__init__": {}}, "kind": {}, "_index": 760}], ["wrapper", {"name": {}, "names": {"googleapiclient.model.JsonModel._data_wrapper": {}}, "qname": {}, "docstring": {"googleapiclient.model.JsonModel.__init__": {}, "googleapiclient.http._StreamSlice": {}}, "kind": {}, "_index": 761}], ["write", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient._helpers.positional": {}, "googleapiclient.http.MediaIoBaseDownload.__init__": {}}, "kind": {}, "_index": 346}], ["wrong", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.BatchHttpRequest._execute": {}, "googleapiclient.http.BatchHttpRequest.execute": {}}, "kind": {}, "_index": 1229}], ["x", {"name": {}, "names": {"googleapiclient.channel.X_GOOG_CHANNEL_ID": {}, "googleapiclient.channel.X_GOOG_MESSAGE_NUMBER": {}, "googleapiclient.channel.X_GOOG_RESOURCE_STATE": {}, "googleapiclient.channel.X_GOOG_RESOURCE_URI": {}, "googleapiclient.channel.X_GOOG_RESOURCE_ID": {}}, "qname": {}, "docstring": {"googleapiclient.channel.notification_from_headers": {}}, "kind": {}, "_index": 521}], ["x_goog_channel_id", {"name": {"googleapiclient.channel.X_GOOG_CHANNEL_ID": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 520}], ["x_goog_message_number", {"name": {"googleapiclient.channel.X_GOOG_MESSAGE_NUMBER": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 524}], ["x_goog_resource_id", {"name": {"googleapiclient.channel.X_GOOG_RESOURCE_ID": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 531}], ["x_goog_resource_state", {"name": {"googleapiclient.channel.X_GOOG_RESOURCE_STATE": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 526}], ["x_goog_resource_uri", {"name": {"googleapiclient.channel.X_GOOG_RESOURCE_URI": {}}, "names": {}, "qname": {}, "docstring": {}, "kind": {}, "_index": 529}], ["xhtml", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.mimeparse.parse_mime_type": {}}, "kind": {}, "_index": 639}], ["zero", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.http.MediaIoBaseDownload.next_chunk": {}, "googleapiclient.http.HttpRequest.execute": {}, "googleapiclient.http.HttpRequest.next_chunk": {}}, "kind": {}, "_index": 1069}], ["zyp", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.discovery._cast": {}, "googleapiclient.discovery.ResourceMethodParameters": {}}, "kind": {}, "_index": 1558}], ["{", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 230}], ["}", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}, "googleapiclient.http.RequestMockBuilder": {}}, "kind": {}, "_index": 249}], ["}\"\"\"", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 250}], ["},", {"name": {}, "names": {}, "qname": {}, "docstring": {"googleapiclient.schema": {}}, "kind": {}, "_index": 236}]], "pipeline": []} \ No newline at end of file diff --git a/docs/pydoc/googleapiclient._auth.html b/docs/pydoc/googleapiclient._auth.html new file mode 100644 index 00000000000..590f359372e --- /dev/null +++ b/docs/pydoc/googleapiclient._auth.html @@ -0,0 +1,812 @@ + + + + + + + + googleapiclient._auth + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Helpers for authentication using oauth2client or google-auth.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functionapply_credentialsUndocumented
Functionauthorized_httpReturns an http client that is authorized with the given credentials.
Functioncredentials_from_fileReturns credentials loaded from a file.
Functiondefault_credentialsReturns Application Default Credentials.
Functionget_credentials_from_httpUndocumented
Functionis_validUndocumented
Functionrefresh_credentialsUndocumented
Functionwith_scopesScopes the credentials if necessary.
VariableHAS_GOOGLE_AUTHUndocumented
VariableHAS_OAUTH2CLIENTUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def apply_credentials(credentials, headers): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def authorized_http(credentials): + + + + + ¶ + +
+
+ +

Returns an http client that is authorized with the given credentials. + +Args: + credentials (Union[ + google.auth.credentials.Credentials, + oauth2client.client.Credentials]): The credentials to use. + +Returns: + Union[httplib2.Http, google_auth_httplib2.AuthorizedHttp]: An + authorized http client.

+
+
+ + + + + + + + +
+ + + def credentials_from_file(filename, scopes=None, quota_project_id=None): + + + + + ¶ + +
+
+ +

Returns credentials loaded from a file.

+
+
+ + + + + + + + +
+ + + def default_credentials(scopes=None, quota_project_id=None): + + + + + ¶ + +
+
+ +

Returns Application Default Credentials.

+
+
+ + + + + + + + +
+ + + def get_credentials_from_http(http): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def is_valid(credentials): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def refresh_credentials(credentials): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def with_scopes(credentials, scopes): + + + + + ¶ + +
+
+ +

Scopes the credentials if necessary. + +Args: + credentials (Union[ + google.auth.credentials.Credentials, + oauth2client.client.Credentials]): The credentials to scope. + scopes (Sequence[str]): The list of scopes. + +Returns: + Union[google.auth.credentials.Credentials, + oauth2client.client.Credentials]: The scoped credentials.

+
+
+ + + + + + + + +
+ + HAS_GOOGLE_AUTH: bool = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + HAS_OAUTH2CLIENT: bool = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient._helpers.html b/docs/pydoc/googleapiclient._helpers.html new file mode 100644 index 00000000000..ae48fa9b6b5 --- /dev/null +++ b/docs/pydoc/googleapiclient._helpers.html @@ -0,0 +1,972 @@ + + + + + + + + googleapiclient._helpers + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Helper functions for commonly used utilities.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functionparse_unique_urlencodedParses unique key-value parameters from urlencoded content.
FunctionpositionalA decorator to declare that only the first N arguments may be positional.
Functionupdate_query_paramsUpdates a URI with new query parameters.
ConstantPOSITIONAL_EXCEPTIONUndocumented
ConstantPOSITIONAL_IGNOREUndocumented
ConstantPOSITIONAL_SETUndocumented
ConstantPOSITIONAL_WARNINGUndocumented
VariableloggerUndocumented
Function_add_query_parameterAdds a query parameter to a url.
Constant_IS_DIR_MESSAGEUndocumented
Constant_MISSING_FILE_MESSAGEUndocumented
Constant_SYM_LINK_MESSAGEUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def parse_unique_urlencoded(content): + + + + + ¶ + +
+
+ +

Parses unique key-value parameters from urlencoded content. + +Args: + content: string, URL-encoded key-value pairs. + +Returns: + dict, The key-value pairs from ``content``. + +Raises: + ValueError: if one of the keys is repeated.

+
+
+ + + + + + + + +
+ + + def positional(max_positional_args): + + + + + ¶ + +
+
+ +

A decorator to declare that only the first N arguments may be positional. + +This decorator makes it easy to support Python 3 style keyword-only +parameters. For example, in Python 3 it is possible to write:: + + def fn(pos1, *, kwonly1=None, kwonly2=None): + ... + +All named parameters after ``*`` must be a keyword:: + + fn(10, 'kw1', 'kw2') # Raises exception. + fn(10, kwonly1='kw1') # Ok. + +Example +^^^^^^^ + +To define a function like above, do:: + + @positional(1) + def fn(pos1, kwonly1=None, kwonly2=None): + ... + +If no default value is provided to a keyword argument, it becomes a +required keyword argument:: + + @positional(0) + def fn(required_kw): + ... + +This must be called with the keyword parameter:: + + fn() # Raises exception. + fn(10) # Raises exception. + fn(required_kw=10) # Ok. + +When defining instance or class methods always remember to account for +``self`` and ``cls``:: + + class MyClass(object): + + @positional(2) + def my_method(self, pos1, kwonly1=None): + ... + + @classmethod + @positional(2) + def my_method(cls, pos1, kwonly1=None): + ... + +The positional decorator behavior is controlled by +``_helpers.positional_parameters_enforcement``, which may be set to +``POSITIONAL_EXCEPTION``, ``POSITIONAL_WARNING`` or +``POSITIONAL_IGNORE`` to raise an exception, log a warning, or do +nothing, respectively, if a declaration is violated. + +Args: + max_positional_arguments: Maximum number of positional arguments. All + parameters after this index must be + keyword only. + +Returns: + A decorator that prevents using arguments after max_positional_args + from being used as positional parameters. + +Raises: + TypeError: if a keyword-only argument is provided as a positional + parameter, but only if + _helpers.positional_parameters_enforcement is set to + POSITIONAL_EXCEPTION.

+
+
+ + + + + + + + +
+ + + def update_query_params(uri, params): + + + + + ¶ + +
+
+ +

Updates a URI with new query parameters. + +If a given key from ``params`` is repeated in the ``uri``, then +the URI will be considered invalid and an error will occur. + +If the URI is valid, then each value from ``params`` will +replace the corresponding value in the query parameters (if +it exists). + +Args: + uri: string, A valid URI, with potential existing query parameters. + params: dict, A dictionary of query parameters. + +Returns: + The same URI but with the new query parameters added.

+
+
+ + + + + + + + +
+ + POSITIONAL_EXCEPTION: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'EXCEPTION'
+
+
+ + + + + + + + +
+ + POSITIONAL_IGNORE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'IGNORE'
+
+
+ + + + + + + + +
+ + POSITIONAL_SET = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
frozenset([POSITIONAL_WARNING, POSITIONAL_EXCEPTION, POSITIONAL_IGNORE])
+
+
+ + + + + + + + +
+ + POSITIONAL_WARNING: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'WARNING'
+
+
+ + + + + + + + +
+ + logger = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _add_query_parameter(url, name, value): + + + + + ¶ + +
+
+ +

Adds a query parameter to a url. + +Replaces the current value if it already exists in the URL. + +Args: + url: string, url to add the query parameter to. + name: string, query parameter name. + value: string, query parameter value. + +Returns: + Updated query parameter. Does not update the url if value is None.

+
+
+ + + + + + + + +
+ + _IS_DIR_MESSAGE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'{0}: Is a directory'
+
+
+ + + + + + + + +
+ + _MISSING_FILE_MESSAGE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'Cannot access {0}: No such file or directory'
+
+
+ + + + + + + + +
+ + _SYM_LINK_MESSAGE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'File: {0}: Is a symbolic link.'
+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.channel.Channel.html b/docs/pydoc/googleapiclient.channel.Channel.html new file mode 100644 index 00000000000..7abc517acad --- /dev/null +++ b/docs/pydoc/googleapiclient.channel.Channel.html @@ -0,0 +1,892 @@ + + + + + + + + googleapiclient.channel.Channel + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class Channel(object):

Constructor: Channel(type, id, token, address, ...)

+

View In Hierarchy

+
+ +
+

A Channel for notifications. + +Usually not constructed directly, instead it is returned from helper +functions like new_webhook_channel(). + +Attributes: + type: str, The type of delivery mechanism used by this channel. For + example, 'web_hook'. + id: str, A UUID for the channel. + token: str, An arbitrary string associated with the channel that + is delivered to the target address with each event delivered + over this channel. + address: str, The address of the receiving entity where events are + delivered. Specific to the channel type. + expiration: int, The time, in milliseconds from the epoch, when this + channel will expire. + params: dict, A dictionary of string to string, with additional parameters + controlling delivery channel behavior. + resource_id: str, An opaque id that identifies the resource that is + being watched. Stable across different API versions. + resource_uri: str, The canonicalized ID of the watched resource.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Create a new Channel.
MethodbodyBuild a body from the Channel.
MethodupdateUpdate a channel with information from the response of watch().
Instance VariableaddressUndocumented
Instance VariableexpirationUndocumented
Instance VariableidUndocumented
Instance VariableparamsUndocumented
Instance Variableresource_idUndocumented
Instance Variableresource_uriUndocumented
Instance VariabletokenUndocumented
Instance VariabletypeUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(5)
+ def __init__(self, type, id, token, address, expiration=None, params=None, resource_id='', resource_uri=''): + + + + + ¶ + +
+
+ +

Create a new Channel. + +In user code, this Channel constructor will not typically be called +manually since there are functions for creating channels for each specific +type with a more customized set of arguments to pass. + +Args: + type: str, The type of delivery mechanism used by this channel. For + example, 'web_hook'. + id: str, A UUID for the channel. + token: str, An arbitrary string associated with the channel that + is delivered to the target address with each event delivered + over this channel. + address: str, The address of the receiving entity where events are + delivered. Specific to the channel type. + expiration: int, The time, in milliseconds from the epoch, when this + channel will expire. + params: dict, A dictionary of string to string, with additional parameters + controlling delivery channel behavior. + resource_id: str, An opaque id that identifies the resource that is + being watched. Stable across different API versions. + resource_uri: str, The canonicalized ID of the watched resource.

+
+
+ + + + + + + + +
+ + + def body(self): + + + + + ¶ + +
+
+ +

Build a body from the Channel. + +Constructs a dictionary that's appropriate for passing into watch() +methods as the value of body argument. + +Returns: + A dictionary representation of the channel.

+
+
+ + + + + + + + +
+ + + def update(self, resp): + + + + + ¶ + +
+
+ +

Update a channel with information from the response of watch(). + +When a request is sent to watch() a resource, the response returned +from the watch() request is a dictionary with updated channel information, +such as the resource_id, which is needed when stopping a subscription. + +Args: + resp: dict, The response from a watch() method.

+
+
+ + + + + + + + +
+ + address = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + expiration = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + id = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + params = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resource_id = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resource_uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + token = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + type = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.channel.Notification.html b/docs/pydoc/googleapiclient.channel.Notification.html new file mode 100644 index 00000000000..1cf8d1eaef5 --- /dev/null +++ b/docs/pydoc/googleapiclient.channel.Notification.html @@ -0,0 +1,621 @@ + + + + + + + + googleapiclient.channel.Notification + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

A Notification from a Channel. + +Notifications are not usually constructed directly, but are returned +from functions like notification_from_headers(). + +Attributes: + message_number: int, The unique id number of this notification. + state: str, The state of the resource being monitored. + uri: str, The address of the resource being monitored. + resource_id: str, The unique identifier of the version of the resource at + this event.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Notification constructor.
Instance Variablemessage_numberUndocumented
Instance Variableresource_idUndocumented
Instance Variableresource_uriUndocumented
Instance VariablestateUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(5)
+ def __init__(self, message_number, state, resource_uri, resource_id): + + + + + ¶ + +
+
+ +

Notification constructor. + +Args: + message_number: int, The unique id number of this notification. + state: str, The state of the resource being monitored. Can be one + of "exists", "not_exists", or "sync". + resource_uri: str, The address of the resource being monitored. + resource_id: str, The identifier of the watched resource.

+
+
+ + + + + + + + +
+ + message_number = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resource_id = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resource_uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + state = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.channel.html b/docs/pydoc/googleapiclient.channel.html new file mode 100644 index 00000000000..6b7a04d4308 --- /dev/null +++ b/docs/pydoc/googleapiclient.channel.html @@ -0,0 +1,915 @@ + + + + + + + + googleapiclient.channel + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Channel notifications support. + +Classes and functions to support channel subscriptions and notifications +on those channels. + +Notes: + - This code is based on experimental APIs and is subject to change. + - Notification does not do deduplication of notification ids, that's up to + the receiver. + - Storing the Channel between calls is up to the caller. + + +Example setting up a channel: + + # Create a new channel that gets notifications via webhook. + channel = new_webhook_channel("https://example.com/my_web_hook") + + # Store the channel, keyed by 'channel.id'. Store it before calling the + # watch method because notifications may start arriving before the watch + # method returns. + ... + + resp = service.objects().watchAll( + bucket="some_bucket_id", body=channel.body()).execute() + channel.update(resp) + + # Store the channel, keyed by 'channel.id'. Store it after being updated + # since the resource_id value will now be correct, and that's needed to + # stop a subscription. + ... + + +An example Webhook implementation using webapp2. Note that webapp2 puts +headers in a case insensitive dictionary, as headers aren't guaranteed to +always be upper case. + + id = self.request.headers[X_GOOG_CHANNEL_ID] + + # Retrieve the channel by id. + channel = ... + + # Parse notification from the headers, including validating the id. + n = notification_from_headers(channel, self.request.headers) + + # Do app specific stuff with the notification here. + if n.resource_state == 'sync': + # Code to handle sync state. + elif n.resource_state == 'exists': + # Code to handle the exists state. + elif n.resource_state == 'not_exists': + # Code to handle the not exists state. + + +Example of unsubscribing. + + service.channels().stop(channel.body()).execute()

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassChannelA Channel for notifications.
ClassNotificationA Notification from a Channel.
Functionnew_webhook_channelCreate a new webhook Channel.
Functionnotification_from_headersParse a notification from the webhook request headers, validate the notification, and return a Notification object.
ConstantCHANNEL_PARAMSUndocumented
ConstantEPOCHUndocumented
ConstantX_GOOG_CHANNEL_IDUndocumented
ConstantX_GOOG_MESSAGE_NUMBERUndocumented
ConstantX_GOOG_RESOURCE_IDUndocumented
ConstantX_GOOG_RESOURCE_STATEUndocumented
ConstantX_GOOG_RESOURCE_URIUndocumented
Function_upper_header_keysUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(2)
+ def new_webhook_channel(url, token=None, expiration=None, params=None): + + + + + ¶ + +
+
+ +

Create a new webhook Channel. + +Args: + url: str, URL to post notifications to. + token: str, An arbitrary string associated with the channel that + is delivered to the target address with each notification delivered + over this channel. + expiration: datetime.datetime, A time in the future when the channel + should expire. Can also be None if the subscription should use the + default expiration. Note that different services may have different + limits on how long a subscription lasts. Check the response from the + watch() method to see the value the service has set for an expiration + time. + params: dict, Extra parameters to pass on channel creation. Currently + not used for webhook channels.

+
+
+ + + + + + + + +
+ + + def notification_from_headers(channel, headers): + + + + + ¶ + +
+
+ +

Parse a notification from the webhook request headers, validate + the notification, and return a Notification object. + +Args: + channel: Channel, The channel that the notification is associated with. + headers: dict, A dictionary like object that contains the request headers + from the webhook HTTP request. + +Returns: + A Notification object. + +Raises: + errors.InvalidNotificationError if the notification is invalid. + ValueError if the X-GOOG-MESSAGE-NUMBER can't be converted to an int.

+
+
+ + + + + + + + +
+ + CHANNEL_PARAMS: dict[str, str] = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
{'address': 'address',
+ 'id': 'id',
+ 'expiration': 'expiration',
+ 'params': 'params',
+ 'resourceId': 'resource_id',
+ 'resourceUri': 'resource_uri',
+ 'type': 'type',
+...
+
+
+ + + + + + + + +
+ + EPOCH = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
datetime.datetime(1970, 1, 1)
+
+
+ + + + + + + + +
+ + X_GOOG_CHANNEL_ID: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'X-GOOG-CHANNEL-ID'
+
+
+ + + + + + + + +
+ + X_GOOG_MESSAGE_NUMBER: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'X-GOOG-MESSAGE-NUMBER'
+
+
+ + + + + + + + +
+ + X_GOOG_RESOURCE_ID: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'X-GOOG-RESOURCE-ID'
+
+
+ + + + + + + + +
+ + X_GOOG_RESOURCE_STATE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'X-GOOG-RESOURCE-STATE'
+
+
+ + + + + + + + +
+ + X_GOOG_RESOURCE_URI: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'X-GOOG-RESOURCE-URI'
+
+
+ + + + + + + + +
+ + + def _upper_header_keys(headers): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery.APICoreVersionError.html b/docs/pydoc/googleapiclient.discovery.APICoreVersionError.html new file mode 100644 index 00000000000..af0c11b3e63 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery.APICoreVersionError.html @@ -0,0 +1,765 @@ + + + + + + + + googleapiclient.discovery.APICoreVersionError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class APICoreVersionError(ValueError):

+

View In Hierarchy

+
+ +
+

Undocumented

+
+ +
+ + + + + + + + + +
Method__init__Undocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery.Resource.html b/docs/pydoc/googleapiclient.discovery.Resource.html new file mode 100644 index 00000000000..b4697026d32 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery.Resource.html @@ -0,0 +1,1659 @@ + + + + + + + + googleapiclient.discovery.Resource + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

A class for interacting with a resource.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__enter__Undocumented
Method__exit__Undocumented
Method__getstate__Trim the state down to something that can be pickled.
Method__init__Build a Resource from the API description.
Method__setstate__Reconstitute the state of the object from being pickled.
MethodcloseClose httplib2 connections.
Method_add_basic_methodsUndocumented
Method_add_nested_resourcesUndocumented
Method_add_next_methodsUndocumented
Method_set_dynamic_attrSets an instance attribute and tracks it in a list of dynamic attributes.
Method_set_service_methodsUndocumented
Method_validate_credentialsValidates client's and credentials' universe domains are consistent.
Instance Variable_baseUrlUndocumented
Instance Variable_credentials_validatedUndocumented
Instance Variable_developerKeyUndocumented
Instance Variable_dynamic_attrsUndocumented
Instance Variable_httpUndocumented
Instance Variable_modelUndocumented
Instance Variable_requestBuilderUndocumented
Instance Variable_resourceDescUndocumented
Instance Variable_rootDescUndocumented
Instance Variable_schemaUndocumented
Instance Variable_universe_domainUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __enter__(self): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def __exit__(self, exc_type, exc, exc_tb): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def __getstate__(self): + + + + + ¶ + +
+
+ +

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.

+
+
+ + + + + + + + +
+ + + def __init__(self, http, baseUrl, model, requestBuilder, developerKey, resourceDesc, rootDesc, schema, universe_domain=universe.DEFAULT_UNIVERSE if HAS_UNIVERSE else ''): + + + + + ¶ + +
+
+ +

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: googleapiclient.Model, converts to and from the wire format. + requestBuilder: class or callable that instantiates an + googleapiclient.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. + universe_domain: string, the universe for the API. The default universe + is "googleapis.com".

+
+
+ + + + + + + + +
+ + + def __setstate__(self, state): + + + + + ¶ + +
+
+ +

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.

+
+
+ + + + + + + + +
+ + + def close(self): + + + + + ¶ + +
+
+ +

Close httplib2 connections.

+
+
+ + + + + + + + +
+ + + def _add_basic_methods(self, resourceDesc, rootDesc, schema): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def _add_nested_resources(self, resourceDesc, rootDesc, schema): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def _add_next_methods(self, resourceDesc, schema): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def _set_dynamic_attr(self, attr_name, value): + + + + + ¶ + +
+
+ +

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.

+
+
+ + + + + + + + +
+ + + def _set_service_methods(self): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def _validate_credentials(self): + + + + + ¶ + +
+
+ +

Validates client's and credentials' universe domains are consistent. + +Returns: + bool: True iff the configured universe domain is valid. + +Raises: + UniverseMismatchError: If the configured universe domain is not valid.

+
+
+ + + + + + + + +
+ + _baseUrl = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _credentials_validated = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _developerKey = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _dynamic_attrs: list = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _http = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _model = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _requestBuilder = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _resourceDesc = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _rootDesc = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _schema = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _universe_domain = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery.ResourceMethodParameters.html b/docs/pydoc/googleapiclient.discovery.ResourceMethodParameters.html new file mode 100644 index 00000000000..b68cff7605b --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery.ResourceMethodParameters.html @@ -0,0 +1,1155 @@ + + + + + + + + googleapiclient.discovery.ResourceMethodParameters + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class ResourceMethodParameters(object):

Constructor: ResourceMethodParameters(method_desc)

+

View In Hierarchy

+
+ +
+

Represents the parameters associated with a method. + +Attributes: + argmap: Map from method parameter name (string) to query parameter name + (string). + required_params: List of required parameters (represented by parameter + name as string). + repeated_params: List of repeated parameters (represented by parameter + name as string). + pattern_params: Map from method parameter name (string) to regular + expression (as a string). If the pattern is set for a parameter, the + value for that parameter must match the regular expression. + query_params: List of parameters (represented by parameter name as string) + that will be used in the query string. + path_params: Set of parameters (represented by parameter name as string) + that will be used in the base URL path. + param_types: Map from method parameter name (string) to parameter type. Type + can be any valid JSON schema type; valid values are 'any', 'array', + 'boolean', 'integer', 'number', 'object', or 'string'. Reference: + http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1 + enum_params: Map from method parameter name (string) to list of strings, + where each list of strings is the list of acceptable enum values.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor for ResourceMethodParameters.
Methodset_parametersPopulates maps and lists based on method description.
Instance VariableargmapUndocumented
Instance Variableenum_paramsUndocumented
Instance Variableparam_typesUndocumented
Instance Variablepath_paramsUndocumented
Instance Variablepattern_paramsUndocumented
Instance Variablequery_paramsUndocumented
Instance Variablerepeated_paramsUndocumented
Instance Variablerequired_paramsUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, method_desc): + + + + + ¶ + +
+
+ +

Constructor for ResourceMethodParameters. + +Sets default values and defers to set_parameters to populate. + +Args: + method_desc: Dictionary with metadata describing an API method. Value + comes from the dictionary of methods stored in the 'methods' key in + the deserialized discovery document.

+
+
+ + + + + + + + +
+ + + def set_parameters(self, method_desc): + + + + + ¶ + +
+
+ +

Populates maps and lists based on method description. + +Iterates through each parameter for the method and parses the values from +the parameter dictionary. + +Args: + method_desc: Dictionary with metadata describing an API method. Value + comes from the dictionary of methods stored in the 'methods' key in + the deserialized discovery document.

+
+
+ + + + + + + + +
+ + argmap: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + enum_params: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + param_types: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + path_params: set = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + pattern_params: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + query_params: list = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + repeated_params: list = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + required_params: list = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery._BytesGenerator.html b/docs/pydoc/googleapiclient.discovery._BytesGenerator.html new file mode 100644 index 00000000000..f0c43b5b639 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery._BytesGenerator.html @@ -0,0 +1,719 @@ + + + + + + + + googleapiclient.discovery._BytesGenerator + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class _BytesGenerator(BytesGenerator):

+

View In Hierarchy

+
+ +
+

Undocumented

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery.html b/docs/pydoc/googleapiclient.discovery.html new file mode 100644 index 00000000000..2ffae0d4c61 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery.html @@ -0,0 +1,2346 @@ + + + + + + + + googleapiclient.discovery + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Client for discovery based APIs. + +A client library for Google's discovery based APIs.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassResourceA class for interacting with a resource.
ClassResourceMethodParametersRepresents the parameters associated with a method.
ExceptionAPICoreVersionErrorUndocumented
FunctionbuildConstruct a Resource for interacting with an API.
Functionbuild_from_documentCreate a Resource for interacting with an API.
FunctioncreateMethodCreates a method for attaching to a Resource.
FunctioncreateNextMethodCreates any _next methods for attaching to a Resource.
Functionfix_method_nameFix method names to avoid '$' characters and reserved word conflicts.
Functionkey2paramConverts key names into parameter names.
ConstantBODY_PARAMETER_DEFAULT_VALUEUndocumented
ConstantDEFAULT_METHOD_DOCUndocumented
ConstantDEFAULT_UNIVERSEUndocumented
ConstantDISCOVERY_URIUndocumented
ConstantGOOGLE_API_USE_CLIENT_CERTIFICATEUndocumented
ConstantGOOGLE_API_USE_MTLS_ENDPOINTUndocumented
ConstantGOOGLE_CLOUD_UNIVERSE_DOMAINUndocumented
ConstantHTTP_PAYLOAD_METHODSUndocumented
ConstantMEDIA_BODY_PARAMETER_DEFAULT_VALUEUndocumented
ConstantMEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUEUndocumented
ConstantRESERVED_WORDSUndocumented
ConstantSTACK_QUERY_PARAMETER_DEFAULT_VALUEUndocumented
ConstantSTACK_QUERY_PARAMETERSUndocumented
ConstantURITEMPLATEUndocumented
ConstantV2_DISCOVERY_URIUndocumented
ConstantVARNAMEUndocumented
Variable__author__Undocumented
VariableHAS_UNIVERSEUndocumented
VariableloggerUndocumented
Class_BytesGeneratorUndocumented
Function_castConvert value to a string based on JSON Schema type.
Function_check_api_core_compatible_with_credentials_universeUndocumented
Function_discovery_service_uri_options Returns Discovery URIs to be used for attempting to build the API Resource.
Function_findPageTokenNameSearch field names for one like a page token.
Function_fix_up_media_path_base_urlUpdate the media upload base url if its netloc doesn't match base url netloc.
Function_fix_up_media_uploadAdds 'media_body' and 'media_mime_type' parameters if supported by method.
Function_fix_up_method_descriptionUpdates a method description in a discovery document.
Function_fix_up_parametersUpdates parameters of an API method with values specific to this library.
Function_media_path_url_from_infoCreates an absolute media path URL.
Function_media_size_to_longConvert a string media size, such as 10GB or 3TB into an integer.
Function_methodPropertiesGet properties of a field in a method description.
Function_retrieve_discovery_docRetrieves the discovery_doc from cache or the internet.
Function_urljoinCustom urljoin replacement supporting : before / in url.
Constant_MEDIA_SIZE_BIT_SHIFTSUndocumented
Constant_PAGE_TOKEN_NAMESUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + @positional(2)
+ def build(serviceName, version, http=None, discoveryServiceUrl=None, developerKey=None, model=None, requestBuilder=HttpRequest, credentials=None, cache_discovery=True, cache=None, client_options=None, adc_cert_path=None, adc_key_path=None, num_retries=1, static_discovery=None, always_use_jwt_access=False): + + + + + ¶ + +
+
+ +

Construct a Resource for interacting with an API. + +Construct a Resource object for interacting with an API. The serviceName and +version are the names from the Discovery service. + +Args: + serviceName: string, name of the service. + version: string, the version of the service. + http: httplib2.Http, An instance of httplib2.Http or something that acts + like it that HTTP requests will be made through. + discoveryServiceUrl: string, a URI Template that points to the location of + the discovery service. It should have two parameters {api} and + {apiVersion} that when filled in produce an absolute URI to the discovery + document for that service. + developerKey: string, key obtained from + https://code.google.com/apis/console. + model: googleapiclient.Model, converts to and from the wire format. + requestBuilder: googleapiclient.http.HttpRequest, encapsulator for an HTTP + request. + credentials: oauth2client.Credentials or + google.auth.credentials.Credentials, credentials to be used for + authentication. + cache_discovery: Boolean, whether or not to cache the discovery doc. + cache: googleapiclient.discovery_cache.base.CacheBase, an optional + cache object for the discovery documents. + client_options: Mapping object or google.api_core.client_options, client + options to set user options on the client. + (1) The API endpoint should be set through client_options. If API endpoint + is not set, `GOOGLE_API_USE_MTLS_ENDPOINT` environment variable can be used + to control which endpoint to use. + (2) client_cert_source is not supported, client cert should be provided using + client_encrypted_cert_source instead. In order to use the provided client + cert, `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be + set to `true`. + More details on the environment variables are here: + https://google.aip.dev/auth/4114 + adc_cert_path: str, client certificate file path to save the application + default client certificate for mTLS. This field is required if you want to + use the default client certificate. `GOOGLE_API_USE_CLIENT_CERTIFICATE` + environment variable must be set to `true` in order to use this field, + otherwise this field doesn't nothing. + More details on the environment variables are here: + https://google.aip.dev/auth/4114 + adc_key_path: str, client encrypted private key file path to save the + application default client encrypted private key for mTLS. This field is + required if you want to use the default client certificate. + `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be set to + `true` in order to use this field, otherwise this field doesn't nothing. + More details on the environment variables are here: + https://google.aip.dev/auth/4114 + num_retries: Integer, number of times to retry discovery with + randomized exponential backoff in case of intermittent/connection issues. + static_discovery: Boolean, whether or not to use the static discovery docs + included in the library. The default value for `static_discovery` depends + on the value of `discoveryServiceUrl`. `static_discovery` will default to + `True` when `discoveryServiceUrl` is also not provided, otherwise it will + default to `False`. + always_use_jwt_access: Boolean, whether always use self signed JWT for service + account credentials. This only applies to + google.oauth2.service_account.Credentials. + +Returns: + A Resource object with methods for interacting with the service. + +Raises: + google.auth.exceptions.MutualTLSChannelError: if there are any problems + setting up mutual TLS channel.

+
+
+ + + + + + + + +
+ + @positional(1)
+ def build_from_document(service, base=None, future=None, http=None, developerKey=None, model=None, requestBuilder=HttpRequest, credentials=None, client_options=None, adc_cert_path=None, adc_key_path=None, always_use_jwt_access=False): + + + + + ¶ + +
+
+ +

Create a Resource for interacting with an API. + +Same as `build()`, but constructs the Resource object from a discovery +document that is it given, as opposed to retrieving one over HTTP. + +Args: + 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) + future: string, discovery document with future capabilities (deprecated). + http: httplib2.Http, An instance of httplib2.Http or something that acts + like it that HTTP requests will be made through. + developerKey: string, Key for controlling API usage, generated + from the API Console. + model: Model class instance that serializes and de-serializes requests and + responses. + requestBuilder: Takes an http request and packages it up to be executed. + credentials: oauth2client.Credentials or + google.auth.credentials.Credentials, credentials to be used for + authentication. + client_options: Mapping object or google.api_core.client_options, client + options to set user options on the client. + (1) The API endpoint should be set through client_options. If API endpoint + is not set, `GOOGLE_API_USE_MTLS_ENDPOINT` environment variable can be used + to control which endpoint to use. + (2) client_cert_source is not supported, client cert should be provided using + client_encrypted_cert_source instead. In order to use the provided client + cert, `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be + set to `true`. + More details on the environment variables are here: + https://google.aip.dev/auth/4114 + adc_cert_path: str, client certificate file path to save the application + default client certificate for mTLS. This field is required if you want to + use the default client certificate. `GOOGLE_API_USE_CLIENT_CERTIFICATE` + environment variable must be set to `true` in order to use this field, + otherwise this field doesn't nothing. + More details on the environment variables are here: + https://google.aip.dev/auth/4114 + adc_key_path: str, client encrypted private key file path to save the + application default client encrypted private key for mTLS. This field is + required if you want to use the default client certificate. + `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be set to + `true` in order to use this field, otherwise this field doesn't nothing. + More details on the environment variables are here: + https://google.aip.dev/auth/4114 + always_use_jwt_access: Boolean, whether always use self signed JWT for service + account credentials. This only applies to + google.oauth2.service_account.Credentials. + +Returns: + A Resource object with methods for interacting with the service. + +Raises: + google.auth.exceptions.MutualTLSChannelError: if there are any problems + setting up mutual TLS channel.

+
+
+ + + + + + + + +
+ + + def createMethod(methodName, methodDesc, rootDesc, schema): + + + + + ¶ + +
+
+ +

Creates a method for attaching to a Resource. + +Args: + 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.

+
+
+ + + + + + + + +
+ + + def createNextMethod(methodName, pageTokenName='pageToken', nextPageTokenName='nextPageToken', isPageTokenParameter=True): + + + + + ¶ + +
+
+ +

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. + pageTokenName: string, name of request page token field. + nextPageTokenName: string, name of response page token field. + isPageTokenParameter: Boolean, True if request page token is a query + parameter, False if request page token is a field of the request body.

+
+
+ + + + + + + + +
+ + + def fix_method_name(name): + + + + + ¶ + +
+
+ +

Fix method names to avoid '$' characters and reserved word conflicts. + +Args: + name: string, method name. + +Returns: + The name with '_' appended if the name is a reserved word and '$' and '-' + replaced with '_'.

+
+
+ + + + + + + + +
+ + + def key2param(key): + + + + + ¶ + +
+
+ +

Converts key names into parameter names. + +For example, converting "max-results" -> "max_results" + +Args: + key: string, the method key name. + +Returns: + A safe method name based on the key name.

+
+
+ + + + + + + + +
+ + BODY_PARAMETER_DEFAULT_VALUE: dict[str, str] = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
{'description': 'The request body.', 'type': 'object'}
+
+
+ + + + + + + + +
+ + DEFAULT_METHOD_DOC: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'A description of how to use this function'
+
+
+ + + + + + + + +
+ + DEFAULT_UNIVERSE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'googleapis.com'
+
+
+ + + + + + + + +
+ + DISCOVERY_URI: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'https://www.googleapis.com/discovery/v1/apis/{api}/{apiVersion}/rest'
+
+
+ + + + + + + + +
+ + GOOGLE_API_USE_CLIENT_CERTIFICATE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'GOOGLE_API_USE_CLIENT_CERTIFICATE'
+
+
+ + + + + + + + +
+ + GOOGLE_API_USE_MTLS_ENDPOINT: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'GOOGLE_API_USE_MTLS_ENDPOINT'
+
+
+ + + + + + + + +
+ + GOOGLE_CLOUD_UNIVERSE_DOMAIN: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'GOOGLE_CLOUD_UNIVERSE_DOMAIN'
+
+
+ + + + + + + + +
+ + HTTP_PAYLOAD_METHODS = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
frozenset(['PUT', 'POST', 'PATCH'])
+
+
+ + + + + + + + +
+ + MEDIA_BODY_PARAMETER_DEFAULT_VALUE: dict = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
{'description': 'The filename of the media request body, or an instance of a Med
+iaUpload object.',
+ 'type': 'string',
+ 'required': False}
+
+
+ + + + + + + + +
+ + MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE: dict = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
{'description': 'The MIME type of the media request body, or an instance of a Me
+diaUpload object.',
+ 'type': 'string',
+ 'required': False}
+
+
+ + + + + + + + +
+ + RESERVED_WORDS = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
frozenset(['body'])
+
+
+ + + + + + + + +
+ + STACK_QUERY_PARAMETER_DEFAULT_VALUE: dict[str, str] = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
{'type': 'string', 'location': 'query'}
+
+
+ + + + + + + + +
+ + STACK_QUERY_PARAMETERS = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
frozenset(['trace', 'pp', 'userip', 'strict'])
+
+
+ + + + + + + + +
+ + URITEMPLATE = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
re.compile(r'\{[^\}]*\}')
+
+
+ + + + + + + + +
+ + V2_DISCOVERY_URI: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'https://{api}.googleapis.com/$discovery/rest?version={apiVersion}'
+
+
+ + + + + + + + +
+ + VARNAME = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
re.compile(r'[a-zA-Z0-9_-]+')
+
+
+ + + + + + + + +
+ + __author__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + HAS_UNIVERSE: bool = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + logger = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _cast(value, schema_type): + + + + + ¶ + +
+
+ +

Convert value to a string based on JSON Schema type. + +See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on +JSON Schema. + +Args: + value: any, the value to convert + schema_type: string, the type that value should be interpreted as + +Returns: + A string representation of 'value' based on the schema_type.

+
+
+ + + + + + + + +
+ + + def _check_api_core_compatible_with_credentials_universe(credentials): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def _discovery_service_uri_options(discoveryServiceUrl, version): + + + + + ¶ + +
+
+ +

Returns Discovery URIs to be used for attempting to build the API Resource. + +Args: + discoveryServiceUrl: + string, the Original Discovery Service URL preferred by the customer. + version: + string, API Version requested + +Returns: + A list of URIs to be tried for the Service Discovery, in order.

+
+
+ + + + + + + + +
+ + + def _findPageTokenName(fields): + + + + + ¶ + +
+
+ +

Search field names for one like a page token. + +Args: + fields: container of string, names of fields. + +Returns: + First name that is either 'pageToken' or 'nextPageToken' if one exists, + otherwise None.

+
+
+ + + + + + + + +
+ + + def _fix_up_media_path_base_url(media_path_url, base_url): + + + + + ¶ + +
+
+ +

Update the media upload base url if its netloc doesn't match base url netloc. + +This can happen in case the base url was overridden by +client_options.api_endpoint. + +Args: + media_path_url: String; the absolute URI for media upload. + base_url: string, base URL for the API. All requests are relative to this URI. + +Returns: + String; the absolute URI for media upload.

+
+
+ + + + + + + + +
+ + + def _fix_up_media_upload(method_desc, root_desc, path_url, parameters): + + + + + ¶ + +
+
+ +

Adds 'media_body' and 'media_mime_type' parameters if supported by method. + +SIDE EFFECTS: If there is a 'mediaUpload' in the method description, adds +'media_upload' key to parameters. + +Args: + method_desc: Dictionary with metadata describing an API method. Value comes + from the dictionary of methods stored in the 'methods' key in the + deserialized discovery document. + root_desc: Dictionary; the entire original deserialized discovery document. + path_url: String; the relative URL for the API method. Relative to the API + root, which is specified in the discovery document. + parameters: A dictionary describing method parameters for method described + in method_desc. + +Returns: + Triple (accept, max_size, media_path_url) where: + - accept is a list of strings representing what content types are + accepted for media upload. Defaults to empty list if not in the + discovery document. + - max_size is a long representing the max size in bytes allowed for a + media upload. Defaults to 0L if not in the discovery document. + - media_path_url is a String; the absolute URI for media upload for the + API method. Constructed using the API root URI and service path from + the discovery document and the relative path for the API method. If + media upload is not supported, this is None.

+
+
+ + + + + + + + +
+ + + def _fix_up_method_description(method_desc, root_desc, schema): + + + + + ¶ + +
+
+ +

Updates a method description in a discovery document. + +SIDE EFFECTS: Changes the parameters dictionary in the method description with +extra parameters which are used locally. + +Args: + method_desc: Dictionary with metadata describing an API method. Value comes + from the dictionary of methods stored in the 'methods' key in the + deserialized discovery document. + root_desc: Dictionary; the entire original deserialized discovery document. + schema: Object, mapping of schema names to schema descriptions. + +Returns: + Tuple (path_url, http_method, method_id, accept, max_size, media_path_url) + where: + - path_url is a String; the relative URL for the API method. Relative to + the API root, which is specified in the discovery document. + - http_method is a String; the HTTP method used to call the API method + described in the method description. + - method_id is a String; the name of the RPC method associated with the + API method, and is in the method description in the 'id' key. + - accept is a list of strings representing what content types are + accepted for media upload. Defaults to empty list if not in the + discovery document. + - max_size is a long representing the max size in bytes allowed for a + media upload. Defaults to 0L if not in the discovery document. + - media_path_url is a String; the absolute URI for media upload for the + API method. Constructed using the API root URI and service path from + the discovery document and the relative path for the API method. If + media upload is not supported, this is None.

+
+
+ + + + + + + + +
+ + + def _fix_up_parameters(method_desc, root_desc, http_method, schema): + + + + + ¶ + +
+
+ +

Updates parameters of an API method with values specific to this library. + +Specifically, adds whatever global parameters are specified by the API to the +parameters for the individual method. Also adds parameters which don't +appear in the discovery document, but are available to all discovery based +APIs (these are listed in STACK_QUERY_PARAMETERS). + +SIDE EFFECTS: This updates the parameters dictionary object in the method +description. + +Args: + method_desc: Dictionary with metadata describing an API method. Value comes + from the dictionary of methods stored in the 'methods' key in the + deserialized discovery document. + root_desc: Dictionary; the entire original deserialized discovery document. + http_method: String; the HTTP method used to call the API method described + in method_desc. + schema: Object, mapping of schema names to schema descriptions. + +Returns: + The updated Dictionary stored in the 'parameters' key of the method + description dictionary.

+
+
+ + + + + + + + +
+ + + def _media_path_url_from_info(root_desc, path_url): + + + + + ¶ + +
+
+ +

Creates an absolute media path URL. + +Constructed using the API root URI and service path from the discovery +document and the relative path for the API method. + +Args: + root_desc: Dictionary; the entire original deserialized discovery document. + path_url: String; the relative URL for the API method. Relative to the API + root, which is specified in the discovery document. + +Returns: + String; the absolute URI for media upload for the API method.

+
+
+ + + + + + + + +
+ + + def _media_size_to_long(maxSize): + + + + + ¶ + +
+
+ +

Convert a string media size, such as 10GB or 3TB into an integer. + +Args: + maxSize: string, size as a string, such as 2MB or 7GB. + +Returns: + The size as an integer value.

+
+
+ + + + + + + + +
+ + + def _methodProperties(methodDesc, schema, name): + + + + + ¶ + +
+
+ +

Get properties of a field in a method description. + +Args: + methodDesc: object, fragment of deserialized discovery document that + describes the method. + schema: object, mapping of schema names to schema descriptions. + name: string, name of top-level field in method description. + +Returns: + Object representing fragment of deserialized discovery document + corresponding to 'properties' field of object corresponding to named field + in method description, if it exists, otherwise empty dict.

+
+
+ + + + + + + + +
+ + + def _retrieve_discovery_doc(url, http, cache_discovery, serviceName, version, cache=None, developerKey=None, num_retries=1, static_discovery=True): + + + + + ¶ + +
+
+ +

Retrieves the discovery_doc from cache or the internet. + +Args: + url: string, the URL of the discovery document. + http: httplib2.Http, An instance of httplib2.Http or something that acts + like it through which HTTP requests will be made. + cache_discovery: Boolean, whether or not to cache the discovery doc. + serviceName: string, name of the service. + version: string, the version of the service. + cache: googleapiclient.discovery_cache.base.Cache, an optional cache + object for the discovery documents. + developerKey: string, Key for controlling API usage, generated + from the API Console. + num_retries: Integer, number of times to retry discovery with + randomized exponential backoff in case of intermittent/connection issues. + static_discovery: Boolean, whether or not to use the static discovery docs + included in the library. + +Returns: + A unicode string representation of the discovery document.

+
+
+ + + + + + + + +
+ + + def _urljoin(base, url): + + + + + ¶ + +
+
+ +

Custom urljoin replacement supporting : before / in url.

+
+
+ + + + + + + + +
+ + _MEDIA_SIZE_BIT_SHIFTS: dict[str, int] = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
{'KB': 10, 'MB': 20, 'GB': 30, 'TB': 40}
+
+
+ + + + + + + + +
+ + _PAGE_TOKEN_NAMES: tuple[str, ...] = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
('pageToken', 'nextPageToken')
+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.Cache.html b/docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.Cache.html new file mode 100644 index 00000000000..d0bf5ca7c82 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.Cache.html @@ -0,0 +1,496 @@ + + + + + + + + googleapiclient.discovery_cache.appengine_memcache.Cache + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class Cache(base.Cache):

Constructor: Cache(max_age)

+

View In Hierarchy

+
+ +
+

A cache with app engine memcache API.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodgetGets the content from the memcache with a given key.
MethodsetSets the given key and content in the cache.
Instance Variable_max_ageUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, max_age): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + max_age: Cache expiration in seconds.

+
+
+ + + + + + + + +
+ + + def get(self, url): + + + + + ¶ + +
+
+ +

Gets the content from the memcache with a given key. + +Args: + url: string, the key for the cache. + +Returns: + object, the value in the cache for the given key, or None if the key is + not in the cache.

+
+
+ + + + + + + + +
+ + + def set(self, url, content): + + + + + ¶ + +
+
+ +

Sets the given key and content in the cache. + +Args: + url: string, the key for the cache. + content: string, the discovery document.

+
+
+ + + + + + + + +
+ + _max_age = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.html b/docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.html new file mode 100644 index 00000000000..7b796d9498e --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery_cache.appengine_memcache.html @@ -0,0 +1,501 @@ + + + + + + + + googleapiclient.discovery_cache.appengine_memcache + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

App Engine memcache based cache for the discovery document.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ClassCacheA cache with app engine memcache API.
ConstantLOGGERUndocumented
ConstantNAMESPACEUndocumented
VariablecacheUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + LOGGER = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
logging.getLogger(__name__)
+
+
+ + + + + + + + +
+ + NAMESPACE: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'google-api-client'
+
+
+ + + + + + + + +
+ + cache = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery_cache.base.Cache.html b/docs/pydoc/googleapiclient.discovery_cache.base.Cache.html new file mode 100644 index 00000000000..e0ae0e5364b --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery_cache.base.Cache.html @@ -0,0 +1,379 @@ + + + + + + + + googleapiclient.discovery_cache.base.Cache + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

A base abstract cache class.

+
+ +
+ + + + + + + + + + + + + + +
MethodgetGets the content from the memcache with a given key.
MethodsetSets the given key and content in the cache.
+ + + +
+ +
+
+ + + + + + + + +
+ + @abc.abstractmethod
+ def get(self, url): + + + + + ¶ + +
+
+ +

Gets the content from the memcache with a given key. + +Args: + url: string, the key for the cache. + +Returns: + object, the value in the cache for the given key, or None if the key is + not in the cache.

+
+
+ + + + + + + + +
+ + @abc.abstractmethod
+ def set(self, url, content): + + + + + ¶ + +
+
+ +

Sets the given key and content in the cache. + +Args: + url: string, the key for the cache. + content: string, the discovery document.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery_cache.base.html b/docs/pydoc/googleapiclient.discovery_cache.base.html new file mode 100644 index 00000000000..debc6bcb2b7 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery_cache.base.html @@ -0,0 +1,381 @@ + + + + + + + + googleapiclient.discovery_cache.base + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

An abstract class for caching the discovery document.

+
+ +
+ + + + + + + + + +
ClassCacheA base abstract cache class.
+ + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery_cache.file_cache.Cache.html b/docs/pydoc/googleapiclient.discovery_cache.file_cache.Cache.html new file mode 100644 index 00000000000..61b702ce032 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery_cache.file_cache.Cache.html @@ -0,0 +1,568 @@ + + + + + + + + googleapiclient.discovery_cache.file_cache.Cache + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class Cache(base.Cache):

Constructor: Cache(max_age)

+

View In Hierarchy

+
+ +
+

A file based cache for the discovery documents.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodgetGets the content from the memcache with a given key.
MethodsetSets the given key and content in the cache.
Instance Variable_fileUndocumented
Instance Variable_max_ageUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, max_age): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + max_age: Cache expiration in seconds.

+
+
+ + + + + + + + +
+ + + def get(self, url): + + + + + ¶ + +
+
+ +

Gets the content from the memcache with a given key. + +Args: + url: string, the key for the cache. + +Returns: + object, the value in the cache for the given key, or None if the key is + not in the cache.

+
+
+ + + + + + + + +
+ + + def set(self, url, content): + + + + + ¶ + +
+
+ +

Sets the given key and content in the cache. + +Args: + url: string, the key for the cache. + content: string, the discovery document.

+
+
+ + + + + + + + +
+ + _file = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _max_age = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery_cache.file_cache.html b/docs/pydoc/googleapiclient.discovery_cache.file_cache.html new file mode 100644 index 00000000000..73edbc308c4 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery_cache.file_cache.html @@ -0,0 +1,626 @@ + + + + + + + + googleapiclient.discovery_cache.file_cache + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

File based cache for the discovery document. + +The cache is stored in a single file so that multiple processes can +share the same cache. It locks the file whenever accessing to the +file. When the cache content is corrupted, it will be initialized with +an empty cache.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassCacheA file based cache for the discovery documents.
ConstantEPOCHUndocumented
ConstantFILENAMEUndocumented
ConstantLOGGERUndocumented
VariablecacheUndocumented
Function_read_or_initialize_cacheUndocumented
Function_to_timestampUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + EPOCH = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
datetime.datetime(1970, 1, 1)
+
+
+ + + + + + + + +
+ + FILENAME: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'google-api-python-client-discovery-doc.cache'
+
+
+ + + + + + + + +
+ + LOGGER = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
logging.getLogger(__name__)
+
+
+ + + + + + + + +
+ + cache = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _read_or_initialize_cache(f): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def _to_timestamp(date): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.discovery_cache.html b/docs/pydoc/googleapiclient.discovery_cache.html new file mode 100644 index 00000000000..77f77c850f9 --- /dev/null +++ b/docs/pydoc/googleapiclient.discovery_cache.html @@ -0,0 +1,663 @@ + + + + + + + + googleapiclient.discovery_cache + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ package documentation +
+ +
+ +

+
+ +
+

Caching utility for the discovery document.

+
+ +
+ + + + + + + + + + + + + + + + + + + +
Moduleappengine_memcacheApp Engine memcache based cache for the discovery document.
ModulebaseAn abstract class for caching the discovery document.
Modulefile_cacheFile based cache for the discovery document.
+ + +

From __init__.py:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionautodetectDetects an appropriate cache module and returns it.
Functionget_static_docRetrieves the discovery document from the directory defined in DISCOVERY_DOC_DIR corresponding to the serviceName and version provided.
ConstantDISCOVERY_DOC_DIRUndocumented
ConstantDISCOVERY_DOC_MAX_AGEUndocumented
ConstantLOGGERUndocumented
+
+ +
+
+ + + + + + + + +
+ + + def autodetect(): + + + + + ¶ + +
+
+ +

Detects an appropriate cache module and returns it. + +Returns: + googleapiclient.discovery_cache.base.Cache, a cache object which + is auto detected, or None if no cache object is available.

+
+
+ + + + + + + + +
+ + + def get_static_doc(serviceName, version): + + + + + ¶ + +
+
+ +

Retrieves the discovery document from the directory defined in +DISCOVERY_DOC_DIR corresponding to the serviceName and version provided. + +Args: + serviceName: string, name of the service. + version: string, the version of the service. + +Returns: + A string containing the contents of the JSON discovery document, + otherwise None if the JSON discovery document was not found.

+
+
+ + + + + + + + +
+ + DISCOVERY_DOC_DIR = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
os.path.join(os.path.dirname(os.path.realpath(__file__)), 'documents')
+
+
+ + + + + + + + +
+ + DISCOVERY_DOC_MAX_AGE = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
60 * 60 * 24
+
+
+ + + + + + + + +
+ + LOGGER = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
logging.getLogger(__name__)
+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.BatchError.html b/docs/pydoc/googleapiclient.errors.BatchError.html new file mode 100644 index 00000000000..24c1e053151 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.BatchError.html @@ -0,0 +1,706 @@ + + + + + + + + googleapiclient.errors.BatchError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class BatchError(HttpError):

Constructor: BatchError(reason, resp, content)

+

View In Hierarchy

+
+ +
+

Error occurred during batch operations.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Undocumented
Method__repr__Undocumented
Instance VariablecontentUndocumented
Instance VariablereasonUndocumented
Instance VariablerespUndocumented
+ +

+ Inherited from HttpError: +

+ + + + + + + + + + + + + + + + + + + + + + + + +
Instance Variableerror_detailsUndocumented
Instance VariableuriUndocumented
Propertystatus_codeReturn the HTTP status code from the response content.
Method_get_reasonCalculate the reason for the error from the response content.
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(2)
+ def __init__(self, reason, resp=None, content=None): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def __repr__(self): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + content = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + reason = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resp = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.Error.html b/docs/pydoc/googleapiclient.errors.Error.html new file mode 100644 index 00000000000..eec641aa3f1 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.Error.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.Error + + + + + + + + + + + + + + + + +
+ + + + + +
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.HttpError.html b/docs/pydoc/googleapiclient.errors.HttpError.html new file mode 100644 index 00000000000..00674c320b6 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.HttpError.html @@ -0,0 +1,787 @@ + + + + + + + + googleapiclient.errors.HttpError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ + + +
+

HTTP data was invalid or unexpected.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Undocumented
Method__repr__Undocumented
Instance VariablecontentUndocumented
Instance Variableerror_detailsUndocumented
Instance VariablereasonUndocumented
Instance VariablerespUndocumented
Instance VariableuriUndocumented
Propertystatus_codeReturn the HTTP status code from the response content.
Method_get_reasonCalculate the reason for the error from the response content.
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(3)
+ def __init__(self, resp, content, uri=None): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def __repr__(self): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + content = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + error_details = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + reason = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resp = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ @property
+ status_code = + + + + + ¶ + +
+
+ +

Return the HTTP status code from the response content.

+ +
+
+ + + + + + + + +
+ + + def _get_reason(self): + + + + + ¶ + +
+
+ +

Calculate the reason for the error from the response content.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.InvalidChunkSizeError.html b/docs/pydoc/googleapiclient.errors.InvalidChunkSizeError.html new file mode 100644 index 00000000000..790ab10731f --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.InvalidChunkSizeError.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.InvalidChunkSizeError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class InvalidChunkSizeError(Error):

+

View In Hierarchy

+
+ +
+

The given chunksize is not valid.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.InvalidJsonError.html b/docs/pydoc/googleapiclient.errors.InvalidJsonError.html new file mode 100644 index 00000000000..8e884c8921e --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.InvalidJsonError.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.InvalidJsonError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class InvalidJsonError(Error):

+

View In Hierarchy

+
+ +
+

The JSON returned could not be parsed.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.InvalidNotificationError.html b/docs/pydoc/googleapiclient.errors.InvalidNotificationError.html new file mode 100644 index 00000000000..650ac9baa4b --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.InvalidNotificationError.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.InvalidNotificationError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class InvalidNotificationError(Error):

+

View In Hierarchy

+
+ +
+

The channel Notification is invalid.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.MediaUploadSizeError.html b/docs/pydoc/googleapiclient.errors.MediaUploadSizeError.html new file mode 100644 index 00000000000..77831bdec1e --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.MediaUploadSizeError.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.MediaUploadSizeError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class MediaUploadSizeError(Error):

+

View In Hierarchy

+
+ +
+

Media is larger than the method can accept.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.ResumableUploadError.html b/docs/pydoc/googleapiclient.errors.ResumableUploadError.html new file mode 100644 index 00000000000..fdc409637e0 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.ResumableUploadError.html @@ -0,0 +1,576 @@ + + + + + + + + googleapiclient.errors.ResumableUploadError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class ResumableUploadError(HttpError):

Constructor: ResumableUploadError(resp, content, uri)

+

View In Hierarchy

+
+ +
+

Error occurred during resumable upload.

+
+ +
+ + +

+ Inherited from HttpError: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Undocumented
Method__repr__Undocumented
Instance VariablecontentUndocumented
Instance Variableerror_detailsUndocumented
Instance VariablereasonUndocumented
Instance VariablerespUndocumented
Instance VariableuriUndocumented
Propertystatus_codeReturn the HTTP status code from the response content.
Method_get_reasonCalculate the reason for the error from the response content.
+ + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.UnacceptableMimeTypeError.html b/docs/pydoc/googleapiclient.errors.UnacceptableMimeTypeError.html new file mode 100644 index 00000000000..4c6538982b0 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.UnacceptableMimeTypeError.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.UnacceptableMimeTypeError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class UnacceptableMimeTypeError(Error):

+

View In Hierarchy

+
+ +
+

That is an unacceptable mimetype for this operation.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.UnexpectedBodyError.html b/docs/pydoc/googleapiclient.errors.UnexpectedBodyError.html new file mode 100644 index 00000000000..94b2bb6076d --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.UnexpectedBodyError.html @@ -0,0 +1,472 @@ + + + + + + + + googleapiclient.errors.UnexpectedBodyError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class UnexpectedBodyError(Error):

Constructor: UnexpectedBodyError(expected, provided)

+

View In Hierarchy

+
+ +
+

Exception raised by RequestMockBuilder on unexpected bodies.

+
+ +
+ + + + + + + + + +
Method__init__Constructor for an UnexpectedMethodError.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, expected, provided): + + + + + ¶ + +
+
+ +

Constructor for an UnexpectedMethodError.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.UnexpectedMethodError.html b/docs/pydoc/googleapiclient.errors.UnexpectedMethodError.html new file mode 100644 index 00000000000..23e172cba18 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.UnexpectedMethodError.html @@ -0,0 +1,472 @@ + + + + + + + + googleapiclient.errors.UnexpectedMethodError + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class UnexpectedMethodError(Error):

Constructor: UnexpectedMethodError(methodId)

+

View In Hierarchy

+
+ +
+

Exception raised by RequestMockBuilder on unexpected calls.

+
+ +
+ + + + + + + + + +
Method__init__Constructor for an UnexpectedMethodError.
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(1)
+ def __init__(self, methodId=None): + + + + + ¶ + +
+
+ +

Constructor for an UnexpectedMethodError.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.UnknownApiNameOrVersion.html b/docs/pydoc/googleapiclient.errors.UnknownApiNameOrVersion.html new file mode 100644 index 00000000000..758d8327bf7 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.UnknownApiNameOrVersion.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.UnknownApiNameOrVersion + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class UnknownApiNameOrVersion(Error):

+

View In Hierarchy

+
+ +
+

No API with that name and version exists.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.UnknownFileType.html b/docs/pydoc/googleapiclient.errors.UnknownFileType.html new file mode 100644 index 00000000000..86517480ecb --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.UnknownFileType.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.UnknownFileType + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class UnknownFileType(Error):

+

View In Hierarchy

+
+ +
+

File type unknown or unexpected.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.UnknownLinkType.html b/docs/pydoc/googleapiclient.errors.UnknownLinkType.html new file mode 100644 index 00000000000..2a10c43a94e --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.UnknownLinkType.html @@ -0,0 +1,426 @@ + + + + + + + + googleapiclient.errors.UnknownLinkType + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ exception documentation +
+ +
+

class UnknownLinkType(Error):

+

View In Hierarchy

+
+ +
+

Link type unknown or unexpected.

+
+ +
+ + + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.errors.html b/docs/pydoc/googleapiclient.errors.html new file mode 100644 index 00000000000..ddab24e0616 --- /dev/null +++ b/docs/pydoc/googleapiclient.errors.html @@ -0,0 +1,655 @@ + + + + + + + + googleapiclient.errors + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Errors for the library. + +All exceptions defined by the library +should be defined in this file.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExceptionBatchErrorError occurred during batch operations.
ExceptionErrorBase error for this module.
ExceptionHttpErrorHTTP data was invalid or unexpected.
ExceptionInvalidChunkSizeErrorThe given chunksize is not valid.
ExceptionInvalidJsonErrorThe JSON returned could not be parsed.
ExceptionInvalidNotificationErrorThe channel Notification is invalid.
ExceptionMediaUploadSizeErrorMedia is larger than the method can accept.
ExceptionResumableUploadErrorError occurred during resumable upload.
ExceptionUnacceptableMimeTypeErrorThat is an unacceptable mimetype for this operation.
ExceptionUnexpectedBodyErrorException raised by RequestMockBuilder on unexpected bodies.
ExceptionUnexpectedMethodErrorException raised by RequestMockBuilder on unexpected calls.
ExceptionUnknownApiNameOrVersionNo API with that name and version exists.
ExceptionUnknownFileTypeFile type unknown or unexpected.
ExceptionUnknownLinkTypeLink type unknown or unexpected.
Variable__author__Undocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + __author__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.html b/docs/pydoc/googleapiclient.html new file mode 120000 index 00000000000..64233a9e958 --- /dev/null +++ b/docs/pydoc/googleapiclient.html @@ -0,0 +1 @@ +index.html \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.BatchHttpRequest.html b/docs/pydoc/googleapiclient.http.BatchHttpRequest.html new file mode 100644 index 00000000000..03f32bc7c17 --- /dev/null +++ b/docs/pydoc/googleapiclient.http.BatchHttpRequest.html @@ -0,0 +1,1425 @@ + + + + + + + + googleapiclient.http.BatchHttpRequest + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class BatchHttpRequest(object):

Constructor: BatchHttpRequest(callback, batch_uri)

+

View In Hierarchy

+
+ +
+

Batches multiple HttpRequest objects into a single HTTP request. + +Example: + from googleapiclient.http import BatchHttpRequest + + def list_animals(request_id, response, exception): + """Do something with the animals list response.""" + if exception is not None: + # Do something with the exception. + pass + else: + # Do something with the response. + pass + + def list_farmers(request_id, response, exception): + """Do something with the farmers list response.""" + if exception is not None: + # Do something with the exception. + pass + else: + # Do something with the response. + pass + + service = build('farm', 'v2') + + batch = BatchHttpRequest() + + batch.add(service.animals().list(), list_animals) + batch.add(service.farmers().list(), list_farmers) + batch.execute(http=http)

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor for a BatchHttpRequest.
MethodaddAdd a new request.
MethodexecuteExecute all the requests as a single batched HTTP request.
Method_deserialize_responseConvert string into httplib2 response and content.
Method_executeSerialize batch request, send to server, process response.
Method_header_to_idConvert a Content-ID header value to an id.
Method_id_to_headerConvert an id to a Content-ID header value.
Method_new_idCreate a new id.
Method_refresh_and_apply_credentialsRefresh the credentials and apply to the request.
Method_serialize_requestConvert an HttpRequest object into a string.
Instance Variable_base_idUndocumented
Instance Variable_batch_uriUndocumented
Instance Variable_callbackUndocumented
Instance Variable_callbacksUndocumented
Instance Variable_last_auto_idUndocumented
Instance Variable_orderUndocumented
Instance Variable_refreshed_credentialsUndocumented
Instance Variable_requestsUndocumented
Instance Variable_responsesUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(1)
+ def __init__(self, callback=None, batch_uri=None): + + + + + ¶ + +
+
+ +

Constructor for a BatchHttpRequest. + +Args: + callback: callable, A callback to be called for each response, of the + form callback(id, response, exception). The first parameter is the + request id, and the second is the deserialized response object. The + third is an googleapiclient.errors.HttpError exception object if an HTTP error + occurred while processing the request, or None if no error occurred. + batch_uri: string, URI to send batch requests to.

+
+
+ + + + + + + + +
+ + @util.positional(2)
+ def add(self, request, callback=None, request_id=None): + + + + + ¶ + +
+
+ +

Add a new request. + +Every callback added will be paired with a unique id, the request_id. That +unique id will be passed back to the callback when the response comes back +from the server. The default behavior is to have the library generate it's +own unique id. If the caller passes in a request_id then they must ensure +uniqueness for each request_id, and if they are not an exception is +raised. Callers should either supply all request_ids or never supply a +request id, to avoid such an error. + +Args: + request: HttpRequest, Request to add to the batch. + callback: callable, A callback to be called for this response, of the + form callback(id, response, exception). The first parameter is the + request id, and the second is the deserialized response object. The + third is an googleapiclient.errors.HttpError exception object if an HTTP error + occurred while processing the request, or None if no errors occurred. + request_id: string, A unique id for the request. The id will be passed + to the callback with the response. + +Returns: + None + +Raises: + BatchError if a media request is added to a batch. + KeyError is the request_id is not unique.

+
+
+ + + + + + + + +
+ + @util.positional(1)
+ def execute(self, http=None): + + + + + ¶ + +
+
+ +

Execute all the requests as a single batched HTTP request. + +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 + then use a http object from the requests in this batch. + +Returns: + None + +Raises: + httplib2.HttpLib2Error if a transport error has occurred. + googleapiclient.errors.BatchError if the response is the wrong format.

+
+
+ + + + + + + + +
+ + + def _deserialize_response(self, payload): + + + + + ¶ + +
+
+ +

Convert string into httplib2 response and content. + +Args: + payload: string, headers and body as a string. + +Returns: + A pair (resp, content), such as would be returned from httplib2.request.

+
+
+ + + + + + + + +
+ + + def _execute(self, http, order, requests): + + + + + ¶ + +
+
+ +

Serialize batch request, send to server, process response. + +Args: + http: httplib2.Http, an http object to be used to make the request with. + order: list, list of request ids in the order they were added to the + batch. + requests: list, list of request objects to send. + +Raises: + httplib2.HttpLib2Error if a transport error has occurred. + googleapiclient.errors.BatchError if the response is the wrong format.

+
+
+ + + + + + + + +
+ + + def _header_to_id(self, header): + + + + + ¶ + +
+
+ +

Convert a Content-ID header value to an id. + +Presumes the Content-ID header conforms to the format that _id_to_header() +returns. + +Args: + header: string, Content-ID header value. + +Returns: + The extracted id value. + +Raises: + BatchError if the header is not in the expected format.

+
+
+ + + + + + + + +
+ + + def _id_to_header(self, id_): + + + + + ¶ + +
+
+ +

Convert an id to a Content-ID header value. + +Args: + id_: string, identifier of individual request. + +Returns: + A Content-ID header with the id_ encoded into it. A UUID is prepended to + the value because Content-ID headers are supposed to be universally + unique.

+
+
+ + + + + + + + +
+ + + def _new_id(self): + + + + + ¶ + +
+
+ +

Create a new id. + +Auto incrementing number that avoids conflicts with ids already used. + +Returns: + string, a new unique id.

+
+
+ + + + + + + + +
+ + + def _refresh_and_apply_credentials(self, request, http): + + + + + ¶ + +
+
+ +

Refresh the credentials and apply to the request. + +Args: + request: HttpRequest, the request. + http: httplib2.Http, the global http object for the batch.

+
+
+ + + + + + + + +
+ + + def _serialize_request(self, request): + + + + + ¶ + +
+
+ +

Convert an HttpRequest object into a string. + +Args: + request: HttpRequest, the request to serialize. + +Returns: + The request as a string in application/http format.

+
+
+ + + + + + + + +
+ + _base_id = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _batch_uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _callback = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _callbacks: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _last_auto_id: int = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _order: list = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _refreshed_credentials: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _requests: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _responses: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.HttpMock.html b/docs/pydoc/googleapiclient.http.HttpMock.html new file mode 100644 index 00000000000..335e963166c --- /dev/null +++ b/docs/pydoc/googleapiclient.http.HttpMock.html @@ -0,0 +1,912 @@ + + + + + + + + googleapiclient.http.HttpMock + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class HttpMock(object):

Constructor: HttpMock(filename, headers)

+

View In Hierarchy

+
+ +
+

Mock of httplib2.Http

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Args: filename: string, absolute filename to read response from headers: dict, header to return with response
MethodcloseUndocumented
MethodrequestUndocumented
Instance VariablebodyUndocumented
Instance VariabledataUndocumented
Instance VariableheadersUndocumented
Instance VariablemethodUndocumented
Instance Variableresponse_headersUndocumented
Instance VariableuriUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, filename=None, headers=None): + + + + + ¶ + +
+
+ +

Args: + filename: string, absolute filename to read response from + headers: dict, header to return with response

+
+
+ + + + + + + + +
+ + + def close(self): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def request(self, uri, method='GET', body=None, headers=None, redirections=1, connection_type=None): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + body = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + data = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + headers = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + method = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + response_headers = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.HttpMockSequence.html b/docs/pydoc/googleapiclient.http.HttpMockSequence.html new file mode 100644 index 00000000000..177e77689bf --- /dev/null +++ b/docs/pydoc/googleapiclient.http.HttpMockSequence.html @@ -0,0 +1,775 @@ + + + + + + + + googleapiclient.http.HttpMockSequence + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class HttpMockSequence(object):

Constructor: HttpMockSequence(iterable)

+

View In Hierarchy

+
+ +
+

Mock of httplib2.Http + +Mocks a sequence of calls to request returning different responses for each +call. Create an instance initialized with the desired response headers +and content and then use as if an httplib2.Http instance. + + http = HttpMockSequence([ + ({'status': '401'}, ''), + ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'), + ({'status': '200'}, 'echo_request_headers'), + ]) + resp, content = http.request("http://examples.com") + +There are special values you can pass in for content to trigger +behavours that are helpful in testing. + +'echo_request_headers' means return the request headers in the response body +'echo_request_headers_as_json' means return the request headers in + the response body +'echo_request_body' means return the request body in the response body +'echo_request_uri' means return the request uri in the response body

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Args: iterable: iterable, a sequence of pairs of (headers, body)
MethodrequestUndocumented
Instance Variablefollow_redirectsUndocumented
Instance Variablerequest_sequenceUndocumented
Instance Variable_iterableUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, iterable): + + + + + ¶ + +
+
+ +

Args: + iterable: iterable, a sequence of pairs of (headers, body)

+
+
+ + + + + + + + +
+ + + def request(self, uri, method='GET', body=None, headers=None, redirections=1, connection_type=None): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + follow_redirects: bool = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + request_sequence = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _iterable = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.HttpRequest.html b/docs/pydoc/googleapiclient.http.HttpRequest.html new file mode 100644 index 00000000000..9056b401605 --- /dev/null +++ b/docs/pydoc/googleapiclient.http.HttpRequest.html @@ -0,0 +1,1536 @@ + + + + + + + + googleapiclient.http.HttpRequest + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class HttpRequest(object):

Constructor: HttpRequest(http, postproc, uri, method, ...)

+

View In Hierarchy

+
+ +
+

Encapsulates a single HTTP request.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Static Methodfrom_jsonReturns an HttpRequest populated with info from a JSON object.
Static Methodnull_postprocUndocumented
Method__init__Constructor for an HttpRequest.
Methodadd_response_callbackadd_response_headers_callback
MethodexecuteExecute the request.
Methodnext_chunkExecute the next step of a resumable upload.
Methodto_jsonReturns a JSON representation of the HttpRequest.
Instance VariablebodyUndocumented
Instance Variablebody_sizeUndocumented
Instance VariableheadersUndocumented
Instance VariablehttpUndocumented
Instance VariablemethodUndocumented
Instance VariablemethodIdUndocumented
Instance VariablepostprocUndocumented
Instance Variableresponse_callbacksUndocumented
Instance VariableresumableUndocumented
Instance Variableresumable_progressUndocumented
Instance Variableresumable_uriUndocumented
Instance VariableuriUndocumented
Method_process_responseProcess the response from a single chunk upload.
Instance Variable_in_error_stateUndocumented
Instance Variable_randUndocumented
Instance Variable_sleepUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + @staticmethod
+ def from_json(s, http, postproc): + + + + + ¶ + +
+
+ +

Returns an HttpRequest populated with info from a JSON object.

+
+
+ + + + + + + + +
+ + @staticmethod
+ def null_postproc(resp, contents): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + @util.positional(4)
+ def __init__(self, http, postproc, uri, method='GET', body=None, headers=None, methodId=None, resumable=None): + + + + + ¶ + +
+
+ +

Constructor for an HttpRequest. + +Args: + http: httplib2.Http, the transport object to use to make a request + postproc: callable, called on the HTTP response and content to transform + it into a data object before returning, or raising an exception + on an error. + uri: string, the absolute URI to send the request to + method: string, the HTTP method to use + body: string, the request body of the HTTP request, + headers: dict, the HTTP request headers + methodId: string, a unique identifier for the API method being called. + resumable: MediaUpload, None if this is not a resumbale request.

+
+
+ + + + + + + + +
+ + @util.positional(2)
+ def add_response_callback(self, cb): + + + + + ¶ + +
+
+ +

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

+
+
+ + + + + + + + +
+ + @util.positional(1)
+ def execute(self, http=None, num_retries=0): + + + + + ¶ + +
+
+ +

Execute the request. + +Args: + http: httplib2.Http, an http object to be used in place of the + one the HttpRequest request object was constructed with. + num_retries: Integer, number of times to retry with randomized + exponential backoff. If all retries fail, the raised HttpError + represents the last request. If zero (default), we attempt the + request only once. + +Returns: + A deserialized object model of the response body as determined + by the postproc. + +Raises: + googleapiclient.errors.HttpError if the response was not a 2xx. + httplib2.HttpLib2Error if a transport error has occurred.

+
+
+ + + + + + + + +
+ + @util.positional(1)
+ def next_chunk(self, http=None, num_retries=0): + + + + + ¶ + +
+
+ +

Execute the next step of a resumable upload. + +Can only be used if the method being executed supports media uploads and +the MediaUpload object passed in was flagged as using resumable upload. + +Example: + + media = MediaFileUpload('cow.png', mimetype='image/png', + chunksize=1000, resumable=True) + request = farm.animals().insert( + id='cow', + name='cow.png', + media_body=media) + + response = None + while response is None: + status, response = request.next_chunk() + if status: + print "Upload %d%% complete." % int(status.progress() * 100) + + +Args: + http: httplib2.Http, an http object to be used in place of the + one the HttpRequest request object was constructed with. + num_retries: Integer, number of times to retry with randomized + exponential backoff. If all retries fail, the raised HttpError + represents the last request. If zero (default), we attempt the + request only once. + +Returns: + (status, body): (ResumableMediaStatus, object) + The body will be None until the resumable media is fully uploaded. + +Raises: + googleapiclient.errors.HttpError if the response was not a 2xx. + httplib2.HttpLib2Error if a transport error has occurred.

+
+
+ + + + + + + + +
+ + + def to_json(self): + + + + + ¶ + +
+
+ +

Returns a JSON representation of the HttpRequest.

+
+
+ + + + + + + + +
+ + body = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + body_size = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + headers = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + http = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + method: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + methodId = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + postproc = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + response_callbacks: list = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resumable = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resumable_progress: int = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resumable_uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _process_response(self, resp, content): + + + + + ¶ + +
+
+ +

Process the response from a single chunk upload. + +Args: + resp: httplib2.Response, the response object. + content: string, the content of the response. + +Returns: + (status, body): (ResumableMediaStatus, object) + The body will be None until the resumable media is fully uploaded. + +Raises: + googleapiclient.errors.HttpError if the response was not a 2xx or a 308.

+
+
+ + + + + + + + +
+ + _in_error_state: bool = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _rand = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _sleep = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.HttpRequestMock.html b/docs/pydoc/googleapiclient.http.HttpRequestMock.html new file mode 100644 index 00000000000..94973d48f8e --- /dev/null +++ b/docs/pydoc/googleapiclient.http.HttpRequestMock.html @@ -0,0 +1,765 @@ + + + + + + + + googleapiclient.http.HttpRequestMock + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class HttpRequestMock(object):

Constructor: HttpRequestMock(resp, content, postproc)

+

View In Hierarchy

+
+ +
+

Mock of HttpRequest. + +Do not construct directly, instead use RequestMockBuilder.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor for HttpRequestMock
MethodexecuteExecute the request.
Instance VariablecontentUndocumented
Instance VariablepostprocUndocumented
Instance VariablerespUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, resp, content, postproc): + + + + + ¶ + +
+
+ +

Constructor for HttpRequestMock + +Args: + resp: httplib2.Response, the response to emulate coming from the request + content: string, the response body + postproc: callable, the post processing function usually supplied by + the model class. See model.JsonModel.response() as an example.

+
+
+ + + + + + + + +
+ + + def execute(self, http=None): + + + + + ¶ + +
+
+ +

Execute the request. + +Same behavior as HttpRequest.execute(), but the response is +mocked and not really from an HTTP request/response.

+
+
+ + + + + + + + +
+ + content = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + postproc = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + resp = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.MediaDownloadProgress.html b/docs/pydoc/googleapiclient.http.MediaDownloadProgress.html new file mode 100644 index 00000000000..c8474d72bad --- /dev/null +++ b/docs/pydoc/googleapiclient.http.MediaDownloadProgress.html @@ -0,0 +1,723 @@ + + + + + + + + googleapiclient.http.MediaDownloadProgress + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class MediaDownloadProgress(object):

Constructor: MediaDownloadProgress(resumable_progress, total_size)

+

View In Hierarchy

+
+ +
+

Status of a resumable download.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodprogressPercent of download completed, as a float.
Instance Variableresumable_progressUndocumented
Instance Variabletotal_sizeUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, resumable_progress, total_size): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + resumable_progress: int, bytes received so far. + total_size: int, total bytes in complete download.

+
+
+ + + + + + + + +
+ + + def progress(self): + + + + + ¶ + +
+
+ +

Percent of download completed, as a float. + +Returns: + the percentage complete as a float, returning 0.0 if the total size of + the download is unknown.

+
+
+ + + + + + + + +
+ + resumable_progress = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + total_size = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.MediaFileUpload.html b/docs/pydoc/googleapiclient.http.MediaFileUpload.html new file mode 100644 index 00000000000..de1d11b0137 --- /dev/null +++ b/docs/pydoc/googleapiclient.http.MediaFileUpload.html @@ -0,0 +1,1046 @@ + + + + + + + + googleapiclient.http.MediaFileUpload + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

A MediaUpload for a file. + +Construct a MediaFileUpload and pass as the media_body parameter of the +method. For example, if we had a service that allowed uploading images: + + media = MediaFileUpload('cow.png', mimetype='image/png', + chunksize=1024*1024, resumable=True) + farm.animals().insert( + id='cow', + name='cow.png', + media_body=media).execute() + +Depending on the platform you are working on, you may pass -1 as the +chunksize, which indicates that the entire file should be uploaded in a single +request. If the underlying platform supports streams, such as Python 2.6 or +later, then this can be very efficient as it avoids multiple connections, and +also avoids loading the entire file into memory before sending it. Note that +Google App Engine has a 5MB limit on request size, so you should never set +your chunksize larger than 5MB, or to -1.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Static Methodfrom_jsonUndocumented
Method__del__Undocumented
Method__init__Constructor.
Methodto_jsonCreating a JSON representation of an instance of MediaFileUpload.
Instance Variable_fdUndocumented
Instance Variable_filenameUndocumented
+ +

+ Inherited from MediaIoBaseUpload: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodchunksizeChunk size for resumable uploads.
MethodgetbytesGet bytes from the media.
Methodhas_streamDoes the underlying upload support a streaming interface.
MethodmimetypeMime type of the body.
MethodresumableWhether this upload is resumable.
MethodsizeSize of upload.
MethodstreamA stream interface to the data being uploaded.
Instance Variable_chunksizeUndocumented
Instance Variable_mimetypeUndocumented
Instance Variable_resumableUndocumented
Instance Variable_sizeUndocumented
+ +

+ Inherited from MediaUpload (via MediaIoBaseUpload): +

+ + + + + + + + + + + + + + +
Class Methodnew_from_jsonUtility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json().
Method_to_jsonUtility function for creating a JSON representation of a MediaUpload.
+ + + +
+ +
+
+ + + + + + + + +
+ + @staticmethod
+ def from_json(s): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + + def __del__(self): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + @util.positional(2)
+ def __init__(self, filename, mimetype=None, chunksize=DEFAULT_CHUNK_SIZE, resumable=False): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + filename: string, Name of the file. + mimetype: string, Mime-type of the file. If None then a mime-type will be + guessed from the file extension. + chunksize: int, File will be uploaded in chunks of this many bytes. Only + used if resumable=True. Pass in a value of -1 if the file is to be + uploaded in a single chunk. Note that Google App Engine has a 5MB limit + on request size, so you should never set your chunksize larger than 5MB, + or to -1. + resumable: bool, True if this is a resumable upload. False means upload + in a single request.

+
+
+ + + + + + + + +
+ + + def to_json(self): + + + + + ¶ + +
+
+ +

Creating a JSON representation of an instance of MediaFileUpload. + +Returns: + string, a JSON representation of this instance, suitable to pass to + from_json().

+
+
+ + + + + + + + +
+ + _fd = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _filename = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.MediaInMemoryUpload.html b/docs/pydoc/googleapiclient.http.MediaInMemoryUpload.html new file mode 100644 index 00000000000..8a038aa9b4d --- /dev/null +++ b/docs/pydoc/googleapiclient.http.MediaInMemoryUpload.html @@ -0,0 +1,859 @@ + + + + + + + + googleapiclient.http.MediaInMemoryUpload + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

MediaUpload for a chunk of bytes. + +DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or io.StringIO for +the stream.

+
+ +
+ + + + + + + + + +
Method__init__Create a new MediaInMemoryUpload.
+ +

+ Inherited from MediaIoBaseUpload: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodchunksizeChunk size for resumable uploads.
MethodgetbytesGet bytes from the media.
Methodhas_streamDoes the underlying upload support a streaming interface.
MethodmimetypeMime type of the body.
MethodresumableWhether this upload is resumable.
MethodsizeSize of upload.
MethodstreamA stream interface to the data being uploaded.
Methodto_jsonThis upload type is not serializable.
Instance Variable_chunksizeUndocumented
Instance Variable_fdUndocumented
Instance Variable_mimetypeUndocumented
Instance Variable_resumableUndocumented
Instance Variable_sizeUndocumented
+ +

+ Inherited from MediaUpload (via MediaIoBaseUpload): +

+ + + + + + + + + + + + + + +
Class Methodnew_from_jsonUtility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json().
Method_to_jsonUtility function for creating a JSON representation of a MediaUpload.
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(2)
+ def __init__(self, body, mimetype='application/octet-stream', chunksize=DEFAULT_CHUNK_SIZE, resumable=False): + + + + + ¶ + +
+
+ +

Create a new MediaInMemoryUpload. + +DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or io.StringIO for +the stream. + +Args: + body: string, Bytes of body content. + mimetype: string, Mime-type of the file or default of + 'application/octet-stream'. + chunksize: int, File will be uploaded in chunks of this many bytes. Only + used if resumable=True. + resumable: bool, True if this is a resumable upload. False means upload + in a single request.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.MediaIoBaseDownload.html b/docs/pydoc/googleapiclient.http.MediaIoBaseDownload.html new file mode 100644 index 00000000000..a72d18ec9cc --- /dev/null +++ b/docs/pydoc/googleapiclient.http.MediaIoBaseDownload.html @@ -0,0 +1,1065 @@ + + + + + + + + googleapiclient.http.MediaIoBaseDownload + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class MediaIoBaseDownload(object):

Constructor: MediaIoBaseDownload(fd, request, chunksize)

+

View In Hierarchy

+
+ +
+

"Download media resources. + +Note that the Python file object is compatible with io.Base and can be used +with this class also. + + +Example: + request = farms.animals().get_media(id='cow') + fh = io.FileIO('cow.png', mode='wb') + downloader = MediaIoBaseDownload(fh, request, chunksize=1024*1024) + + done = False + while done is False: + status, done = downloader.next_chunk() + if status: + print "Download %d%%." % int(status.progress() * 100) + print "Download Complete!"

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
Methodnext_chunkGet the next chunk of the download.
Instance Variable_chunksizeUndocumented
Instance Variable_doneUndocumented
Instance Variable_fdUndocumented
Instance Variable_headersUndocumented
Instance Variable_progressUndocumented
Instance Variable_randUndocumented
Instance Variable_requestUndocumented
Instance Variable_sleepUndocumented
Instance Variable_total_sizeUndocumented
Instance Variable_uriUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(3)
+ def __init__(self, fd, request, chunksize=DEFAULT_CHUNK_SIZE): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + fd: io.Base or file object, The stream in which to write the downloaded + bytes. + request: googleapiclient.http.HttpRequest, the media request to perform in + chunks. + chunksize: int, File will be downloaded in chunks of this many bytes.

+
+
+ + + + + + + + +
+ + @util.positional(1)
+ def next_chunk(self, num_retries=0): + + + + + ¶ + +
+
+ +

Get the next chunk of the download. + +Args: + num_retries: Integer, number of times to retry with randomized + exponential backoff. If all retries fail, the raised HttpError + represents the last request. If zero (default), we attempt the + request only once. + +Returns: + (status, done): (MediaDownloadProgress, boolean) + The value of 'done' will be True when the media has been fully + downloaded or the total size of the media is unknown. + +Raises: + googleapiclient.errors.HttpError if the response was not a 2xx. + httplib2.HttpLib2Error if a transport error has occurred.

+
+
+ + + + + + + + +
+ + _chunksize = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _done: bool = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _fd = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _headers: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _progress: int = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _rand = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _request = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _sleep = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _total_size = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _uri = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.MediaIoBaseUpload.html b/docs/pydoc/googleapiclient.http.MediaIoBaseUpload.html new file mode 100644 index 00000000000..41b18ca0140 --- /dev/null +++ b/docs/pydoc/googleapiclient.http.MediaIoBaseUpload.html @@ -0,0 +1,1211 @@ + + + + + + + + googleapiclient.http.MediaIoBaseUpload + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

A MediaUpload for a io.Base objects. + +Note that the Python file object is compatible with io.Base and can be used +with this class also. + + fh = BytesIO('...Some data to upload...') + media = MediaIoBaseUpload(fh, mimetype='image/png', + chunksize=1024*1024, resumable=True) + farm.animals().insert( + id='cow', + name='cow.png', + media_body=media).execute() + +Depending on the platform you are working on, you may pass -1 as the +chunksize, which indicates that the entire file should be uploaded in a single +request. If the underlying platform supports streams, such as Python 2.6 or +later, then this can be very efficient as it avoids multiple connections, and +also avoids loading the entire file into memory before sending it. Note that +Google App Engine has a 5MB limit on request size, so you should never set +your chunksize larger than 5MB, or to -1.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodchunksizeChunk size for resumable uploads.
MethodgetbytesGet bytes from the media.
Methodhas_streamDoes the underlying upload support a streaming interface.
MethodmimetypeMime type of the body.
MethodresumableWhether this upload is resumable.
MethodsizeSize of upload.
MethodstreamA stream interface to the data being uploaded.
Methodto_jsonThis upload type is not serializable.
Instance Variable_chunksizeUndocumented
Instance Variable_fdUndocumented
Instance Variable_mimetypeUndocumented
Instance Variable_resumableUndocumented
Instance Variable_sizeUndocumented
+ +

+ Inherited from MediaUpload: +

+ + + + + + + + + + + + + + +
Class Methodnew_from_jsonUtility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json().
Method_to_jsonUtility function for creating a JSON representation of a MediaUpload.
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(3)
+ def __init__(self, fd, mimetype, chunksize=DEFAULT_CHUNK_SIZE, resumable=False): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + fd: io.Base or file object, The source of the bytes to upload. MUST be + opened in blocking mode, do not use streams opened in non-blocking mode. + The given stream must be seekable, that is, it must be able to call + seek() on fd. + mimetype: string, Mime-type of the file. + chunksize: int, File will be uploaded in chunks of this many bytes. Only + used if resumable=True. Pass in a value of -1 if the file is to be + uploaded as a single chunk. Note that Google App Engine has a 5MB limit + on request size, so you should never set your chunksize larger than 5MB, + or to -1. + resumable: bool, True if this is a resumable upload. False means upload + in a single request.

+
+
+ + + + + + + + +
+ + + def chunksize(self): + + + + + ¶ + +
+
+ +

Chunk size for resumable uploads. + +Returns: + Chunk size in bytes.

+
+
+ + + + + + + + +
+ + + def getbytes(self, begin, length): + + + + + ¶ + +
+
+ +

Get bytes from the media. + +Args: + begin: int, offset from beginning of file. + length: int, number of bytes to read, starting at begin. + +Returns: + A string of bytes read. May be shorted than length if EOF was reached + first.

+
+
+ + + + + + + + +
+ + + def has_stream(self): + + + + + ¶ + +
+
+ +

Does the underlying upload support a streaming interface. + +Streaming means it is an io.IOBase subclass that supports seek, i.e. +seekable() returns True. + +Returns: + True if the call to stream() will return an instance of a seekable io.Base + subclass.

+
+
+ + + + + + + + +
+ + + def mimetype(self): + + + + + ¶ + +
+
+ +

Mime type of the body. + +Returns: + Mime type.

+
+
+ + + + + + + + +
+ + + def resumable(self): + + + + + ¶ + +
+
+ +

Whether this upload is resumable. + +Returns: + True if resumable upload or False.

+
+
+ + + + + + + + +
+ + + def size(self): + + + + + ¶ + +
+
+ +

Size of upload. + +Returns: + Size of the body, or None of the size is unknown.

+
+
+ + + + + + + + +
+ + + def stream(self): + + + + + ¶ + +
+
+ +

A stream interface to the data being uploaded. + +Returns: + The returned value is an io.IOBase subclass that supports seek, i.e. + seekable() returns True.

+
+
+ + + + + + + + +
+ + + def to_json(self): + + + + + ¶ + +
+
+ +

This upload type is not serializable.

+
+
+ + + + + + + + +
+ + _chunksize = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _fd = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _mimetype = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _resumable = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _size = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.MediaUpload.html b/docs/pydoc/googleapiclient.http.MediaUpload.html new file mode 100644 index 00000000000..abd162918de --- /dev/null +++ b/docs/pydoc/googleapiclient.http.MediaUpload.html @@ -0,0 +1,1019 @@ + + + + + + + + googleapiclient.http.MediaUpload + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class MediaUpload(object):

Known subclasses: googleapiclient.http.MediaIoBaseUpload

+

View In Hierarchy

+
+ +
+

Describes a media object to upload. + +Base class that defines the interface of MediaUpload subclasses. + +Note that subclasses of MediaUpload may allow you to control the chunksize +when uploading a media object. It is important to keep the size of the chunk +as large as possible to keep the upload efficient. Other factors may influence +the size of the chunk you use, particularly if you are working in an +environment where individual HTTP requests may have a hardcoded time limit, +such as under certain classes of requests under Google App Engine. + +Streams are io.Base compatible objects that support seek(). Some MediaUpload +subclasses support using streams directly to upload data. Support for +streaming may be indicated by a MediaUpload sub-class and if appropriate for a +platform that stream will be used for uploading the media object. The support +for streaming is indicated by has_stream() returning True. The stream() method +should return an io.Base object that supports seek(). On platforms where the +underlying httplib module supports streaming, for example Python 2.6 and +later, the stream will be passed into the http library which will result in +less memory being used and possibly faster uploads. + +If you need to upload media that can't be uploaded using any of the existing +MediaUpload sub-class then you can sub-class MediaUpload for your particular +needs.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Class Methodnew_from_jsonUtility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json().
MethodchunksizeChunk size for resumable uploads.
MethodgetbytesGet bytes from the media.
Methodhas_streamDoes the underlying upload support a streaming interface.
MethodmimetypeMime type of the body.
MethodresumableWhether this upload is resumable.
MethodsizeSize of upload.
MethodstreamA stream interface to the data being uploaded.
Methodto_jsonCreate a JSON representation of an instance of MediaUpload.
Method_to_jsonUtility function for creating a JSON representation of a MediaUpload.
+ + + +
+ +
+
+ + + + + + + + +
+ + @classmethod
+ def new_from_json(cls, s): + + + + + ¶ + +
+
+ +

Utility class method to instantiate a MediaUpload subclass from a JSON +representation produced by to_json(). + +Args: + s: string, JSON from to_json(). + +Returns: + An instance of the subclass of MediaUpload that was serialized with + to_json().

+
+
+ + + + + + + + +
+ + + def chunksize(self): + + + + + ¶ + +
+
+ +

Chunk size for resumable uploads. + +Returns: + Chunk size in bytes.

+
+
+ + + + + + + + +
+ + + def getbytes(self, begin, end): + + + + + ¶ + +
+
+ +

Get bytes from the media. + +Args: + begin: int, offset from beginning of file. + length: int, number of bytes to read, starting at begin. + +Returns: + A string of bytes read. May be shorter than length if EOF was reached + first.

+
+
+ + + + + + + + +
+ + + def has_stream(self): + + + + + ¶ + +
+
+ +

Does the underlying upload support a streaming interface. + +Streaming means it is an io.IOBase subclass that supports seek, i.e. +seekable() returns True. + +Returns: + True if the call to stream() will return an instance of a seekable io.Base + subclass.

+
+
+ + + + + + + + +
+ + + def mimetype(self): + + + + + ¶ + +
+
+ +

Mime type of the body. + +Returns: + Mime type.

+
+
+ + + + + + + + +
+ + + def resumable(self): + + + + + ¶ + +
+
+ +

Whether this upload is resumable. + +Returns: + True if resumable upload or False.

+
+
+ + + + + + + + +
+ + + def size(self): + + + + + ¶ + +
+
+ +

Size of upload. + +Returns: + Size of the body, or None of the size is unknown.

+
+
+ + + + + + + + +
+ + + def stream(self): + + + + + ¶ + +
+
+ +

A stream interface to the data being uploaded. + +Returns: + The returned value is an io.IOBase subclass that supports seek, i.e. + seekable() returns True.

+
+
+ + + + + + + + +
+ + + def to_json(self): + + + + + ¶ + +
+
+ +

Create a JSON representation of an instance of MediaUpload. + +Returns: + string, a JSON representation of this instance, suitable to pass to + from_json().

+
+
+ + + + + + + + +
+ + @util.positional(1)
+ def _to_json(self, strip=None): + + + + + ¶ + +
+
+ +

Utility function for creating a JSON representation of a MediaUpload. + +Args: + strip: array, An array of names of members to not include in the JSON. + +Returns: + string, a JSON representation of this instance, suitable to pass to + from_json().

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.MediaUploadProgress.html b/docs/pydoc/googleapiclient.http.MediaUploadProgress.html new file mode 100644 index 00000000000..9670a427834 --- /dev/null +++ b/docs/pydoc/googleapiclient.http.MediaUploadProgress.html @@ -0,0 +1,724 @@ + + + + + + + + googleapiclient.http.MediaUploadProgress + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class MediaUploadProgress(object):

Constructor: MediaUploadProgress(resumable_progress, total_size)

+

View In Hierarchy

+
+ +
+

Status of a resumable upload.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodprogressPercent of upload completed, as a float.
Instance Variableresumable_progressUndocumented
Instance Variabletotal_sizeUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, resumable_progress, total_size): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + resumable_progress: int, bytes sent so far. + total_size: int, total bytes in complete upload, or None if the total + upload size isn't known ahead of time.

+
+
+ + + + + + + + +
+ + + def progress(self): + + + + + ¶ + +
+
+ +

Percent of upload completed, as a float. + +Returns: + the percentage complete as a float, returning 0.0 if the total size of + the upload is unknown.

+
+
+ + + + + + + + +
+ + resumable_progress = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + total_size = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.RequestMockBuilder.html b/docs/pydoc/googleapiclient.http.RequestMockBuilder.html new file mode 100644 index 00000000000..cda449bbce9 --- /dev/null +++ b/docs/pydoc/googleapiclient.http.RequestMockBuilder.html @@ -0,0 +1,751 @@ + + + + + + + + googleapiclient.http.RequestMockBuilder + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class RequestMockBuilder(object):

Constructor: RequestMockBuilder(responses, check_unexpected)

+

View In Hierarchy

+
+ +
+

A simple mock of HttpRequest + +Pass in a dictionary to the constructor that maps request methodIds to +tuples of (httplib2.Response, content, opt_expected_body) that should be +returned when that method is called. None may also be passed in for the +httplib2.Response, in which case a 200 OK response will be generated. +If an opt_expected_body (str or dict) is provided, it will be compared to +the body and UnexpectedBodyError will be raised on inequality. + +Example: + response = '{"data": {"id": "tag:google.c...' + requestBuilder = RequestMockBuilder( + { + 'plus.activities.get': (None, response), + } + ) + googleapiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder) + +Methods that you do not supply a response for will return a +200 OK with an empty string as the response content or raise an excpetion +if check_unexpected is set to True. The methodId is taken from the rpcName +in the discovery document. + +For more details see the project wiki.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Method__call__Implements the callable interface that discovery.build() expects of requestBuilder, which is to build an object compatible with HttpRequest.execute(). See that method for the description of the parameters and the expected response.
Method__init__Constructor for RequestMockBuilder
Instance Variablecheck_unexpectedUndocumented
Instance VariableresponsesUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __call__(self, http, postproc, uri, method='GET', body=None, headers=None, methodId=None, resumable=None): + + + + + ¶ + +
+
+ +

Implements the callable interface that discovery.build() expects +of requestBuilder, which is to build an object compatible with +HttpRequest.execute(). See that method for the description of the +parameters and the expected response.

+
+
+ + + + + + + + +
+ + + def __init__(self, responses, check_unexpected=False): + + + + + ¶ + +
+
+ +

Constructor for RequestMockBuilder + +The constructed object should be a callable object +that can replace the class HttpResponse. + +responses - A dictionary that maps methodIds into tuples + of (httplib2.Response, content). The methodId + comes from the 'rpcName' field in the discovery + document. +check_unexpected - A boolean setting whether or not UnexpectedMethodError + should be raised on unsupplied method.

+
+
+ + + + + + + + +
+ + check_unexpected = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + responses = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http._StreamSlice.html b/docs/pydoc/googleapiclient.http._StreamSlice.html new file mode 100644 index 00000000000..d91a0e03fcb --- /dev/null +++ b/docs/pydoc/googleapiclient.http._StreamSlice.html @@ -0,0 +1,771 @@ + + + + + + + + googleapiclient.http._StreamSlice + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class _StreamSlice(object):

Constructor: _StreamSlice(stream, begin, chunksize)

+

View In Hierarchy

+
+ +
+

Truncated stream. + +Takes a stream and presents a stream that is a slice of the original stream. +This is used when uploading media in chunks. In later versions of Python a +stream can be passed to httplib in place of the string of data to send. The +problem is that httplib just blindly reads to the end of the stream. This +wrapper presents a virtual stream that only reads to the end of the chunk.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodreadRead n bytes.
Instance Variable_beginUndocumented
Instance Variable_chunksizeUndocumented
Instance Variable_streamUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, stream, begin, chunksize): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + stream: (io.Base, file object), the stream to wrap. + begin: int, the seek position the chunk begins at. + chunksize: int, the size of the chunk.

+
+
+ + + + + + + + +
+ + + def read(self, n=-1): + + + + + ¶ + +
+
+ +

Read n bytes. + +Args: + n, int, the number of bytes to read. + +Returns: + A string of length 'n', or less if EOF is reached.

+
+
+ + + + + + + + +
+ + _begin = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _chunksize = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + _stream = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.http.html b/docs/pydoc/googleapiclient.http.html new file mode 100644 index 00000000000..5140fffbf1e --- /dev/null +++ b/docs/pydoc/googleapiclient.http.html @@ -0,0 +1,1188 @@ + + + + + + + + googleapiclient.http + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Classes to encapsulate a single HTTP request. + +The classes implement a command pattern, with every +object supporting an execute() method that does the +actual HTTP request.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassBatchHttpRequestBatches multiple HttpRequest objects into a single HTTP request.
ClassHttpMockMock of httplib2.Http
ClassHttpMockSequenceMock of httplib2.Http
ClassHttpRequestEncapsulates a single HTTP request.
ClassHttpRequestMockMock of HttpRequest.
ClassMediaDownloadProgressStatus of a resumable download.
ClassMediaFileUploadA MediaUpload for a file.
ClassMediaInMemoryUploadMediaUpload for a chunk of bytes.
ClassMediaIoBaseDownload"Download media resources.
ClassMediaIoBaseUploadA MediaUpload for a io.Base objects.
ClassMediaUploadDescribes a media object to upload.
ClassMediaUploadProgressStatus of a resumable upload.
ClassRequestMockBuilderA simple mock of HttpRequest
Functionbuild_httpBuilds httplib2.Http object
Functionset_user_agentSet the user-agent on every request.
Functiontunnel_patchTunnel PATCH requests over POST. Args: http - An instance of httplib2.Http or something that acts like it.
ConstantDEFAULT_CHUNK_SIZEUndocumented
ConstantDEFAULT_HTTP_TIMEOUT_SECUndocumented
ConstantLOGGERUndocumented
ConstantMAX_BATCH_LIMITUndocumented
ConstantMAX_URI_LENGTHUndocumented
Variable__author__Undocumented
Class_StreamSliceTruncated stream.
Function_retry_requestRetries an HTTP request multiple times while handling errors.
Function_should_retry_responseDetermines whether a response should be retried.
Constant_LEGACY_BATCH_URIUndocumented
Constant_TOO_MANY_REQUESTSUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def build_http(): + + + + + ¶ + +
+
+ +

Builds httplib2.Http object + +Returns: +A httplib2.Http object, which is used to make http requests, and which has timeout set by default. +To override default timeout call + + socket.setdefaulttimeout(timeout_in_sec) + +before interacting with this method.

+
+
+ + + + + + + + +
+ + + def set_user_agent(http, user_agent): + + + + + ¶ + +
+
+ +

Set the user-agent on every request. + +Args: + http - An instance of httplib2.Http + or something that acts like it. + user_agent: string, the value for the user-agent header. + +Returns: + A modified instance of http that was passed in. + +Example: + + h = httplib2.Http() + h = set_user_agent(h, "my-app-name/6.0") + +Most of the time the user-agent will be set doing auth, this is for the rare +cases where you are accessing an unauthenticated endpoint.

+
+
+ + + + + + + + +
+ + + def tunnel_patch(http): + + + + + ¶ + +
+
+ +

Tunnel PATCH requests over POST. +Args: + http - An instance of httplib2.Http + or something that acts like it. + +Returns: + A modified instance of http that was passed in. + +Example: + + h = httplib2.Http() + h = tunnel_patch(h, "my-app-name/6.0") + +Useful if you are running on a platform that doesn't support PATCH. +Apply this last if you are using OAuth 1.0, as changing the method +will result in a different signature.

+
+
+ + + + + + + + +
+ + DEFAULT_CHUNK_SIZE = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
100 * 1024 * 1024
+
+
+ + + + + + + + +
+ + DEFAULT_HTTP_TIMEOUT_SEC: int = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
60
+
+
+ + + + + + + + +
+ + LOGGER = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
logging.getLogger(__name__)
+
+
+ + + + + + + + +
+ + MAX_BATCH_LIMIT: int = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
1000
+
+
+ + + + + + + + +
+ + MAX_URI_LENGTH: int = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
2048
+
+
+ + + + + + + + +
+ + __author__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _retry_request(http, num_retries, req_type, sleep, rand, uri, method, *args, **kwargs): + + + + + ¶ + +
+
+ +

Retries an HTTP request multiple times while handling errors. + +If after all retries the request still fails, last error is either returned as +return value (for HTTP 5xx errors) or thrown (for ssl.SSLError). + +Args: + http: Http object to be used to execute request. + num_retries: Maximum number of retries. + req_type: Type of the request (used for logging retries). + sleep, rand: Functions to sleep for random time between retries. + uri: URI to be requested. + method: HTTP method to be used. + args, kwargs: Additional arguments passed to http.request. + +Returns: + resp, content - Response from the http request (may be HTTP 5xx).

+
+
+ + + + + + + + +
+ + + def _should_retry_response(resp_status, content): + + + + + ¶ + +
+
+ +

Determines whether a response should be retried. + +Args: + resp_status: The response status received. + content: The response content body. + +Returns: + True if the response should be retried, otherwise False.

+
+
+ + + + + + + + +
+ + _LEGACY_BATCH_URI: str = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
'https://www.googleapis.com/batch'
+
+
+ + + + + + + + +
+ + _TOO_MANY_REQUESTS: int = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
429
+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.mimeparse.html b/docs/pydoc/googleapiclient.mimeparse.html new file mode 100644 index 00000000000..425e8c64c99 --- /dev/null +++ b/docs/pydoc/googleapiclient.mimeparse.html @@ -0,0 +1,936 @@ + + + + + + + + googleapiclient.mimeparse + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

MIME-Type Parser + +This module provides basic functions for handling mime-types. It can handle +matching mime-types against a list of media-ranges. See section 14.1 of the +HTTP specification [RFC 2616] for a complete explanation. + + http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1 + +Contents: + - parse_mime_type(): Parses a mime-type into its component parts. + - parse_media_range(): Media-ranges are mime-types with wild-cards and a 'q' + quality parameter. + - quality(): Determines the quality ('q') of a mime-type when + compared against a list of media-ranges. + - quality_parsed(): Just like quality() except the second parameter must be + pre-parsed. + - best_match(): Choose the mime-type with the highest quality ('q') + from a list of candidates.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functionbest_matchReturn mime-type with the highest quality ('q') from list of candidates.
Functionfitness_and_quality_parsedFind the best match for a mime-type amongst parsed media-ranges.
Functionparse_media_rangeParse a media-range into its component parts.
Functionparse_mime_typeParses a mime-type into its component parts.
FunctionqualityReturn the quality ('q') of a mime-type against a list of media-ranges.
Functionquality_parsedFind the best match for a mime-type amongst parsed media-ranges.
Variable__author__Undocumented
Variable__credits__Undocumented
Variable__email__Undocumented
Variable__license__Undocumented
Variable__version__Undocumented
Function_filter_blankUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def best_match(supported, header): + + + + + ¶ + +
+
+ +

Return mime-type with the highest quality ('q') from list of candidates. + +Takes a list of supported mime-types and finds the best match for all the +media-ranges listed in header. The value of header must be a string that +conforms to the format of the HTTP Accept: header. The value of 'supported' +is a list of mime-types. The list of supported mime-types should be sorted +in order of increasing desirability, in case of a situation where there is +a tie. + +>>> best_match(['application/xbel+xml', 'text/xml'], + 'text/*;q=0.5,*/*; q=0.1') +'text/xml'

+
+
+ + + + + + + + +
+ + + def fitness_and_quality_parsed(mime_type, parsed_ranges): + + + + + ¶ + +
+
+ +

Find the best match for a mime-type amongst parsed media-ranges. + +Find the best match for a given mime-type against a list of media_ranges +that have already been parsed by parse_media_range(). Returns a tuple of +the fitness value and the value of the 'q' quality parameter of the best +match, or (-1, 0) if no match was found. Just as for quality_parsed(), +'parsed_ranges' must be a list of parsed media ranges.

+
+
+ + + + + + + + +
+ + + def parse_media_range(range): + + + + + ¶ + +
+
+ +

Parse a media-range into its component parts. + +Carves up a media range and returns a tuple of the (type, subtype, +params) where 'params' is a dictionary of all the parameters for the media +range. For example, the media range 'application/*;q=0.5' would get parsed +into: + + ('application', '*', {'q', '0.5'}) + +In addition this function also guarantees that there is a value for 'q' +in the params dictionary, filling it in with a proper default if +necessary.

+
+
+ + + + + + + + +
+ + + def parse_mime_type(mime_type): + + + + + ¶ + +
+
+ +

Parses a mime-type into its component parts. + +Carves up a mime-type and returns a tuple of the (type, subtype, params) +where 'params' is a dictionary of all the parameters for the media range. +For example, the media range 'application/xhtml;q=0.5' would get parsed +into: + + ('application', 'xhtml', {'q', '0.5'})

+
+
+ + + + + + + + +
+ + + def quality(mime_type, ranges): + + + + + ¶ + +
+
+ +

Return the quality ('q') of a mime-type against a list of media-ranges. + +Returns the quality 'q' of a mime-type when compared against the +media-ranges in ranges. For example: + +>>> quality('text/html','text/*;q=0.3, text/html;q=0.7, + text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5') +0.7

+
+
+ + + + + + + + +
+ + + def quality_parsed(mime_type, parsed_ranges): + + + + + ¶ + +
+
+ +

Find the best match for a mime-type amongst parsed media-ranges. + +Find the best match for a given mime-type against a list of media_ranges +that have already been parsed by parse_media_range(). Returns the 'q' +quality parameter of the best match, 0 if no match was found. This function +bahaves the same as quality() except that 'parsed_ranges' must be a list of +parsed media ranges.

+
+
+ + + + + + + + +
+ + __author__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + __credits__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + __email__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + __license__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + __version__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _filter_blank(i): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.model.BaseModel.html b/docs/pydoc/googleapiclient.model.BaseModel.html new file mode 100644 index 00000000000..c63b60806ae --- /dev/null +++ b/docs/pydoc/googleapiclient.model.BaseModel.html @@ -0,0 +1,891 @@ + + + + + + + + googleapiclient.model.BaseModel + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

Base model class. + +Subclasses should provide implementations for the "serialize" and +"deserialize" methods, as well as values for the following class attributes. + +Attributes: + accept: The value to use for the HTTP Accept header. + content_type: The value to use for the HTTP Content-type header. + no_content_response: The value to return when deserializing a 204 "No + Content" response. + alt_param: The value to supply as the "alt" query parameter for requests.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethoddeserializePerform the actual deserialization from response string to Python object.
MethodrequestUpdates outgoing requests with a serialized body.
MethodresponseConvert the response wire format into a Python object.
MethodserializePerform the actual Python object serialization.
Class VariableacceptUndocumented
Class Variablealt_paramUndocumented
Class Variablecontent_typeUndocumented
Class Variableno_content_responseUndocumented
Method_build_queryBuilds a query string.
Method_log_requestLogs debugging information about the request if requested.
Method_log_responseLogs debugging information about the response if requested.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def deserialize(self, content): + + + + + ¶ + +
+
+ +

Perform the actual deserialization from response string to Python +object. + +Args: + content: string, the body of the HTTP response + +Returns: + The body de-serialized as a Python object.

+
+
+ + + + + + + + +
+ + + def request(self, headers, path_params, query_params, body_value): + + + + + ¶ + +
+
+ +

Updates outgoing requests with a serialized body. + +Args: + headers: dict, request headers + path_params: dict, parameters that appear in the request path + query_params: dict, parameters that appear in the query + body_value: object, the request body as a Python object, which must be + serializable by json. +Returns: + A tuple of (headers, path_params, query, body) + + headers: dict, request headers + path_params: dict, parameters that appear in the request path + query: string, query part of the request URI + body: string, the body serialized as JSON

+
+
+ + + + + + + + +
+ + + def response(self, resp, content): + + + + + ¶ + +
+
+ +

Convert the response wire format into a Python object. + +Args: + resp: httplib2.Response, the HTTP response headers and status + content: string, the body of the HTTP response + +Returns: + The body de-serialized as a Python object. + +Raises: + googleapiclient.errors.HttpError if a non 2xx response is received.

+
+
+ + + + + + + + +
+ + + def serialize(self, body_value): + + + + + ¶ + +
+
+ +

Perform the actual Python object serialization. + +Args: + body_value: object, the request body as a Python object. + +Returns: + string, the body in serialized form.

+
+
+ + + + + + + + +
+ + accept = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + alt_param = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + content_type = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + no_content_response = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + + def _build_query(self, params): + + + + + ¶ + +
+
+ +

Builds a query string. + +Args: + params: dict, the query parameters + +Returns: + The query parameters properly encoded into an HTTP URI query string.

+
+
+ + + + + + + + +
+ + + def _log_request(self, headers, path_params, query, body): + + + + + ¶ + +
+
+ +

Logs debugging information about the request if requested.

+
+
+ + + + + + + + +
+ + + def _log_response(self, resp, content): + + + + + ¶ + +
+
+ +

Logs debugging information about the response if requested.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.model.JsonModel.html b/docs/pydoc/googleapiclient.model.JsonModel.html new file mode 100644 index 00000000000..f04b60dee9f --- /dev/null +++ b/docs/pydoc/googleapiclient.model.JsonModel.html @@ -0,0 +1,827 @@ + + + + + + + + googleapiclient.model.JsonModel + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ + + +
+

Model class for JSON. + +Serializes and de-serializes between JSON and the Python +object representation of HTTP request and response bodies.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Construct a JsonModel.
MethoddeserializePerform the actual deserialization from response string to Python object.
MethodserializePerform the actual Python object serialization.
Class VariableacceptUndocumented
Class Variablealt_paramUndocumented
Class Variablecontent_typeUndocumented
Propertyno_content_responseUndocumented
Instance Variable_data_wrapperUndocumented
+ +

+ Inherited from BaseModel: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodrequestUpdates outgoing requests with a serialized body.
MethodresponseConvert the response wire format into a Python object.
Method_build_queryBuilds a query string.
Method_log_requestLogs debugging information about the request if requested.
Method_log_responseLogs debugging information about the response if requested.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, data_wrapper=False): + + + + + ¶ + +
+
+ +

Construct a JsonModel. + +Args: + data_wrapper: boolean, wrap requests and responses in a data wrapper

+
+
+ + + + + + + + +
+ + + def deserialize(self, content): + + + + + ¶ + +
+
+ +

Perform the actual deserialization from response string to Python +object. + +Args: + content: string, the body of the HTTP response + +Returns: + The body de-serialized as a Python object.

+
+
+ + + + + + + + +
+ + + def serialize(self, body_value): + + + + + ¶ + +
+
+ +

Perform the actual Python object serialization. + +Args: + body_value: object, the request body as a Python object. + +Returns: + string, the body in serialized form.

+
+
+ + + + + + + + +
+ + accept: str = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + alt_param: str = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + content_type: str = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ @property
+ no_content_response = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + _data_wrapper = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.model.MediaModel.html b/docs/pydoc/googleapiclient.model.MediaModel.html new file mode 100644 index 00000000000..daa359de295 --- /dev/null +++ b/docs/pydoc/googleapiclient.model.MediaModel.html @@ -0,0 +1,759 @@ + + + + + + + + googleapiclient.model.MediaModel + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class MediaModel(JsonModel):

Constructor: MediaModel(data_wrapper)

+

View In Hierarchy

+
+ +
+

Model class for requests that return Media. + +Serializes and de-serializes between JSON and the Python +object representation of HTTP request, and returns the raw bytes +of the response body.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethoddeserializePerform the actual deserialization from response string to Python object.
Class VariableacceptUndocumented
Class Variablealt_paramUndocumented
Class Variablecontent_typeUndocumented
Propertyno_content_responseUndocumented
+ +

+ Inherited from JsonModel: +

+ + + + + + + + + + + + + + + + + + + +
Method__init__Construct a JsonModel.
MethodserializePerform the actual Python object serialization.
Instance Variable_data_wrapperUndocumented
+ +

+ Inherited from BaseModel (via JsonModel): +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodrequestUpdates outgoing requests with a serialized body.
MethodresponseConvert the response wire format into a Python object.
Method_build_queryBuilds a query string.
Method_log_requestLogs debugging information about the request if requested.
Method_log_responseLogs debugging information about the response if requested.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def deserialize(self, content): + + + + + ¶ + +
+
+ +

Perform the actual deserialization from response string to Python +object. + +Args: + content: string, the body of the HTTP response + +Returns: + The body de-serialized as a Python object.

+
+
+ + + + + + + + +
+ + accept: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + alt_param: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + content_type: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ @property
+ no_content_response = + + + + + ¶ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.model.Model.html b/docs/pydoc/googleapiclient.model.Model.html new file mode 100644 index 00000000000..7a25e9e788a --- /dev/null +++ b/docs/pydoc/googleapiclient.model.Model.html @@ -0,0 +1,512 @@ + + + + + + + + googleapiclient.model.Model + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class Model(object):

Known subclasses: googleapiclient.model.BaseModel

+

View In Hierarchy

+
+ +
+

Model base class. + +All Model classes should implement this interface. +The Model serializes and de-serializes between a wire +format such as JSON and a Python object representation.

+
+ +
+ + + + + + + + + + + + + + +
MethodrequestUpdates outgoing requests with a serialized body.
MethodresponseConvert the response wire format into a Python object.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def request(self, headers, path_params, query_params, body_value): + + + + + ¶ + +
+
+ +

Updates outgoing requests with a serialized body. + +Args: + headers: dict, request headers + path_params: dict, parameters that appear in the request path + query_params: dict, parameters that appear in the query + body_value: object, the request body as a Python object, which must be + serializable. +Returns: + A tuple of (headers, path_params, query, body) + + headers: dict, request headers + path_params: dict, parameters that appear in the request path + query: string, query part of the request URI + body: string, the body serialized in the desired wire format.

+
+
+ + + + + + + + +
+ + + def response(self, resp, content): + + + + + ¶ + +
+
+ +

Convert the response wire format into a Python object. + +Args: + resp: httplib2.Response, the HTTP response headers and status + content: string, the body of the HTTP response + +Returns: + The body de-serialized as a Python object. + +Raises: + googleapiclient.errors.HttpError if a non 2xx response is received.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.model.ProtocolBufferModel.html b/docs/pydoc/googleapiclient.model.ProtocolBufferModel.html new file mode 100644 index 00000000000..0b3cebbba2d --- /dev/null +++ b/docs/pydoc/googleapiclient.model.ProtocolBufferModel.html @@ -0,0 +1,831 @@ + + + + + + + + googleapiclient.model.ProtocolBufferModel + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class ProtocolBufferModel(BaseModel):

Constructor: ProtocolBufferModel(protocol_buffer)

+

View In Hierarchy

+
+ +
+

Model class for protocol buffers. + +Serializes and de-serializes the binary protocol buffer sent in the HTTP +request and response bodies.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructs a ProtocolBufferModel.
MethoddeserializePerform the actual deserialization from response string to Python object.
MethodserializePerform the actual Python object serialization.
Class VariableacceptUndocumented
Class Variablealt_paramUndocumented
Class Variablecontent_typeUndocumented
Propertyno_content_responseUndocumented
Instance Variable_protocol_bufferUndocumented
+ +

+ Inherited from BaseModel: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodrequestUpdates outgoing requests with a serialized body.
MethodresponseConvert the response wire format into a Python object.
Method_build_queryBuilds a query string.
Method_log_requestLogs debugging information about the request if requested.
Method_log_responseLogs debugging information about the response if requested.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, protocol_buffer): + + + + + ¶ + +
+
+ +

Constructs a ProtocolBufferModel. + +The serialized protocol buffer returned in an HTTP response will be +de-serialized using the given protocol buffer class. + +Args: + protocol_buffer: The protocol buffer class used to de-serialize a + response from the API.

+
+
+ + + + + + + + +
+ + + def deserialize(self, content): + + + + + ¶ + +
+
+ +

Perform the actual deserialization from response string to Python +object. + +Args: + content: string, the body of the HTTP response + +Returns: + The body de-serialized as a Python object.

+
+
+ + + + + + + + +
+ + + def serialize(self, body_value): + + + + + ¶ + +
+
+ +

Perform the actual Python object serialization. + +Args: + body_value: object, the request body as a Python object. + +Returns: + string, the body in serialized form.

+
+
+ + + + + + + + +
+ + accept: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + alt_param: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + content_type: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ @property
+ no_content_response = + + + + + ¶ + +
+ +
+ + + + + + + + +
+ + _protocol_buffer = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.model.RawModel.html b/docs/pydoc/googleapiclient.model.RawModel.html new file mode 100644 index 00000000000..2ac7caa6acc --- /dev/null +++ b/docs/pydoc/googleapiclient.model.RawModel.html @@ -0,0 +1,759 @@ + + + + + + + + googleapiclient.model.RawModel + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class RawModel(JsonModel):

Constructor: RawModel(data_wrapper)

+

View In Hierarchy

+
+ +
+

Model class for requests that don't return JSON. + +Serializes and de-serializes between JSON and the Python +object representation of HTTP request, and returns the raw bytes +of the response body.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethoddeserializePerform the actual deserialization from response string to Python object.
Class VariableacceptUndocumented
Class Variablealt_paramUndocumented
Class Variablecontent_typeUndocumented
Propertyno_content_responseUndocumented
+ +

+ Inherited from JsonModel: +

+ + + + + + + + + + + + + + + + + + + +
Method__init__Construct a JsonModel.
MethodserializePerform the actual Python object serialization.
Instance Variable_data_wrapperUndocumented
+ +

+ Inherited from BaseModel (via JsonModel): +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodrequestUpdates outgoing requests with a serialized body.
MethodresponseConvert the response wire format into a Python object.
Method_build_queryBuilds a query string.
Method_log_requestLogs debugging information about the request if requested.
Method_log_responseLogs debugging information about the response if requested.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def deserialize(self, content): + + + + + ¶ + +
+
+ +

Perform the actual deserialization from response string to Python +object. + +Args: + content: string, the body of the HTTP response + +Returns: + The body de-serialized as a Python object.

+
+
+ + + + + + + + +
+ + accept: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + alt_param = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + content_type: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ @property
+ no_content_response = + + + + + ¶ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.model.html b/docs/pydoc/googleapiclient.model.html new file mode 100644 index 00000000000..73fd31cbe2d --- /dev/null +++ b/docs/pydoc/googleapiclient.model.html @@ -0,0 +1,753 @@ + + + + + + + + googleapiclient.model + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Model objects for requests and responses. + +Each API may support one or more serializations, such +as JSON, Atom, etc. The model classes are responsible +for converting between the wire format and the Python +object representation.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassBaseModelBase model class.
ClassJsonModelModel class for JSON.
ClassMediaModelModel class for requests that return Media.
ClassModelModel base class.
ClassProtocolBufferModelModel class for protocol buffers.
ClassRawModelModel class for requests that don't return JSON.
FunctionmakepatchCreate a patch object.
ConstantLOGGERUndocumented
Variable__author__Undocumented
Variabledump_request_responseUndocumented
Function_abstractUndocumented
Constant_PY_VERSIONUndocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def makepatch(original, modified): + + + + + ¶ + +
+
+ +

Create a patch object. + +Some methods support PATCH, an efficient way to send updates to a resource. +This method allows the easy construction of patch bodies by looking at the +differences between a resource before and after it was modified. + +Args: + original: object, the original deserialized resource + modified: object, the modified deserialized resource +Returns: + An object that contains only the changes from original to modified, in a + form suitable to pass to a PATCH method. + +Example usage: + item = service.activities().get(postid=postid, userid=userid).execute() + original = copy.deepcopy(item) + item['object']['content'] = 'This is updated.' + service.activities.patch(postid=postid, userid=userid, + body=makepatch(original, item)).execute()

+
+
+ + + + + + + + +
+ + LOGGER = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
logging.getLogger(__name__)
+
+
+ + + + + + + + +
+ + __author__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + dump_request_response: bool = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _abstract(): + + + + + ¶ + +
+
+ +

Undocumented

+
+
+ + + + + + + + +
+ + _PY_VERSION = + + + + + ¶ + +
+
+ +

Undocumented

+
Value
platform.python_version()
+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.sample_tools.html b/docs/pydoc/googleapiclient.sample_tools.html new file mode 100644 index 00000000000..ce42f3d0eb8 --- /dev/null +++ b/docs/pydoc/googleapiclient.sample_tools.html @@ -0,0 +1,504 @@ + + + + + + + + googleapiclient.sample_tools + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Utilities for making samples. + +Consolidates a lot of code commonly repeated in sample applications.

+
+ +
+ + + + + + + + + + + + + + +
FunctioninitA common initialization routine for samples.
Variable__author__Undocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + + def init(argv, name, version, doc, filename, scope=None, parents=[], discovery_filename=None): + + + + + ¶ + +
+
+ +

A common initialization routine for samples. + +Many of the sample applications do the same initialization, which has now +been consolidated into this function. This function uses common idioms found +in almost all the samples, i.e. for an API with name 'apiname', the +credentials are stored in a file named apiname.dat, and the +client_secrets.json file is stored in the same directory as the application +main file. + +Args: + argv: list of string, the command-line parameters of the application. + name: string, name of the API. + version: string, version of the API. + doc: string, description of the application. Usually set to __doc__. + file: string, filename of the application. Usually set to __file__. + parents: list of argparse.ArgumentParser, additional command-line flags. + scope: string, The OAuth scope used. + discovery_filename: string, name of local discovery file (JSON). Use when discovery doc not available via URL. + +Returns: + A tuple of (service, flags), where service is the service object and flags + is the parsed command-line flags.

+
+
+ + + + + + + + +
+ + __author__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.schema.Schemas.html b/docs/pydoc/googleapiclient.schema.Schemas.html new file mode 100644 index 00000000000..38a22d83481 --- /dev/null +++ b/docs/pydoc/googleapiclient.schema.Schemas.html @@ -0,0 +1,668 @@ + + + + + + + + googleapiclient.schema.Schemas + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class Schemas(object):

Constructor: Schemas(discovery)

+

View In Hierarchy

+
+ +
+

Schemas for an API.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodgetGet deserialized JSON schema from the schema name.
MethodprettyPrintByNameGet pretty printed object prototype from the schema name.
MethodprettyPrintSchemaGet pretty printed object prototype of schema.
Instance VariableprettyUndocumented
Instance VariableschemasUndocumented
Method_prettyPrintByNameGet pretty printed object prototype from the schema name.
Method_prettyPrintSchemaGet pretty printed object prototype of schema.
+ + + +
+ +
+
+ + + + + + + + +
+ + + def __init__(self, discovery): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + discovery: object, Deserialized discovery document from which we pull + out the named schema.

+
+
+ + + + + + + + +
+ + + def get(self, name, default=None): + + + + + ¶ + +
+
+ +

Get deserialized JSON schema from the schema name. + +Args: + name: string, Schema name. + default: object, return value if name not found.

+
+
+ + + + + + + + +
+ + + def prettyPrintByName(self, name): + + + + + ¶ + +
+
+ +

Get pretty printed object prototype from the schema name. + +Args: + name: string, Name of schema in the discovery document. + +Returns: + string, A string that contains a prototype object with + comments that conforms to the given schema.

+
+
+ + + + + + + + +
+ + + def prettyPrintSchema(self, schema): + + + + + ¶ + +
+
+ +

Get pretty printed object prototype of schema. + +Args: + schema: object, Parsed JSON schema. + +Returns: + string, A string that contains a prototype object with + comments that conforms to the given schema.

+
+
+ + + + + + + + +
+ + pretty: dict = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + schemas = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + @util.positional(2)
+ def _prettyPrintByName(self, name, seen=None, dent=0): + + + + + ¶ + +
+
+ +

Get pretty printed object prototype from the schema name. + +Args: + name: string, Name of schema in the discovery document. + seen: list of string, Names of schema already seen. Used to handle + recursive definitions. + +Returns: + string, A string that contains a prototype object with + comments that conforms to the given schema.

+
+
+ + + + + + + + +
+ + @util.positional(2)
+ def _prettyPrintSchema(self, schema, seen=None, dent=0): + + + + + ¶ + +
+
+ +

Get pretty printed object prototype of schema. + +Args: + schema: object, Parsed JSON schema. + seen: list of string, Names of schema already seen. Used to handle + recursive definitions. + +Returns: + string, A string that contains a prototype object with + comments that conforms to the given schema.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.schema._SchemaToStruct.html b/docs/pydoc/googleapiclient.schema._SchemaToStruct.html new file mode 100644 index 00000000000..3d06925a554 --- /dev/null +++ b/docs/pydoc/googleapiclient.schema._SchemaToStruct.html @@ -0,0 +1,893 @@ + + + + + + + + googleapiclient.schema._SchemaToStruct + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ class documentation +
+ +
+

class _SchemaToStruct(object):

Constructor: _SchemaToStruct(schema, seen, dent)

+

View In Hierarchy

+
+ +
+

Convert schema to a prototype object.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method__init__Constructor.
MethodemitAdd text as a line to the output.
MethodemitBeginAdd text to the output, but with no line terminator.
MethodemitEndAdd text and comment to the output with line terminator.
MethodindentIncrease indentation level.
Methodto_strPrototype object based on the schema, in Python code with comments.
MethodundentDecrease indentation level.
Instance VariabledentUndocumented
Instance Variablefrom_cacheUndocumented
Instance VariableschemaUndocumented
Instance VariableseenUndocumented
Instance VariablestringUndocumented
Instance VariablevalueUndocumented
Method_to_str_implPrototype object based on the schema, in Python code with comments.
+ + + +
+ +
+
+ + + + + + + + +
+ + @util.positional(3)
+ def __init__(self, schema, seen, dent=0): + + + + + ¶ + +
+
+ +

Constructor. + +Args: + schema: object, Parsed JSON schema. + seen: list, List of names of schema already seen while parsing. Used to + handle recursive definitions. + dent: int, Initial indentation depth.

+
+
+ + + + + + + + +
+ + + def emit(self, text): + + + + + ¶ + +
+
+ +

Add text as a line to the output. + +Args: + text: string, Text to output.

+
+
+ + + + + + + + +
+ + + def emitBegin(self, text): + + + + + ¶ + +
+
+ +

Add text to the output, but with no line terminator. + +Args: + text: string, Text to output.

+
+
+ + + + + + + + +
+ + + def emitEnd(self, text, comment): + + + + + ¶ + +
+
+ +

Add text and comment to the output with line terminator. + +Args: + text: string, Text to output. + comment: string, Python comment.

+
+
+ + + + + + + + +
+ + + def indent(self): + + + + + ¶ + +
+
+ +

Increase indentation level.

+
+
+ + + + + + + + +
+ + + def to_str(self, from_cache): + + + + + ¶ + +
+
+ +

Prototype object based on the schema, in Python code with comments. + +Args: + from_cache: callable(name, seen), Callable that retrieves an object + prototype for a schema with the given name. Seen is a list of schema + names already seen as we recursively descend the schema definition. + +Returns: + Prototype object based on the schema, in Python code with comments. + The lines of the code will all be properly indented.

+
+
+ + + + + + + + +
+ + + def undent(self): + + + + + ¶ + +
+
+ +

Decrease indentation level.

+
+
+ + + + + + + + +
+ + dent = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + from_cache = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + schema = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + seen = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + string = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + value: list = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+ + + + + + + + +
+ + + def _to_str_impl(self, schema): + + + + + ¶ + +
+
+ +

Prototype object based on the schema, in Python code with comments. + +Args: + schema: object, Parsed JSON schema file. + +Returns: + Prototype object based on the schema, in Python code with comments.

+
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.schema.html b/docs/pydoc/googleapiclient.schema.html new file mode 100644 index 00000000000..cf91bdaaff6 --- /dev/null +++ b/docs/pydoc/googleapiclient.schema.html @@ -0,0 +1,514 @@ + + + + + + + + googleapiclient.schema + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Schema processing for discovery based APIs + +Schemas holds an APIs discovery schemas. It can return those schema as +deserialized JSON objects, or pretty print them as prototype objects that +conform to the schema. + +For example, given the schema: + + schema = """{ + "Foo": { + "type": "object", + "properties": { + "etag": { + "type": "string", + "description": "ETag of the collection." + }, + "kind": { + "type": "string", + "description": "Type of the collection ('calendar#acl').", + "default": "calendar#acl" + }, + "nextPageToken": { + "type": "string", + "description": "Token used to access the next + page of this result. Omitted if no further results are available." + } + } + } + }""" + + s = Schemas(schema) + print s.prettyPrintByName('Foo') + + Produces the following output: + + { + "nextPageToken": "A String", # Token used to access the + # next page of this result. Omitted if no further results are available. + "kind": "A String", # Type of the collection ('calendar#acl'). + "etag": "A String", # ETag of the collection. + }, + +The constructor takes a discovery document in which to look up named schema.

+
+ +
+ + + + + + + + + + + + + + + + + + + +
ClassSchemasSchemas for an API.
Variable__author__Undocumented
Class_SchemaToStructConvert schema to a prototype object.
+ + + +
+ +
+
+ + + + + + + + +
+ + __author__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/googleapiclient.version.html b/docs/pydoc/googleapiclient.version.html new file mode 100644 index 00000000000..dbc49a48e23 --- /dev/null +++ b/docs/pydoc/googleapiclient.version.html @@ -0,0 +1,439 @@ + + + + + + + + googleapiclient.version + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ module documentation +
+ +
+ +

+
+ +
+

Undocumented

+
+ +
+ + + + + + + + + +
Variable__version__Undocumented
+ + + +
+ +
+
+ + + + + + + + +
+ + __version__: str = + + + + + ¶ + +
+
+ +

Undocumented

+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/index.html b/docs/pydoc/index.html new file mode 100644 index 00000000000..be2e997dd01 --- /dev/null +++ b/docs/pydoc/index.html @@ -0,0 +1,428 @@ + + + + + + + + googleapiclient + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+ package documentation +
+ +
+ +

+
+ +
+

Undocumented

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModulechannelChannel notifications support.
ModulediscoveryClient for discovery based APIs.
Packagediscovery_cacheCaching utility for the discovery document.
ModuleerrorsErrors for the library.
ModulehttpClasses to encapsulate a single HTTP request.
ModulemimeparseMIME-Type Parser
ModulemodelModel objects for requests and responses.
Modulesample_toolsUtilities for making samples.
ModuleschemaSchema processing for discovery based APIs
ModuleversionUndocumented
Module_authHelpers for authentication using oauth2client or google-auth.
Module_helpersHelper functions for commonly used utilities.
+ + + +
+ +
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/lunr.js b/docs/pydoc/lunr.js new file mode 100644 index 00000000000..6768f2a3846 --- /dev/null +++ b/docs/pydoc/lunr.js @@ -0,0 +1,3475 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ + + ;(function(){ + + /** + * A convenience function for configuring and constructing + * a new lunr Index. + * + * A lunr.Builder instance is created and the pipeline setup + * with a trimmer, stop word filter and stemmer. + * + * This builder object is yielded to the configuration function + * that is passed as a parameter, allowing the list of fields + * and other builder parameters to be customised. + * + * All documents _must_ be added within the passed config function. + * + * @example + * var idx = lunr(function () { + * this.field('title') + * this.field('body') + * this.ref('id') + * + * documents.forEach(function (doc) { + * this.add(doc) + * }, this) + * }) + * + * @see {@link lunr.Builder} + * @see {@link lunr.Pipeline} + * @see {@link lunr.trimmer} + * @see {@link lunr.stopWordFilter} + * @see {@link lunr.stemmer} + * @namespace {function} lunr + */ + var lunr = function (config) { + var builder = new lunr.Builder + + builder.pipeline.add( + lunr.trimmer, + lunr.stopWordFilter, + lunr.stemmer + ) + + builder.searchPipeline.add( + lunr.stemmer + ) + + config.call(builder, builder) + return builder.build() + } + + lunr.version = "2.3.9" + /*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A namespace containing utils for the rest of the lunr library + * @namespace lunr.utils + */ + lunr.utils = {} + + /** + * Print a warning message to the console. + * + * @param {String} message The message to be printed. + * @memberOf lunr.utils + * @function + */ + lunr.utils.warn = (function (global) { + /* eslint-disable no-console */ + return function (message) { + if (global.console && console.warn) { + console.warn(message) + } + } + /* eslint-enable no-console */ + })(this) + + /** + * Convert an object to a string. + * + * In the case of `null` and `undefined` the function returns + * the empty string, in all other cases the result of calling + * `toString` on the passed object is returned. + * + * @param {Any} obj The object to convert to a string. + * @return {String} string representation of the passed object. + * @memberOf lunr.utils + */ + lunr.utils.asString = function (obj) { + if (obj === void 0 || obj === null) { + return "" + } else { + return obj.toString() + } + } + + /** + * Clones an object. + * + * Will create a copy of an existing object such that any mutations + * on the copy cannot affect the original. + * + * Only shallow objects are supported, passing a nested object to this + * function will cause a TypeError. + * + * Objects with primitives, and arrays of primitives are supported. + * + * @param {Object} obj The object to clone. + * @return {Object} a clone of the passed object. + * @throws {TypeError} when a nested object is passed. + * @memberOf Utils + */ + lunr.utils.clone = function (obj) { + if (obj === null || obj === undefined) { + return obj + } + + var clone = Object.create(null), + keys = Object.keys(obj) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i], + val = obj[key] + + if (Array.isArray(val)) { + clone[key] = val.slice() + continue + } + + if (typeof val === 'string' || + typeof val === 'number' || + typeof val === 'boolean') { + clone[key] = val + continue + } + + throw new TypeError("clone is not deep and does not support nested objects") + } + + return clone + } + lunr.FieldRef = function (docRef, fieldName, stringValue) { + this.docRef = docRef + this.fieldName = fieldName + this._stringValue = stringValue + } + + lunr.FieldRef.joiner = "/" + + lunr.FieldRef.fromString = function (s) { + var n = s.indexOf(lunr.FieldRef.joiner) + + if (n === -1) { + throw "malformed field ref string" + } + + var fieldRef = s.slice(0, n), + docRef = s.slice(n + 1) + + return new lunr.FieldRef (docRef, fieldRef, s) + } + + lunr.FieldRef.prototype.toString = function () { + if (this._stringValue == undefined) { + this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef + } + + return this._stringValue + } + /*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A lunr set. + * + * @constructor + */ + lunr.Set = function (elements) { + this.elements = Object.create(null) + + if (elements) { + this.length = elements.length + + for (var i = 0; i < this.length; i++) { + this.elements[elements[i]] = true + } + } else { + this.length = 0 + } + } + + /** + * A complete set that contains all elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ + lunr.Set.complete = { + intersect: function (other) { + return other + }, + + union: function () { + return this + }, + + contains: function () { + return true + } + } + + /** + * An empty set that contains no elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ + lunr.Set.empty = { + intersect: function () { + return this + }, + + union: function (other) { + return other + }, + + contains: function () { + return false + } + } + + /** + * Returns true if this set contains the specified object. + * + * @param {object} object - Object whose presence in this set is to be tested. + * @returns {boolean} - True if this set contains the specified object. + */ + lunr.Set.prototype.contains = function (object) { + return !!this.elements[object] + } + + /** + * Returns a new set containing only the elements that are present in both + * this set and the specified set. + * + * @param {lunr.Set} other - set to intersect with this set. + * @returns {lunr.Set} a new set that is the intersection of this and the specified set. + */ + + lunr.Set.prototype.intersect = function (other) { + var a, b, elements, intersection = [] + + if (other === lunr.Set.complete) { + return this + } + + if (other === lunr.Set.empty) { + return other + } + + if (this.length < other.length) { + a = this + b = other + } else { + a = other + b = this + } + + elements = Object.keys(a.elements) + + for (var i = 0; i < elements.length; i++) { + var element = elements[i] + if (element in b.elements) { + intersection.push(element) + } + } + + return new lunr.Set (intersection) + } + + /** + * Returns a new set combining the elements of this and the specified set. + * + * @param {lunr.Set} other - set to union with this set. + * @return {lunr.Set} a new set that is the union of this and the specified set. + */ + + lunr.Set.prototype.union = function (other) { + if (other === lunr.Set.complete) { + return lunr.Set.complete + } + + if (other === lunr.Set.empty) { + return this + } + + return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) + } + /** + * A function to calculate the inverse document frequency for + * a posting. This is shared between the builder and the index + * + * @private + * @param {object} posting - The posting for a given term + * @param {number} documentCount - The total number of documents. + */ + lunr.idf = function (posting, documentCount) { + var documentsWithTerm = 0 + + for (var fieldName in posting) { + if (fieldName == '_index') continue // Ignore the term index, its not a field + documentsWithTerm += Object.keys(posting[fieldName]).length + } + + var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) + + return Math.log(1 + Math.abs(x)) + } + + /** + * A token wraps a string representation of a token + * as it is passed through the text processing pipeline. + * + * @constructor + * @param {string} [str=''] - The string token being wrapped. + * @param {object} [metadata={}] - Metadata associated with this token. + */ + lunr.Token = function (str, metadata) { + this.str = str || "" + this.metadata = metadata || {} + } + + /** + * Returns the token string that is being wrapped by this object. + * + * @returns {string} + */ + lunr.Token.prototype.toString = function () { + return this.str + } + + /** + * A token update function is used when updating or optionally + * when cloning a token. + * + * @callback lunr.Token~updateFunction + * @param {string} str - The string representation of the token. + * @param {Object} metadata - All metadata associated with this token. + */ + + /** + * Applies the given function to the wrapped string token. + * + * @example + * token.update(function (str, metadata) { + * return str.toUpperCase() + * }) + * + * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. + * @returns {lunr.Token} + */ + lunr.Token.prototype.update = function (fn) { + this.str = fn(this.str, this.metadata) + return this + } + + /** + * Creates a clone of this token. Optionally a function can be + * applied to the cloned token. + * + * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. + * @returns {lunr.Token} + */ + lunr.Token.prototype.clone = function (fn) { + fn = fn || function (s) { return s } + return new lunr.Token (fn(this.str, this.metadata), this.metadata) + } + /*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A function for splitting a string into tokens ready to be inserted into + * the search index. Uses `lunr.tokenizer.separator` to split strings, change + * the value of this property to change how strings are split into tokens. + * + * This tokenizer will convert its parameter to a string by calling `toString` and + * then will split this string on the character in `lunr.tokenizer.separator`. + * Arrays will have their elements converted to strings and wrapped in a lunr.Token. + * + * Optional metadata can be passed to the tokenizer, this metadata will be cloned and + * added as metadata to every token that is created from the object to be tokenized. + * + * @static + * @param {?(string|object|object[])} obj - The object to convert into tokens + * @param {?object} metadata - Optional metadata to associate with every token + * @returns {lunr.Token[]} + * @see {@link lunr.Pipeline} + */ + lunr.tokenizer = function (obj, metadata) { + if (obj == null || obj == undefined) { + return [] + } + + if (Array.isArray(obj)) { + return obj.map(function (t) { + return new lunr.Token( + lunr.utils.asString(t).toLowerCase(), + lunr.utils.clone(metadata) + ) + }) + } + + var str = obj.toString().toLowerCase(), + len = str.length, + tokens = [] + + for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + var char = str.charAt(sliceEnd), + sliceLength = sliceEnd - sliceStart + + if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { + + if (sliceLength > 0) { + var tokenMetadata = lunr.utils.clone(metadata) || {} + tokenMetadata["position"] = [sliceStart, sliceLength] + tokenMetadata["index"] = tokens.length + + tokens.push( + new lunr.Token ( + str.slice(sliceStart, sliceEnd), + tokenMetadata + ) + ) + } + + sliceStart = sliceEnd + 1 + } + + } + + return tokens + } + + /** + * The separator used to split a string into tokens. Override this property to change the behaviour of + * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see lunr.tokenizer + */ + lunr.tokenizer.separator = /[\s\-]+/ + /*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.Pipelines maintain an ordered list of functions to be applied to all + * tokens in documents entering the search index and queries being ran against + * the index. + * + * An instance of lunr.Index created with the lunr shortcut will contain a + * pipeline with a stop word filter and an English language stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline will call each function in turn, passing a token, the + * index of that token in the original list of all tokens and finally a list of + * all the original tokens. + * + * The output of functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with lunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ + lunr.Pipeline = function () { + this._stack = [] + } + + lunr.Pipeline.registeredFunctions = Object.create(null) + + /** + * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token + * string as well as all known metadata. A pipeline function can mutate the token string + * or mutate (or add) metadata for a given token. + * + * A pipeline function can indicate that the passed token should be discarded by returning + * null, undefined or an empty string. This token will not be passed to any downstream pipeline + * functions and will not be added to the index. + * + * Multiple tokens can be returned by returning an array of tokens. Each token will be passed + * to any downstream pipeline functions and all will returned tokens will be added to the index. + * + * Any number of pipeline functions may be chained together using a lunr.Pipeline. + * + * @interface lunr.PipelineFunction + * @param {lunr.Token} token - A token from the document being processed. + * @param {number} i - The index of this token in the complete list of tokens for this document/field. + * @param {lunr.Token[]} tokens - All tokens for this document/field. + * @returns {(?lunr.Token|lunr.Token[])} + */ + + /** + * Register a function with the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @param {String} label - The label to register this function with + */ + lunr.Pipeline.registerFunction = function (fn, label) { + if (label in this.registeredFunctions) { + lunr.utils.warn('Overwriting existing registered function: ' + label) + } + + fn.label = label + lunr.Pipeline.registeredFunctions[fn.label] = fn + } + + /** + * Warns if the function is not registered as a Pipeline function. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @private + */ + lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + var isRegistered = fn.label && (fn.label in this.registeredFunctions) + + if (!isRegistered) { + lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) + } + } + + /** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with lunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised - The serialised pipeline to load. + * @returns {lunr.Pipeline} + */ + lunr.Pipeline.load = function (serialised) { + var pipeline = new lunr.Pipeline + + serialised.forEach(function (fnName) { + var fn = lunr.Pipeline.registeredFunctions[fnName] + + if (fn) { + pipeline.add(fn) + } else { + throw new Error('Cannot load unregistered function: ' + fnName) + } + }) + + return pipeline + } + + /** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. + */ + lunr.Pipeline.prototype.add = function () { + var fns = Array.prototype.slice.call(arguments) + + fns.forEach(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + this._stack.push(fn) + }, this) + } + + /** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ + lunr.Pipeline.prototype.after = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + pos = pos + 1 + this._stack.splice(pos, 0, newFn) + } + + /** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ + lunr.Pipeline.prototype.before = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + this._stack.splice(pos, 0, newFn) + } + + /** + * Removes a function from the pipeline. + * + * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. + */ + lunr.Pipeline.prototype.remove = function (fn) { + var pos = this._stack.indexOf(fn) + if (pos == -1) { + return + } + + this._stack.splice(pos, 1) + } + + /** + * Runs the current list of functions that make up the pipeline against the + * passed tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @returns {Array} + */ + lunr.Pipeline.prototype.run = function (tokens) { + var stackLength = this._stack.length + + for (var i = 0; i < stackLength; i++) { + var fn = this._stack[i] + var memo = [] + + for (var j = 0; j < tokens.length; j++) { + var result = fn(tokens[j], j, tokens) + + if (result === null || result === void 0 || result === '') continue + + if (Array.isArray(result)) { + for (var k = 0; k < result.length; k++) { + memo.push(result[k]) + } + } else { + memo.push(result) + } + } + + tokens = memo + } + + return tokens + } + + /** + * Convenience method for passing a string through a pipeline and getting + * strings out. This method takes care of wrapping the passed string in a + * token and mapping the resulting tokens back to strings. + * + * @param {string} str - The string to pass through the pipeline. + * @param {?object} metadata - Optional metadata to associate with the token + * passed to the pipeline. + * @returns {string[]} + */ + lunr.Pipeline.prototype.runString = function (str, metadata) { + var token = new lunr.Token (str, metadata) + + return this.run([token]).map(function (t) { + return t.toString() + }) + } + + /** + * Resets the pipeline by removing any existing processors. + * + */ + lunr.Pipeline.prototype.reset = function () { + this._stack = [] + } + + /** + * Returns a representation of the pipeline ready for serialisation. + * + * Logs a warning if the function has not been registered. + * + * @returns {Array} + */ + lunr.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + + return fn.label + }) + } + /*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A vector is used to construct the vector space of documents and queries. These + * vectors support operations to determine the similarity between two documents or + * a document and a query. + * + * Normally no parameters are required for initializing a vector, but in the case of + * loading a previously dumped vector the raw elements can be provided to the constructor. + * + * For performance reasons vectors are implemented with a flat array, where an elements + * index is immediately followed by its value. E.g. [index, value, index, value]. This + * allows the underlying array to be as sparse as possible and still offer decent + * performance when being used for vector calculations. + * + * @constructor + * @param {Number[]} [elements] - The flat list of element index and element value pairs. + */ + lunr.Vector = function (elements) { + this._magnitude = 0 + this.elements = elements || [] + } + + + /** + * Calculates the position within the vector to insert a given index. + * + * This is used internally by insert and upsert. If there are duplicate indexes then + * the position is returned as if the value for that index were to be updated, but it + * is the callers responsibility to check whether there is a duplicate at that index + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @returns {Number} + */ + lunr.Vector.prototype.positionForIndex = function (index) { + // For an empty vector the tuple can be inserted at the beginning + if (this.elements.length == 0) { + return 0 + } + + var start = 0, + end = this.elements.length / 2, + sliceLength = end - start, + pivotPoint = Math.floor(sliceLength / 2), + pivotIndex = this.elements[pivotPoint * 2] + + while (sliceLength > 1) { + if (pivotIndex < index) { + start = pivotPoint + } + + if (pivotIndex > index) { + end = pivotPoint + } + + if (pivotIndex == index) { + break + } + + sliceLength = end - start + pivotPoint = start + Math.floor(sliceLength / 2) + pivotIndex = this.elements[pivotPoint * 2] + } + + if (pivotIndex == index) { + return pivotPoint * 2 + } + + if (pivotIndex > index) { + return pivotPoint * 2 + } + + if (pivotIndex < index) { + return (pivotPoint + 1) * 2 + } + } + + /** + * Inserts an element at an index within the vector. + * + * Does not allow duplicates, will throw an error if there is already an entry + * for this index. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + */ + lunr.Vector.prototype.insert = function (insertIdx, val) { + this.upsert(insertIdx, val, function () { + throw "duplicate index" + }) + } + + /** + * Inserts or updates an existing index within the vector. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + * @param {function} fn - A function that is called for updates, the existing value and the + * requested value are passed as arguments + */ + lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { + this._magnitude = 0 + var position = this.positionForIndex(insertIdx) + + if (this.elements[position] == insertIdx) { + this.elements[position + 1] = fn(this.elements[position + 1], val) + } else { + this.elements.splice(position, 0, insertIdx, val) + } + } + + /** + * Calculates the magnitude of this vector. + * + * @returns {Number} + */ + lunr.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude + + var sumOfSquares = 0, + elementsLength = this.elements.length + + for (var i = 1; i < elementsLength; i += 2) { + var val = this.elements[i] + sumOfSquares += val * val + } + + return this._magnitude = Math.sqrt(sumOfSquares) + } + + /** + * Calculates the dot product of this vector and another vector. + * + * @param {lunr.Vector} otherVector - The vector to compute the dot product with. + * @returns {Number} + */ + lunr.Vector.prototype.dot = function (otherVector) { + var dotProduct = 0, + a = this.elements, b = otherVector.elements, + aLen = a.length, bLen = b.length, + aVal = 0, bVal = 0, + i = 0, j = 0 + + while (i < aLen && j < bLen) { + aVal = a[i], bVal = b[j] + if (aVal < bVal) { + i += 2 + } else if (aVal > bVal) { + j += 2 + } else if (aVal == bVal) { + dotProduct += a[i + 1] * b[j + 1] + i += 2 + j += 2 + } + } + + return dotProduct + } + + /** + * Calculates the similarity between this vector and another vector. + * + * @param {lunr.Vector} otherVector - The other vector to calculate the + * similarity with. + * @returns {Number} + */ + lunr.Vector.prototype.similarity = function (otherVector) { + return this.dot(otherVector) / this.magnitude() || 0 + } + + /** + * Converts the vector to an array of the elements within the vector. + * + * @returns {Number[]} + */ + lunr.Vector.prototype.toArray = function () { + var output = new Array (this.elements.length / 2) + + for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { + output[j] = this.elements[i] + } + + return output + } + + /** + * A JSON serializable representation of the vector. + * + * @returns {Number[]} + */ + lunr.Vector.prototype.toJSON = function () { + return this.elements + } + /* eslint-disable */ + /*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + + /** + * lunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token - The string to stem + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + * @function + */ + lunr.stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + var re_mgr0 = new RegExp(mgr0); + var re_mgr1 = new RegExp(mgr1); + var re_meq1 = new RegExp(meq1); + var re_s_v = new RegExp(s_v); + + var re_1a = /^(.+?)(ss|i)es$/; + var re2_1a = /^(.+?)([^s])s$/; + var re_1b = /^(.+?)eed$/; + var re2_1b = /^(.+?)(ed|ing)$/; + var re_1b_2 = /.$/; + var re2_1b_2 = /(at|bl|iz)$/; + var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); + var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var re_1c = /^(.+?[^aeiou])y$/; + var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + var re2_4 = /^(.+?)(s|t)(ion)$/; + + var re_5 = /^(.+?)e$/; + var re_5_1 = /ll$/; + var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var porterStemmer = function porterStemmer(w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a + re2 = re2_1a; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return function (token) { + return token.update(porterStemmer); + } + })(); + + lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') + /*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.generateStopWordFilter builds a stopWordFilter function from the provided + * list of stop words. + * + * The built in lunr.stopWordFilter is built using this generator and can be used + * to generate custom stopWordFilters for applications or non English languages. + * + * @function + * @param {Array} token The token to pass through the filter + * @returns {lunr.PipelineFunction} + * @see lunr.Pipeline + * @see lunr.stopWordFilter + */ + lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord + return memo + }, {}) + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token + } + } + + /** + * lunr.stopWordFilter is an English language stop word list filter, any words + * contained in the list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * + * @function + * @implements {lunr.PipelineFunction} + * @params {lunr.Token} token - A token to check for being a stop word. + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ + lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' + ]) + + lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') + /*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.trimmer is a pipeline function for trimming non word + * characters from the beginning and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token The token to pass through the filter + * @returns {lunr.Token} + * @see lunr.Pipeline + */ + lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^\W+/, '').replace(/\W+$/, '') + }) + } + + lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') + /*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * A token set is used to store the unique list of all tokens + * within an index. Token sets are also used to represent an + * incoming query to the index, this query token set and index + * token set are then intersected to find which tokens to look + * up in the inverted index. + * + * A token set can hold multiple tokens, as in the case of the + * index token set, or it can hold a single token as in the + * case of a simple query token set. + * + * Additionally token sets are used to perform wildcard matching. + * Leading, contained and trailing wildcards are supported, and + * from this edit distance matching can also be provided. + * + * Token sets are implemented as a minimal finite state automata, + * where both common prefixes and suffixes are shared between tokens. + * This helps to reduce the space used for storing the token set. + * + * @constructor + */ + lunr.TokenSet = function () { + this.final = false + this.edges = {} + this.id = lunr.TokenSet._nextId + lunr.TokenSet._nextId += 1 + } + + /** + * Keeps track of the next, auto increment, identifier to assign + * to a new tokenSet. + * + * TokenSets require a unique identifier to be correctly minimised. + * + * @private + */ + lunr.TokenSet._nextId = 1 + + /** + * Creates a TokenSet instance from the given sorted array of words. + * + * @param {String[]} arr - A sorted array of strings to create the set from. + * @returns {lunr.TokenSet} + * @throws Will throw an error if the input array is not sorted. + */ + lunr.TokenSet.fromArray = function (arr) { + var builder = new lunr.TokenSet.Builder + + for (var i = 0, len = arr.length; i < len; i++) { + builder.insert(arr[i]) + } + + builder.finish() + return builder.root + } + + /** + * Creates a token set from a query clause. + * + * @private + * @param {Object} clause - A single clause from lunr.Query. + * @param {string} clause.term - The query clause term. + * @param {number} [clause.editDistance] - The optional edit distance for the term. + * @returns {lunr.TokenSet} + */ + lunr.TokenSet.fromClause = function (clause) { + if ('editDistance' in clause) { + return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) + } else { + return lunr.TokenSet.fromString(clause.term) + } + } + + /** + * Creates a token set representing a single string with a specified + * edit distance. + * + * Insertions, deletions, substitutions and transpositions are each + * treated as an edit distance of 1. + * + * Increasing the allowed edit distance will have a dramatic impact + * on the performance of both creating and intersecting these TokenSets. + * It is advised to keep the edit distance less than 3. + * + * @param {string} str - The string to create the token set from. + * @param {number} editDistance - The allowed edit distance to match. + * @returns {lunr.Vector} + */ + lunr.TokenSet.fromFuzzyString = function (str, editDistance) { + var root = new lunr.TokenSet + + var stack = [{ + node: root, + editsRemaining: editDistance, + str: str + }] + + while (stack.length) { + var frame = stack.pop() + + // no edit + if (frame.str.length > 0) { + var char = frame.str.charAt(0), + noEditNode + + if (char in frame.node.edges) { + noEditNode = frame.node.edges[char] + } else { + noEditNode = new lunr.TokenSet + frame.node.edges[char] = noEditNode + } + + if (frame.str.length == 1) { + noEditNode.final = true + } + + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) + } + + if (frame.editsRemaining == 0) { + continue + } + + // insertion + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } + + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + + // deletion + // can only do a deletion if we have enough edits remaining + // and if there are characters left to delete in the string + if (frame.str.length > 1) { + stack.push({ + node: frame.node, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // deletion + // just removing the last character from the str + if (frame.str.length == 1) { + frame.node.final = true + } + + // substitution + // can only do a substitution if we have enough edits remaining + // and if there are characters left to substitute + if (frame.str.length >= 1) { + if ("*" in frame.node.edges) { + var substitutionNode = frame.node.edges["*"] + } else { + var substitutionNode = new lunr.TokenSet + frame.node.edges["*"] = substitutionNode + } + + if (frame.str.length == 1) { + substitutionNode.final = true + } + + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // transposition + // can only do a transposition if there are edits remaining + // and there are enough characters to transpose + if (frame.str.length > 1) { + var charA = frame.str.charAt(0), + charB = frame.str.charAt(1), + transposeNode + + if (charB in frame.node.edges) { + transposeNode = frame.node.edges[charB] + } else { + transposeNode = new lunr.TokenSet + frame.node.edges[charB] = transposeNode + } + + if (frame.str.length == 1) { + transposeNode.final = true + } + + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) + } + } + + return root + } + + /** + * Creates a TokenSet from a string. + * + * The string may contain one or more wildcard characters (*) + * that will allow wildcard matching when intersecting with + * another TokenSet. + * + * @param {string} str - The string to create a TokenSet from. + * @returns {lunr.TokenSet} + */ + lunr.TokenSet.fromString = function (str) { + var node = new lunr.TokenSet, + root = node + + /* + * Iterates through all characters within the passed string + * appending a node for each character. + * + * When a wildcard character is found then a self + * referencing edge is introduced to continually match + * any number of any characters. + */ + for (var i = 0, len = str.length; i < len; i++) { + var char = str[i], + final = (i == len - 1) + + if (char == "*") { + node.edges[char] = node + node.final = final + + } else { + var next = new lunr.TokenSet + next.final = final + + node.edges[char] = next + node = next + } + } + + return root + } + + /** + * Converts this TokenSet into an array of strings + * contained within the TokenSet. + * + * This is not intended to be used on a TokenSet that + * contains wildcards, in these cases the results are + * undefined and are likely to cause an infinite loop. + * + * @returns {string[]} + */ + lunr.TokenSet.prototype.toArray = function () { + var words = [] + + var stack = [{ + prefix: "", + node: this + }] + + while (stack.length) { + var frame = stack.pop(), + edges = Object.keys(frame.node.edges), + len = edges.length + + if (frame.node.final) { + /* In Safari, at this point the prefix is sometimes corrupted, see: + * https://github.com/olivernn/lunr.js/issues/279 Calling any + * String.prototype method forces Safari to "cast" this string to what + * it's supposed to be, fixing the bug. */ + frame.prefix.charAt(0) + words.push(frame.prefix) + } + + for (var i = 0; i < len; i++) { + var edge = edges[i] + + stack.push({ + prefix: frame.prefix.concat(edge), + node: frame.node.edges[edge] + }) + } + } + + return words + } + + /** + * Generates a string representation of a TokenSet. + * + * This is intended to allow TokenSets to be used as keys + * in objects, largely to aid the construction and minimisation + * of a TokenSet. As such it is not designed to be a human + * friendly representation of the TokenSet. + * + * @returns {string} + */ + lunr.TokenSet.prototype.toString = function () { + // NOTE: Using Object.keys here as this.edges is very likely + // to enter 'hash-mode' with many keys being added + // + // avoiding a for-in loop here as it leads to the function + // being de-optimised (at least in V8). From some simple + // benchmarks the performance is comparable, but allowing + // V8 to optimize may mean easy performance wins in the future. + + if (this._str) { + return this._str + } + + var str = this.final ? '1' : '0', + labels = Object.keys(this.edges).sort(), + len = labels.length + + for (var i = 0; i < len; i++) { + var label = labels[i], + node = this.edges[label] + + str = str + label + node.id + } + + return str + } + + /** + * Returns a new TokenSet that is the intersection of + * this TokenSet and the passed TokenSet. + * + * This intersection will take into account any wildcards + * contained within the TokenSet. + * + * @param {lunr.TokenSet} b - An other TokenSet to intersect with. + * @returns {lunr.TokenSet} + */ + lunr.TokenSet.prototype.intersect = function (b) { + var output = new lunr.TokenSet, + frame = undefined + + var stack = [{ + qNode: b, + output: output, + node: this + }] + + while (stack.length) { + frame = stack.pop() + + // NOTE: As with the #toString method, we are using + // Object.keys and a for loop instead of a for-in loop + // as both of these objects enter 'hash' mode, causing + // the function to be de-optimised in V8 + var qEdges = Object.keys(frame.qNode.edges), + qLen = qEdges.length, + nEdges = Object.keys(frame.node.edges), + nLen = nEdges.length + + for (var q = 0; q < qLen; q++) { + var qEdge = qEdges[q] + + for (var n = 0; n < nLen; n++) { + var nEdge = nEdges[n] + + if (nEdge == qEdge || qEdge == '*') { + var node = frame.node.edges[nEdge], + qNode = frame.qNode.edges[qEdge], + final = node.final && qNode.final, + next = undefined + + if (nEdge in frame.output.edges) { + // an edge already exists for this character + // no need to create a new node, just set the finality + // bit unless this node is already final + next = frame.output.edges[nEdge] + next.final = next.final || final + + } else { + // no edge exists yet, must create one + // set the finality bit and insert it + // into the output + next = new lunr.TokenSet + next.final = final + frame.output.edges[nEdge] = next + } + + stack.push({ + qNode: qNode, + output: next, + node: node + }) + } + } + } + } + + return output + } + lunr.TokenSet.Builder = function () { + this.previousWord = "" + this.root = new lunr.TokenSet + this.uncheckedNodes = [] + this.minimizedNodes = {} + } + + lunr.TokenSet.Builder.prototype.insert = function (word) { + var node, + commonPrefix = 0 + + if (word < this.previousWord) { + throw new Error ("Out of order word insertion") + } + + for (var i = 0; i < word.length && i < this.previousWord.length; i++) { + if (word[i] != this.previousWord[i]) break + commonPrefix++ + } + + this.minimize(commonPrefix) + + if (this.uncheckedNodes.length == 0) { + node = this.root + } else { + node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child + } + + for (var i = commonPrefix; i < word.length; i++) { + var nextNode = new lunr.TokenSet, + char = word[i] + + node.edges[char] = nextNode + + this.uncheckedNodes.push({ + parent: node, + char: char, + child: nextNode + }) + + node = nextNode + } + + node.final = true + this.previousWord = word + } + + lunr.TokenSet.Builder.prototype.finish = function () { + this.minimize(0) + } + + lunr.TokenSet.Builder.prototype.minimize = function (downTo) { + for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { + var node = this.uncheckedNodes[i], + childKey = node.child.toString() + + if (childKey in this.minimizedNodes) { + node.parent.edges[node.char] = this.minimizedNodes[childKey] + } else { + // Cache the key for this node since + // we know it can't change anymore + node.child._str = childKey + + this.minimizedNodes[childKey] = node.child + } + + this.uncheckedNodes.pop() + } + } + /*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * An index contains the built index of all documents and provides a query interface + * to the index. + * + * Usually instances of lunr.Index will not be created using this constructor, instead + * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be + * used to load previously built and serialized indexes. + * + * @constructor + * @param {Object} attrs - The attributes of the built search index. + * @param {Object} attrs.invertedIndex - An index of term/field to document reference. + * @param {Object} attrs.fieldVectors - Field vectors + * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. + * @param {string[]} attrs.fields - The names of indexed document fields. + * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. + */ + lunr.Index = function (attrs) { + this.invertedIndex = attrs.invertedIndex + this.fieldVectors = attrs.fieldVectors + this.tokenSet = attrs.tokenSet + this.fields = attrs.fields + this.pipeline = attrs.pipeline + } + + /** + * A result contains details of a document matching a search query. + * @typedef {Object} lunr.Index~Result + * @property {string} ref - The reference of the document this result represents. + * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. + * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. + */ + + /** + * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple + * query language which itself is parsed into an instance of lunr.Query. + * + * For programmatically building queries it is advised to directly use lunr.Query, the query language + * is best used for human entered text rather than program generated text. + * + * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported + * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' + * or 'world', though those that contain both will rank higher in the results. + * + * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can + * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding + * wildcards will increase the number of documents that will be found but can also have a negative + * impact on query performance, especially with wildcards at the beginning of a term. + * + * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term + * hello in the title field will match this query. Using a field not present in the index will lead + * to an error being thrown. + * + * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term + * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported + * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. + * Avoid large values for edit distance to improve query performance. + * + * Each term also supports a presence modifier. By default a term's presence in document is optional, however + * this can be changed to either required or prohibited. For a term's presence to be required in a document the + * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and + * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not + * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. + * + * To escape special characters the backslash character '\' can be used, this allows searches to include + * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead + * of attempting to apply a boost of 2 to the search term "foo". + * + * @typedef {string} lunr.Index~QueryString + * @example Simple single term query + * hello + * @example Multiple term query + * hello world + * @example term scoped to a field + * title:hello + * @example term with a boost of 10 + * hello^10 + * @example term with an edit distance of 2 + * hello~2 + * @example terms with presence modifiers + * -foo +bar baz + */ + + /** + * Performs a search against the index using lunr query syntax. + * + * Results will be returned sorted by their score, the most relevant results + * will be returned first. For details on how the score is calculated, please see + * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. + * + * For more programmatic querying use lunr.Index#query. + * + * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. + * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. + * @returns {lunr.Index~Result[]} + */ + lunr.Index.prototype.search = function (queryString) { + return this.query(function (query) { + var parser = new lunr.QueryParser(queryString, query) + parser.parse() + }) + } + + /** + * A query builder callback provides a query object to be used to express + * the query to perform on the index. + * + * @callback lunr.Index~queryBuilder + * @param {lunr.Query} query - The query object to build up. + * @this lunr.Query + */ + + /** + * Performs a query against the index using the yielded lunr.Query object. + * + * If performing programmatic queries against the index, this method is preferred + * over lunr.Index#search so as to avoid the additional query parsing overhead. + * + * A query object is yielded to the supplied function which should be used to + * express the query to be run against the index. + * + * Note that although this function takes a callback parameter it is _not_ an + * asynchronous operation, the callback is just yielded a query object to be + * customized. + * + * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. + * @returns {lunr.Index~Result[]} + */ + lunr.Index.prototype.query = function (fn) { + // for each query clause + // * process terms + // * expand terms from token set + // * find matching documents and metadata + // * get document vectors + // * score documents + + var query = new lunr.Query(this.fields), + matchingFields = Object.create(null), + queryVectors = Object.create(null), + termFieldCache = Object.create(null), + requiredMatches = Object.create(null), + prohibitedMatches = Object.create(null) + + /* + * To support field level boosts a query vector is created per + * field. An empty vector is eagerly created to support negated + * queries. + */ + for (var i = 0; i < this.fields.length; i++) { + queryVectors[this.fields[i]] = new lunr.Vector + } + + fn.call(query, query) + + for (var i = 0; i < query.clauses.length; i++) { + /* + * Unless the pipeline has been disabled for this term, which is + * the case for terms with wildcards, we need to pass the clause + * term through the search pipeline. A pipeline returns an array + * of processed terms. Pipeline functions may expand the passed + * term, which means we may end up performing multiple index lookups + * for a single query term. + */ + var clause = query.clauses[i], + terms = null, + clauseMatches = lunr.Set.empty + + if (clause.usePipeline) { + terms = this.pipeline.runString(clause.term, { + fields: clause.fields + }) + } else { + terms = [clause.term] + } + + for (var m = 0; m < terms.length; m++) { + var term = terms[m] + + /* + * Each term returned from the pipeline needs to use the same query + * clause object, e.g. the same boost and or edit distance. The + * simplest way to do this is to re-use the clause object but mutate + * its term property. + */ + clause.term = term + + /* + * From the term in the clause we create a token set which will then + * be used to intersect the indexes token set to get a list of terms + * to lookup in the inverted index + */ + var termTokenSet = lunr.TokenSet.fromClause(clause), + expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + + /* + * If a term marked as required does not exist in the tokenSet it is + * impossible for the search to return any matches. We set all the field + * scoped required matches set to empty and stop examining any further + * clauses. + */ + if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = lunr.Set.empty + } + + break + } + + for (var j = 0; j < expandedTerms.length; j++) { + /* + * For each term get the posting and termIndex, this is required for + * building the query vector. + */ + var expandedTerm = expandedTerms[j], + posting = this.invertedIndex[expandedTerm], + termIndex = posting._index + + for (var k = 0; k < clause.fields.length; k++) { + /* + * For each field that this query term is scoped by (by default + * all fields are in scope) we need to get all the document refs + * that have this term in that field. + * + * The posting is the entry in the invertedIndex for the matching + * term from above. + */ + var field = clause.fields[k], + fieldPosting = posting[field], + matchingDocumentRefs = Object.keys(fieldPosting), + termField = expandedTerm + "/" + field, + matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) + + /* + * if the presence of this term is required ensure that the matching + * documents are added to the set of required matches for this clause. + * + */ + if (clause.presence == lunr.Query.presence.REQUIRED) { + clauseMatches = clauseMatches.union(matchingDocumentsSet) + + if (requiredMatches[field] === undefined) { + requiredMatches[field] = lunr.Set.complete + } + } + + /* + * if the presence of this term is prohibited ensure that the matching + * documents are added to the set of prohibited matches for this field, + * creating that set if it does not yet exist. + */ + if (clause.presence == lunr.Query.presence.PROHIBITED) { + if (prohibitedMatches[field] === undefined) { + prohibitedMatches[field] = lunr.Set.empty + } + + prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) + + /* + * Prohibited matches should not be part of the query vector used for + * similarity scoring and no metadata should be extracted so we continue + * to the next field + */ + continue + } + + /* + * The query field vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. + * Using upsert because there could already be an entry in the vector + * for the term we are working with. In that case we just add the scores + * together. + */ + queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) + + /** + * If we've already seen this term, field combo then we've already collected + * the matching documents and metadata, no need to go through all that again + */ + if (termFieldCache[termField]) { + continue + } + + for (var l = 0; l < matchingDocumentRefs.length; l++) { + /* + * All metadata for this term/field/document triple + * are then extracted and collected into an instance + * of lunr.MatchData ready to be returned in the query + * results + */ + var matchingDocumentRef = matchingDocumentRefs[l], + matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), + metadata = fieldPosting[matchingDocumentRef], + fieldMatch + + if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { + matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) + } else { + fieldMatch.add(expandedTerm, field, metadata) + } + + } + + termFieldCache[termField] = true + } + } + } + + /** + * If the presence was required we need to update the requiredMatches field sets. + * We do this after all fields for the term have collected their matches because + * the clause terms presence is required in _any_ of the fields not _all_ of the + * fields. + */ + if (clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) + } + } + } + + /** + * Need to combine the field scoped required and prohibited + * matching documents into a global set of required and prohibited + * matches + */ + var allRequiredMatches = lunr.Set.complete, + allProhibitedMatches = lunr.Set.empty + + for (var i = 0; i < this.fields.length; i++) { + var field = this.fields[i] + + if (requiredMatches[field]) { + allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) + } + + if (prohibitedMatches[field]) { + allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) + } + } + + var matchingFieldRefs = Object.keys(matchingFields), + results = [], + matches = Object.create(null) + + /* + * If the query is negated (contains only prohibited terms) + * we need to get _all_ fieldRefs currently existing in the + * index. This is only done when we know that the query is + * entirely prohibited terms to avoid any cost of getting all + * fieldRefs unnecessarily. + * + * Additionally, blank MatchData must be created to correctly + * populate the results. + */ + if (query.isNegated()) { + matchingFieldRefs = Object.keys(this.fieldVectors) + + for (var i = 0; i < matchingFieldRefs.length; i++) { + var matchingFieldRef = matchingFieldRefs[i] + var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) + matchingFields[matchingFieldRef] = new lunr.MatchData + } + } + + for (var i = 0; i < matchingFieldRefs.length; i++) { + /* + * Currently we have document fields that match the query, but we + * need to return documents. The matchData and scores are combined + * from multiple fields belonging to the same document. + * + * Scores are calculated by field, using the query vectors created + * above, and combined into a final document score using addition. + */ + var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), + docRef = fieldRef.docRef + + if (!allRequiredMatches.contains(docRef)) { + continue + } + + if (allProhibitedMatches.contains(docRef)) { + continue + } + + var fieldVector = this.fieldVectors[fieldRef], + score = queryVectors[fieldRef.fieldName].similarity(fieldVector), + docMatch + + if ((docMatch = matches[docRef]) !== undefined) { + docMatch.score += score + docMatch.matchData.combine(matchingFields[fieldRef]) + } else { + var match = { + ref: docRef, + score: score, + matchData: matchingFields[fieldRef] + } + matches[docRef] = match + results.push(match) + } + } + + /* + * Sort the results objects by score, highest first. + */ + return results.sort(function (a, b) { + return b.score - a.score + }) + } + + /** + * Prepares the index for JSON serialization. + * + * The schema for this JSON blob will be described in a + * separate JSON schema file. + * + * @returns {Object} + */ + lunr.Index.prototype.toJSON = function () { + var invertedIndex = Object.keys(this.invertedIndex) + .sort() + .map(function (term) { + return [term, this.invertedIndex[term]] + }, this) + + var fieldVectors = Object.keys(this.fieldVectors) + .map(function (ref) { + return [ref, this.fieldVectors[ref].toJSON()] + }, this) + + return { + version: lunr.version, + fields: this.fields, + fieldVectors: fieldVectors, + invertedIndex: invertedIndex, + pipeline: this.pipeline.toJSON() + } + } + + /** + * Loads a previously serialized lunr.Index + * + * @param {Object} serializedIndex - A previously serialized lunr.Index + * @returns {lunr.Index} + */ + lunr.Index.load = function (serializedIndex) { + var attrs = {}, + fieldVectors = {}, + serializedVectors = serializedIndex.fieldVectors, + invertedIndex = Object.create(null), + serializedInvertedIndex = serializedIndex.invertedIndex, + tokenSetBuilder = new lunr.TokenSet.Builder, + pipeline = lunr.Pipeline.load(serializedIndex.pipeline) + + if (serializedIndex.version != lunr.version) { + lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") + } + + for (var i = 0; i < serializedVectors.length; i++) { + var tuple = serializedVectors[i], + ref = tuple[0], + elements = tuple[1] + + fieldVectors[ref] = new lunr.Vector(elements) + } + + for (var i = 0; i < serializedInvertedIndex.length; i++) { + var tuple = serializedInvertedIndex[i], + term = tuple[0], + posting = tuple[1] + + tokenSetBuilder.insert(term) + invertedIndex[term] = posting + } + + tokenSetBuilder.finish() + + attrs.fields = serializedIndex.fields + + attrs.fieldVectors = fieldVectors + attrs.invertedIndex = invertedIndex + attrs.tokenSet = tokenSetBuilder.root + attrs.pipeline = pipeline + + return new lunr.Index(attrs) + } + /*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + + /** + * lunr.Builder performs indexing on a set of documents and + * returns instances of lunr.Index ready for querying. + * + * All configuration of the index is done via the builder, the + * fields to index, the document reference, the text processing + * pipeline and document scoring parameters are all set on the + * builder before indexing. + * + * @constructor + * @property {string} _ref - Internal reference to the document reference field. + * @property {string[]} _fields - Internal reference to the document fields to index. + * @property {object} invertedIndex - The inverted index maps terms to document fields. + * @property {object} documentTermFrequencies - Keeps track of document term frequencies. + * @property {object} documentLengths - Keeps track of the length of documents added to the index. + * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. + * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. + * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. + * @property {number} documentCount - Keeps track of the total number of documents indexed. + * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. + * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. + * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. + * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. + */ + lunr.Builder = function () { + this._ref = "id" + this._fields = Object.create(null) + this._documents = Object.create(null) + this.invertedIndex = Object.create(null) + this.fieldTermFrequencies = {} + this.fieldLengths = {} + this.tokenizer = lunr.tokenizer + this.pipeline = new lunr.Pipeline + this.searchPipeline = new lunr.Pipeline + this.documentCount = 0 + this._b = 0.75 + this._k1 = 1.2 + this.termIndex = 0 + this.metadataWhitelist = [] + } + + /** + * Sets the document field used as the document reference. Every document must have this field. + * The type of this field in the document should be a string, if it is not a string it will be + * coerced into a string by calling toString. + * + * The default ref is 'id'. + * + * The ref should _not_ be changed during indexing, it should be set before any documents are + * added to the index. Changing it during indexing can lead to inconsistent results. + * + * @param {string} ref - The name of the reference field in the document. + */ + lunr.Builder.prototype.ref = function (ref) { + this._ref = ref + } + + /** + * A function that is used to extract a field from a document. + * + * Lunr expects a field to be at the top level of a document, if however the field + * is deeply nested within a document an extractor function can be used to extract + * the right field for indexing. + * + * @callback fieldExtractor + * @param {object} doc - The document being added to the index. + * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. + * @example Extracting a nested field + * function (doc) { return doc.nested.field } + */ + + /** + * Adds a field to the list of document fields that will be indexed. Every document being + * indexed should have this field. Null values for this field in indexed documents will + * not cause errors but will limit the chance of that document being retrieved by searches. + * + * All fields should be added before adding documents to the index. Adding fields after + * a document has been indexed will have no effect on already indexed documents. + * + * Fields can be boosted at build time. This allows terms within that field to have more + * importance when ranking search results. Use a field boost to specify that matches within + * one field are more important than other fields. + * + * @param {string} fieldName - The name of a field to index in all documents. + * @param {object} attributes - Optional attributes associated with this field. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. + * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. + * @throws {RangeError} fieldName cannot contain unsupported characters '/' + */ + lunr.Builder.prototype.field = function (fieldName, attributes) { + if (/\//.test(fieldName)) { + throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") + } + + this._fields[fieldName] = attributes || {} + } + + /** + * A parameter to tune the amount of field length normalisation that is applied when + * calculating relevance scores. A value of 0 will completely disable any normalisation + * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b + * will be clamped to the range 0 - 1. + * + * @param {number} number - The value to set for this tuning parameter. + */ + lunr.Builder.prototype.b = function (number) { + if (number < 0) { + this._b = 0 + } else if (number > 1) { + this._b = 1 + } else { + this._b = number + } + } + + /** + * A parameter that controls the speed at which a rise in term frequency results in term + * frequency saturation. The default value is 1.2. Setting this to a higher value will give + * slower saturation levels, a lower value will result in quicker saturation. + * + * @param {number} number - The value to set for this tuning parameter. + */ + lunr.Builder.prototype.k1 = function (number) { + this._k1 = number + } + + /** + * Adds a document to the index. + * + * Before adding fields to the index the index should have been fully setup, with the document + * ref and all fields to index already having been specified. + * + * The document must have a field name as specified by the ref (by default this is 'id') and + * it should have all fields defined for indexing, though null or undefined values will not + * cause errors. + * + * Entire documents can be boosted at build time. Applying a boost to a document indicates that + * this document should rank higher in search results than other documents. + * + * @param {object} doc - The document to add to the index. + * @param {object} attributes - Optional attributes associated with this document. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. + */ + lunr.Builder.prototype.add = function (doc, attributes) { + var docRef = doc[this._ref], + fields = Object.keys(this._fields) + + this._documents[docRef] = attributes || {} + this.documentCount += 1 + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i], + extractor = this._fields[fieldName].extractor, + field = extractor ? extractor(doc) : doc[fieldName], + tokens = this.tokenizer(field, { + fields: [fieldName] + }), + terms = this.pipeline.run(tokens), + fieldRef = new lunr.FieldRef (docRef, fieldName), + fieldTerms = Object.create(null) + + this.fieldTermFrequencies[fieldRef] = fieldTerms + this.fieldLengths[fieldRef] = 0 + + // store the length of this field for this document + this.fieldLengths[fieldRef] += terms.length + + // calculate term frequencies for this field + for (var j = 0; j < terms.length; j++) { + var term = terms[j] + + if (fieldTerms[term] == undefined) { + fieldTerms[term] = 0 + } + + fieldTerms[term] += 1 + + // add to inverted index + // create an initial posting if one doesn't exist + if (this.invertedIndex[term] == undefined) { + var posting = Object.create(null) + posting["_index"] = this.termIndex + this.termIndex += 1 + + for (var k = 0; k < fields.length; k++) { + posting[fields[k]] = Object.create(null) + } + + this.invertedIndex[term] = posting + } + + // add an entry for this term/fieldName/docRef to the invertedIndex + if (this.invertedIndex[term][fieldName][docRef] == undefined) { + this.invertedIndex[term][fieldName][docRef] = Object.create(null) + } + + // store all whitelisted metadata about this token in the + // inverted index + for (var l = 0; l < this.metadataWhitelist.length; l++) { + var metadataKey = this.metadataWhitelist[l], + metadata = term.metadata[metadataKey] + + if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { + this.invertedIndex[term][fieldName][docRef][metadataKey] = [] + } + + this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) + } + } + + } + } + + /** + * Calculates the average document length for this index + * + * @private + */ + lunr.Builder.prototype.calculateAverageFieldLengths = function () { + + var fieldRefs = Object.keys(this.fieldLengths), + numberOfFields = fieldRefs.length, + accumulator = {}, + documentsWithField = {} + + for (var i = 0; i < numberOfFields; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName + + documentsWithField[field] || (documentsWithField[field] = 0) + documentsWithField[field] += 1 + + accumulator[field] || (accumulator[field] = 0) + accumulator[field] += this.fieldLengths[fieldRef] + } + + var fields = Object.keys(this._fields) + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i] + accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] + } + + this.averageFieldLength = accumulator + } + + /** + * Builds a vector space model of every document using lunr.Vector + * + * @private + */ + lunr.Builder.prototype.createFieldVectors = function () { + var fieldVectors = {}, + fieldRefs = Object.keys(this.fieldTermFrequencies), + fieldRefsLength = fieldRefs.length, + termIdfCache = Object.create(null) + + for (var i = 0; i < fieldRefsLength; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + fieldName = fieldRef.fieldName, + fieldLength = this.fieldLengths[fieldRef], + fieldVector = new lunr.Vector, + termFrequencies = this.fieldTermFrequencies[fieldRef], + terms = Object.keys(termFrequencies), + termsLength = terms.length + + + var fieldBoost = this._fields[fieldName].boost || 1, + docBoost = this._documents[fieldRef.docRef].boost || 1 + + for (var j = 0; j < termsLength; j++) { + var term = terms[j], + tf = termFrequencies[term], + termIndex = this.invertedIndex[term]._index, + idf, score, scoreWithPrecision + + if (termIdfCache[term] === undefined) { + idf = lunr.idf(this.invertedIndex[term], this.documentCount) + termIdfCache[term] = idf + } else { + idf = termIdfCache[term] + } + + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) + score *= fieldBoost + score *= docBoost + scoreWithPrecision = Math.round(score * 1000) / 1000 + // Converts 1.23456789 to 1.234. + // Reducing the precision so that the vectors take up less + // space when serialised. Doing it now so that they behave + // the same before and after serialisation. Also, this is + // the fastest approach to reducing a number's precision in + // JavaScript. + + fieldVector.insert(termIndex, scoreWithPrecision) + } + + fieldVectors[fieldRef] = fieldVector + } + + this.fieldVectors = fieldVectors + } + + /** + * Creates a token set of all tokens in the index using lunr.TokenSet + * + * @private + */ + lunr.Builder.prototype.createTokenSet = function () { + this.tokenSet = lunr.TokenSet.fromArray( + Object.keys(this.invertedIndex).sort() + ) + } + + /** + * Builds the index, creating an instance of lunr.Index. + * + * This completes the indexing process and should only be called + * once all documents have been added to the index. + * + * @returns {lunr.Index} + */ + lunr.Builder.prototype.build = function () { + this.calculateAverageFieldLengths() + this.createFieldVectors() + this.createTokenSet() + + return new lunr.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) + } + + /** + * Applies a plugin to the index builder. + * + * A plugin is a function that is called with the index builder as its context. + * Plugins can be used to customise or extend the behaviour of the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied when building the index. + * + * The plugin function will be called with the index builder as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index builder as its context. + * + * @param {Function} plugin The plugin to apply. + */ + lunr.Builder.prototype.use = function (fn) { + var args = Array.prototype.slice.call(arguments, 1) + args.unshift(this) + fn.apply(this, args) + } + /** + * Contains and collects metadata about a matching document. + * A single instance of lunr.MatchData is returned as part of every + * lunr.Index~Result. + * + * @constructor + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + * @property {object} metadata - A cloned collection of metadata associated with this document. + * @see {@link lunr.Index~Result} + */ + lunr.MatchData = function (term, field, metadata) { + var clonedMetadata = Object.create(null), + metadataKeys = Object.keys(metadata || {}) + + // Cloning the metadata to prevent the original + // being mutated during match data combination. + // Metadata is kept in an array within the inverted + // index so cloning the data can be done with + // Array#slice + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + clonedMetadata[key] = metadata[key].slice() + } + + this.metadata = Object.create(null) + + if (term !== undefined) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata + } + } + + /** + * An instance of lunr.MatchData will be created for every term that matches a + * document. However only one instance is required in a lunr.Index~Result. This + * method combines metadata from another instance of lunr.MatchData with this + * objects metadata. + * + * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. + * @see {@link lunr.Index~Result} + */ + lunr.MatchData.prototype.combine = function (otherMatchData) { + var terms = Object.keys(otherMatchData.metadata) + + for (var i = 0; i < terms.length; i++) { + var term = terms[i], + fields = Object.keys(otherMatchData.metadata[term]) + + if (this.metadata[term] == undefined) { + this.metadata[term] = Object.create(null) + } + + for (var j = 0; j < fields.length; j++) { + var field = fields[j], + keys = Object.keys(otherMatchData.metadata[term][field]) + + if (this.metadata[term][field] == undefined) { + this.metadata[term][field] = Object.create(null) + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k] + + if (this.metadata[term][field][key] == undefined) { + this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] + } else { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) + } + + } + } + } + } + + /** + * Add metadata for a term/field pair to this instance of match data. + * + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + */ + lunr.MatchData.prototype.add = function (term, field, metadata) { + if (!(term in this.metadata)) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = metadata + return + } + + if (!(field in this.metadata[term])) { + this.metadata[term][field] = metadata + return + } + + var metadataKeys = Object.keys(metadata) + + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + + if (key in this.metadata[term][field]) { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) + } else { + this.metadata[term][field][key] = metadata[key] + } + } + } + /** + * A lunr.Query provides a programmatic way of defining queries to be performed + * against a {@link lunr.Index}. + * + * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method + * so the query object is pre-initialized with the right index fields. + * + * @constructor + * @property {lunr.Query~Clause[]} clauses - An array of query clauses. + * @property {string[]} allFields - An array of all available fields in a lunr.Index. + */ + lunr.Query = function (allFields) { + this.clauses = [] + this.allFields = allFields + } + + /** + * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. + * + * This allows wildcards to be added to the beginning and end of a term without having to manually do any string + * concatenation. + * + * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. + * + * @constant + * @default + * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour + * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists + * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with trailing wildcard + * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) + * @example query term with leading and trailing wildcard + * query.term('foo', { + * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING + * }) + */ + + lunr.Query.wildcard = new String ("*") + lunr.Query.wildcard.NONE = 0 + lunr.Query.wildcard.LEADING = 1 + lunr.Query.wildcard.TRAILING = 2 + + /** + * Constants for indicating what kind of presence a term must have in matching documents. + * + * @constant + * @enum {number} + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with required presence + * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) + */ + lunr.Query.presence = { + /** + * Term's presence in a document is optional, this is the default value. + */ + OPTIONAL: 1, + + /** + * Term's presence in a document is required, documents that do not contain + * this term will not be returned. + */ + REQUIRED: 2, + + /** + * Term's presence in a document is prohibited, documents that do contain + * this term will not be returned. + */ + PROHIBITED: 3 + } + + /** + * A single clause in a {@link lunr.Query} contains a term and details on how to + * match that term against a {@link lunr.Index}. + * + * @typedef {Object} lunr.Query~Clause + * @property {string[]} fields - The fields in an index this clause should be matched against. + * @property {number} [boost=1] - Any boost that should be applied when matching this clause. + * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. + * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. + * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. + * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. + */ + + /** + * Adds a {@link lunr.Query~Clause} to this query. + * + * Unless the clause contains the fields to be matched all fields will be matched. In addition + * a default boost of 1 is applied to the clause. + * + * @param {lunr.Query~Clause} clause - The clause to add to this query. + * @see lunr.Query~Clause + * @returns {lunr.Query} + */ + lunr.Query.prototype.clause = function (clause) { + if (!('fields' in clause)) { + clause.fields = this.allFields + } + + if (!('boost' in clause)) { + clause.boost = 1 + } + + if (!('usePipeline' in clause)) { + clause.usePipeline = true + } + + if (!('wildcard' in clause)) { + clause.wildcard = lunr.Query.wildcard.NONE + } + + if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { + clause.term = "*" + clause.term + } + + if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { + clause.term = "" + clause.term + "*" + } + + if (!('presence' in clause)) { + clause.presence = lunr.Query.presence.OPTIONAL + } + + this.clauses.push(clause) + + return this + } + + /** + * A negated query is one in which every clause has a presence of + * prohibited. These queries require some special processing to return + * the expected results. + * + * @returns boolean + */ + lunr.Query.prototype.isNegated = function () { + for (var i = 0; i < this.clauses.length; i++) { + if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { + return false + } + } + + return true + } + + /** + * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} + * to the list of clauses that make up this query. + * + * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion + * to a token or token-like string should be done before calling this method. + * + * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an + * array, each term in the array will share the same options. + * + * @param {object|object[]} term - The term(s) to add to the query. + * @param {object} [options] - Any additional properties to add to the query clause. + * @returns {lunr.Query} + * @see lunr.Query#clause + * @see lunr.Query~Clause + * @example adding a single term to a query + * query.term("foo") + * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard + * query.term("foo", { + * fields: ["title"], + * boost: 10, + * wildcard: lunr.Query.wildcard.TRAILING + * }) + * @example using lunr.tokenizer to convert a string to tokens before using them as terms + * query.term(lunr.tokenizer("foo bar")) + */ + lunr.Query.prototype.term = function (term, options) { + if (Array.isArray(term)) { + term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) + return this + } + + var clause = options || {} + clause.term = term.toString() + + this.clause(clause) + + return this + } + lunr.QueryParseError = function (message, start, end) { + this.name = "QueryParseError" + this.message = message + this.start = start + this.end = end + } + + lunr.QueryParseError.prototype = new Error + lunr.QueryLexer = function (str) { + this.lexemes = [] + this.str = str + this.length = str.length + this.pos = 0 + this.start = 0 + this.escapeCharPositions = [] + } + + lunr.QueryLexer.prototype.run = function () { + var state = lunr.QueryLexer.lexText + + while (state) { + state = state(this) + } + } + + lunr.QueryLexer.prototype.sliceString = function () { + var subSlices = [], + sliceStart = this.start, + sliceEnd = this.pos + + for (var i = 0; i < this.escapeCharPositions.length; i++) { + sliceEnd = this.escapeCharPositions[i] + subSlices.push(this.str.slice(sliceStart, sliceEnd)) + sliceStart = sliceEnd + 1 + } + + subSlices.push(this.str.slice(sliceStart, this.pos)) + this.escapeCharPositions.length = 0 + + return subSlices.join('') + } + + lunr.QueryLexer.prototype.emit = function (type) { + this.lexemes.push({ + type: type, + str: this.sliceString(), + start: this.start, + end: this.pos + }) + + this.start = this.pos + } + + lunr.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1) + this.pos += 1 + } + + lunr.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) { + return lunr.QueryLexer.EOS + } + + var char = this.str.charAt(this.pos) + this.pos += 1 + return char + } + + lunr.QueryLexer.prototype.width = function () { + return this.pos - this.start + } + + lunr.QueryLexer.prototype.ignore = function () { + if (this.start == this.pos) { + this.pos += 1 + } + + this.start = this.pos + } + + lunr.QueryLexer.prototype.backup = function () { + this.pos -= 1 + } + + lunr.QueryLexer.prototype.acceptDigitRun = function () { + var char, charCode + + do { + char = this.next() + charCode = char.charCodeAt(0) + } while (charCode > 47 && charCode < 58) + + if (char != lunr.QueryLexer.EOS) { + this.backup() + } + } + + lunr.QueryLexer.prototype.more = function () { + return this.pos < this.length + } + + lunr.QueryLexer.EOS = 'EOS' + lunr.QueryLexer.FIELD = 'FIELD' + lunr.QueryLexer.TERM = 'TERM' + lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' + lunr.QueryLexer.BOOST = 'BOOST' + lunr.QueryLexer.PRESENCE = 'PRESENCE' + + lunr.QueryLexer.lexField = function (lexer) { + lexer.backup() + lexer.emit(lunr.QueryLexer.FIELD) + lexer.ignore() + return lunr.QueryLexer.lexText + } + + lunr.QueryLexer.lexTerm = function (lexer) { + if (lexer.width() > 1) { + lexer.backup() + lexer.emit(lunr.QueryLexer.TERM) + } + + lexer.ignore() + + if (lexer.more()) { + return lunr.QueryLexer.lexText + } + } + + lunr.QueryLexer.lexEditDistance = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) + return lunr.QueryLexer.lexText + } + + lunr.QueryLexer.lexBoost = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.BOOST) + return lunr.QueryLexer.lexText + } + + lunr.QueryLexer.lexEOS = function (lexer) { + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + } + + // This matches the separator used when tokenising fields + // within a document. These should match otherwise it is + // not possible to search for some tokens within a document. + // + // It is possible for the user to change the separator on the + // tokenizer so it _might_ clash with any other of the special + // characters already used within the search string, e.g. :. + // + // This means that it is possible to change the separator in + // such a way that makes some words unsearchable using a search + // string. + lunr.QueryLexer.termSeparator = lunr.tokenizer.separator + + lunr.QueryLexer.lexText = function (lexer) { + while (true) { + var char = lexer.next() + + if (char == lunr.QueryLexer.EOS) { + return lunr.QueryLexer.lexEOS + } + + // Escape character is '\' + if (char.charCodeAt(0) == 92) { + lexer.escapeCharacter() + continue + } + + if (char == ":") { + return lunr.QueryLexer.lexField + } + + if (char == "~") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexEditDistance + } + + if (char == "^") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexBoost + } + + // "+" indicates term presence is required + // checking for length to ensure that only + // leading "+" are considered + if (char == "+" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + // "-" indicates term presence is prohibited + // checking for length to ensure that only + // leading "-" are considered + if (char == "-" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + if (char.match(lunr.QueryLexer.termSeparator)) { + return lunr.QueryLexer.lexTerm + } + } + } + + lunr.QueryParser = function (str, query) { + this.lexer = new lunr.QueryLexer (str) + this.query = query + this.currentClause = {} + this.lexemeIdx = 0 + } + + lunr.QueryParser.prototype.parse = function () { + this.lexer.run() + this.lexemes = this.lexer.lexemes + + var state = lunr.QueryParser.parseClause + + while (state) { + state = state(this) + } + + return this.query + } + + lunr.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx] + } + + lunr.QueryParser.prototype.consumeLexeme = function () { + var lexeme = this.peekLexeme() + this.lexemeIdx += 1 + return lexeme + } + + lunr.QueryParser.prototype.nextClause = function () { + var completedClause = this.currentClause + this.query.clause(completedClause) + this.currentClause = {} + } + + lunr.QueryParser.parseClause = function (parser) { + var lexeme = parser.peekLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.type) { + case lunr.QueryLexer.PRESENCE: + return lunr.QueryParser.parsePresence + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expected either a field or a term, found " + lexeme.type + + if (lexeme.str.length >= 1) { + errorMessage += " with value '" + lexeme.str + "'" + } + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + } + + lunr.QueryParser.parsePresence = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.str) { + case "-": + parser.currentClause.presence = lunr.Query.presence.PROHIBITED + break + case "+": + parser.currentClause.presence = lunr.Query.presence.REQUIRED + break + default: + var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term or field, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseField = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + if (parser.query.allFields.indexOf(lexeme.str) == -1) { + var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), + errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.fields = [lexeme.str] + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseTerm = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + parser.currentClause.term = lexeme.str.toLowerCase() + + if (lexeme.str.indexOf("*") != -1) { + parser.currentClause.usePipeline = false + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseEditDistance = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var editDistance = parseInt(lexeme.str, 10) + + if (isNaN(editDistance)) { + var errorMessage = "edit distance must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.editDistance = editDistance + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + lunr.QueryParser.parseBoost = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var boost = parseInt(lexeme.str, 10) + + if (isNaN(boost)) { + var errorMessage = "boost must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.boost = boost + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } + } + + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + ;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like enviroments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + root.lunr = factory() + } + }(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return lunr + })) + })(); diff --git a/docs/pydoc/moduleIndex.html b/docs/pydoc/moduleIndex.html new file mode 100644 index 00000000000..7c1636b80b2 --- /dev/null +++ b/docs/pydoc/moduleIndex.html @@ -0,0 +1,166 @@ + + + + + + + + Module Index + + + + + + + + + + + + + + + + +
+ + + +
  • googleapiclient - No package docstring; 10/11 modules, 1/1 package documented
    • channel - Channel notifications support.
    • discovery - Client for discovery based APIs.
    • discovery_cache - Caching utility for the discovery document.
      • appengine_memcache - App Engine memcache based cache for the discovery document.
      • base - An abstract class for caching the discovery document.
      • file_cache - File based cache for the discovery document.
    • errors - Errors for the library.
    • http - Classes to encapsulate a single HTTP request.
    • mimeparse - MIME-Type Parser
    • model - Model objects for requests and responses.
    • sample_tools - Utilities for making samples.
    • schema - Schema processing for discovery based APIs
    • version - Undocumented
    • _auth - Helpers for authentication using oauth2client or google-auth.
    • _helpers - Helper functions for commonly used utilities.
+ +
+ + + + + + + \ No newline at end of file diff --git a/docs/pydoc/nameIndex.html b/docs/pydoc/nameIndex.html new file mode 100644 index 00000000000..0b038d56339 --- /dev/null +++ b/docs/pydoc/nameIndex.html @@ -0,0 +1,383 @@ + + + + + + + + Index of Names + + + + + + + + + + + + + + + + +
+ + + + + + + +

A

+ + + + + + +

B

+ + + + + + +

C

+ + + + + + +

D

+ + + + + + +

E

+ + + + + + +

F

+ + + + + + +

G

+ + + + + + +

H

+ + + + + + +

I

+ + + + + + +

J

+ + + + + + +

K

+ + + + + + +

L

+ + + + + + +

M

+ + + + + + +

N

+ + + + + + +

P

+ + + + + + +

Q

+ + + + + + +

R

+ + + + + + +

S

+ + + + + + +

T

+ + + + + + +

U

+ + + + + + +

V

+ + + + + + +

W

+ + + + + + +

X

+ + + + + + +

_

+ + + + +
+ + + + + + + + \ No newline at end of file diff --git a/docs/pydoc/objects.inv b/docs/pydoc/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..9669ed5472b6683392791842ca0c53200f6eed00 GIT binary patch literal 5339 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