Python 3.9 is now generally available.

Module: google.appengine.api.capabilities

Allows applications to identify API outages and scheduled downtime.


    def StoreUploadedProfileImage(self):
      uploaded_image = self.request.get('img')
      # If the images API is unavailable, we'll just skip the resize.
      if CapabilitySet('images').is_enabled():
        uploaded_image = images.resize(uploaded_image, 64, 64)

    def RenderHTMLForm(self):
      datastore_readonly = CapabilitySet('datastore_v3', capabilities=['write'])
      if datastore_readonly.is_enabled():
        # ...render form normally...
        # self.response.out('<p>Not accepting submissions right now: %s</p>' %
        # ...render form with form elements disabled...

Individual API wrapper modules should expose `CapabilitySet` objects
for users rather than relying on users to create them.  They can
also create convenience methods that delegate to the relevant `CapabilitySet`;
for example, `db.IsReadOnly()`.

## Modules

[`capability_stub`](../../../google/appengine/api/capabilities/capability_stub) module: Stub version of the capability service API.

## Classes

[`class CapabilitySet`](../../../google/appengine/api/capabilities/CapabilitySet): Encapsulates one or more capabilities.

[`class UnknownCapabilityError`](../../../google/appengine/api/capabilities/UnknownCapabilityError): An unknown capability was requested.