'Describes the current structure of the table in DynamoDB.
This information will be used to update the ``schema``, ``indexes``,
``global_indexes`` and ``throughput`` information on the ``Table``. Some
calls, such as those involving creating keys or querying, will require
this information to be populated.
It also returns the full raw data structure from DynamoDB, in the
event you\'d like to parse out additional information (such as the
``ItemCount`` or usage information).
Example::
>>> users.describe()
# Lots of keys here...
>>> len(users.schema)
2'

def describe(self):

    result = self.connection.describe_table(self.table_name)
    raw_throughput = result['Table']['ProvisionedThroughput']
    self.throughput['read'] = int(raw_throughput['ReadCapacityUnits'])
    self.throughput['write'] = int(raw_throughput['WriteCapacityUnits'])
    if (not self.schema):
        raw_schema = result['Table'].get('KeySchema', [])
        raw_attributes = result['Table'].get('AttributeDefinitions', [])
        self.schema = self._introspect_schema(raw_schema, raw_attributes)
    if (not self.indexes):
        raw_indexes = result['Table'].get('LocalSecondaryIndexes', [])
        self.indexes = self._introspect_indexes(raw_indexes)
    raw_global_indexes = result['Table'].get('GlobalSecondaryIndexes', [])
    self.global_indexes = self._introspect_global_indexes(raw_global_indexes)
    return result
