docs: def from_description(cls, table):
          """ Factory method that uses the dynamo3 'describe' return value """
          throughput = table.provisioned_throughput
          attrs = {}
          for data in getattr(table, "attribute_definitions", []):
              field = TableField(data["AttributeName"], TYPES_REV[data["AttributeType"]])
              attrs[field.name] = field
          for data in getattr(table, "key_schema", []):
              name = data["AttributeName"]
              attrs[name].key_type = data["KeyType"]
          for index in getattr(table, "local_secondary_indexes", []):
              for data in index["KeySchema"]:
                  if data["KeyType"] == "RANGE":
                      name = data["AttributeName"]
                      index_type = index["Projection"]["ProjectionType"]
                      includes = index["Projection"].get("NonKeyAttributes")
                      attrs[name] = attrs[name].to_index(
                          index_type, index["IndexName"], includes
                      )
                      break
          global_indexes = {}
          for index in getattr(table, "global_secondary_indexes", []):
              idx = GlobalIndex.from_description(index, attrs)
              global_indexes[idx.name] = idx
          return cls(
              table,
              attrs,
              global_indexes,
              throughput["ReadCapacityUnits"],
              throughput["WriteCapacityUnits"],
              throughput["NumberOfDecreasesToday"],
              table.table_size_bytes,
          )