Notice: Over the next few months, we're reorganizing the App Engine documentation site to make it easier to find content and better align with the rest of Google Cloud products. The same content will be available, but the navigation will now match the rest of the Cloud products.

Python 3.10 is now generally available.

Module: google.appengine.api.capabilities

Allows applications to identify API outages and scheduled downtime.

Example:

    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)
      store(uploaded_image)

    def RenderHTMLForm(self):
      datastore_readonly = CapabilitySet('datastore_v3', capabilities=['write'])
      if datastore_readonly.is_enabled():
        # ...render form normally...
      else:
        # self.response.out('<p>Not accepting submissions right now: %s</p>' %
                            datastore_readonly.admin_message())
        # ...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.