def HasExtension(self, extension_handle):
    'Checks if a certain extension is present for this message.\n\n    Extensions are retrieved using the :attr:`Extensions` mapping (if present).\n\n    Args:\n      extension_handle: The handle for the extension to check.\n\n    Returns:\n      bool: Whether the extension is present for this message.\n\n    Raises:\n      KeyError: if the extension is repeated. Similar to repeated fields,\n        there is no separate notion of presence: a "not present" repeated\n        extension is an empty list.\n    '
    raise NotImplementedError
Checks if a certain extension is present for this message.

Extensions are retrieved using the :attr:`Extensions` mapping (if present).

Args:
  extension_handle: The handle for the extension to check.

Returns:
  bool: Whether the extension is present for this message.

Raises:
  KeyError: if the extension is repeated. Similar to repeated fields,
    there is no separate notion of presence: a "not present" repeated
    extension is an empty list.
def HasExtension(self, extension_handle):
    'Checks if a certain extension is present for this message.\n\n    Extensions are retrieved using the :attr:`Extensions` mapping (if present).\n\n    Args:\n      extension_handle: The handle for the extension to check.\n\n    Returns:\n      bool: Whether the extension is present for this message.\n\n    Raises:\n      KeyError: if the extension is repeated. Similar to repeated fields,\n        there is no separate notion of presence: a "not present" repeated\n        extension is an empty list.\n    '
    raise NotImplementedError