| Index: tools/telemetry/third_party/gsutilz/third_party/boto/boto/dynamodb2/fields.py
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/boto/boto/dynamodb2/fields.py b/tools/telemetry/third_party/gsutilz/third_party/boto/boto/dynamodb2/fields.py
|
| deleted file mode 100644
|
| index 4443969e4e1c43d0c87bce02233a7b654410b498..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/boto/boto/dynamodb2/fields.py
|
| +++ /dev/null
|
| @@ -1,337 +0,0 @@
|
| -from boto.dynamodb2.types import STRING
|
| -
|
| -
|
| -class BaseSchemaField(object):
|
| - """
|
| - An abstract class for defining schema fields.
|
| -
|
| - Contains most of the core functionality for the field. Subclasses must
|
| - define an ``attr_type`` to pass to DynamoDB.
|
| - """
|
| - attr_type = None
|
| -
|
| - def __init__(self, name, data_type=STRING):
|
| - """
|
| - Creates a Python schema field, to represent the data to pass to
|
| - DynamoDB.
|
| -
|
| - Requires a ``name`` parameter, which should be a string name of the
|
| - field.
|
| -
|
| - Optionally accepts a ``data_type`` parameter, which should be a
|
| - constant from ``boto.dynamodb2.types``. (Default: ``STRING``)
|
| - """
|
| - self.name = name
|
| - self.data_type = data_type
|
| -
|
| - def definition(self):
|
| - """
|
| - Returns the attribute definition structure DynamoDB expects.
|
| -
|
| - Example::
|
| -
|
| - >>> field.definition()
|
| - {
|
| - 'AttributeName': 'username',
|
| - 'AttributeType': 'S',
|
| - }
|
| -
|
| - """
|
| - return {
|
| - 'AttributeName': self.name,
|
| - 'AttributeType': self.data_type,
|
| - }
|
| -
|
| - def schema(self):
|
| - """
|
| - Returns the schema structure DynamoDB expects.
|
| -
|
| - Example::
|
| -
|
| - >>> field.schema()
|
| - {
|
| - 'AttributeName': 'username',
|
| - 'KeyType': 'HASH',
|
| - }
|
| -
|
| - """
|
| - return {
|
| - 'AttributeName': self.name,
|
| - 'KeyType': self.attr_type,
|
| - }
|
| -
|
| -
|
| -class HashKey(BaseSchemaField):
|
| - """
|
| - An field representing a hash key.
|
| -
|
| - Example::
|
| -
|
| - >>> from boto.dynamodb2.types import NUMBER
|
| - >>> HashKey('username')
|
| - >>> HashKey('date_joined', data_type=NUMBER)
|
| -
|
| - """
|
| - attr_type = 'HASH'
|
| -
|
| -
|
| -class RangeKey(BaseSchemaField):
|
| - """
|
| - An field representing a range key.
|
| -
|
| - Example::
|
| -
|
| - >>> from boto.dynamodb2.types import NUMBER
|
| - >>> HashKey('username')
|
| - >>> HashKey('date_joined', data_type=NUMBER)
|
| -
|
| - """
|
| - attr_type = 'RANGE'
|
| -
|
| -
|
| -class BaseIndexField(object):
|
| - """
|
| - An abstract class for defining schema indexes.
|
| -
|
| - Contains most of the core functionality for the index. Subclasses must
|
| - define a ``projection_type`` to pass to DynamoDB.
|
| - """
|
| - def __init__(self, name, parts):
|
| - self.name = name
|
| - self.parts = parts
|
| -
|
| - def definition(self):
|
| - """
|
| - Returns the attribute definition structure DynamoDB expects.
|
| -
|
| - Example::
|
| -
|
| - >>> index.definition()
|
| - {
|
| - 'AttributeName': 'username',
|
| - 'AttributeType': 'S',
|
| - }
|
| -
|
| - """
|
| - definition = []
|
| -
|
| - for part in self.parts:
|
| - definition.append({
|
| - 'AttributeName': part.name,
|
| - 'AttributeType': part.data_type,
|
| - })
|
| -
|
| - return definition
|
| -
|
| - def schema(self):
|
| - """
|
| - Returns the schema structure DynamoDB expects.
|
| -
|
| - Example::
|
| -
|
| - >>> index.schema()
|
| - {
|
| - 'IndexName': 'LastNameIndex',
|
| - 'KeySchema': [
|
| - {
|
| - 'AttributeName': 'username',
|
| - 'KeyType': 'HASH',
|
| - },
|
| - ],
|
| - 'Projection': {
|
| - 'ProjectionType': 'KEYS_ONLY',
|
| - }
|
| - }
|
| -
|
| - """
|
| - key_schema = []
|
| -
|
| - for part in self.parts:
|
| - key_schema.append(part.schema())
|
| -
|
| - return {
|
| - 'IndexName': self.name,
|
| - 'KeySchema': key_schema,
|
| - 'Projection': {
|
| - 'ProjectionType': self.projection_type,
|
| - }
|
| - }
|
| -
|
| -
|
| -class AllIndex(BaseIndexField):
|
| - """
|
| - An index signifying all fields should be in the index.
|
| -
|
| - Example::
|
| -
|
| - >>> AllIndex('MostRecentlyJoined', parts=[
|
| - ... HashKey('username'),
|
| - ... RangeKey('date_joined')
|
| - ... ])
|
| -
|
| - """
|
| - projection_type = 'ALL'
|
| -
|
| -
|
| -class KeysOnlyIndex(BaseIndexField):
|
| - """
|
| - An index signifying only key fields should be in the index.
|
| -
|
| - Example::
|
| -
|
| - >>> KeysOnlyIndex('MostRecentlyJoined', parts=[
|
| - ... HashKey('username'),
|
| - ... RangeKey('date_joined')
|
| - ... ])
|
| -
|
| - """
|
| - projection_type = 'KEYS_ONLY'
|
| -
|
| -
|
| -class IncludeIndex(BaseIndexField):
|
| - """
|
| - An index signifying only certain fields should be in the index.
|
| -
|
| - Example::
|
| -
|
| - >>> IncludeIndex('GenderIndex', parts=[
|
| - ... HashKey('username'),
|
| - ... RangeKey('date_joined')
|
| - ... ], includes=['gender'])
|
| -
|
| - """
|
| - projection_type = 'INCLUDE'
|
| -
|
| - def __init__(self, *args, **kwargs):
|
| - self.includes_fields = kwargs.pop('includes', [])
|
| - super(IncludeIndex, self).__init__(*args, **kwargs)
|
| -
|
| - def schema(self):
|
| - schema_data = super(IncludeIndex, self).schema()
|
| - schema_data['Projection']['NonKeyAttributes'] = self.includes_fields
|
| - return schema_data
|
| -
|
| -
|
| -class GlobalBaseIndexField(BaseIndexField):
|
| - """
|
| - An abstract class for defining global indexes.
|
| -
|
| - Contains most of the core functionality for the index. Subclasses must
|
| - define a ``projection_type`` to pass to DynamoDB.
|
| - """
|
| - throughput = {
|
| - 'read': 5,
|
| - 'write': 5,
|
| - }
|
| -
|
| - def __init__(self, *args, **kwargs):
|
| - throughput = kwargs.pop('throughput', None)
|
| -
|
| - if throughput is not None:
|
| - self.throughput = throughput
|
| -
|
| - super(GlobalBaseIndexField, self).__init__(*args, **kwargs)
|
| -
|
| - def schema(self):
|
| - """
|
| - Returns the schema structure DynamoDB expects.
|
| -
|
| - Example::
|
| -
|
| - >>> index.schema()
|
| - {
|
| - 'IndexName': 'LastNameIndex',
|
| - 'KeySchema': [
|
| - {
|
| - 'AttributeName': 'username',
|
| - 'KeyType': 'HASH',
|
| - },
|
| - ],
|
| - 'Projection': {
|
| - 'ProjectionType': 'KEYS_ONLY',
|
| - },
|
| - 'ProvisionedThroughput': {
|
| - 'ReadCapacityUnits': 5,
|
| - 'WriteCapacityUnits': 5
|
| - }
|
| - }
|
| -
|
| - """
|
| - schema_data = super(GlobalBaseIndexField, self).schema()
|
| - schema_data['ProvisionedThroughput'] = {
|
| - 'ReadCapacityUnits': int(self.throughput['read']),
|
| - 'WriteCapacityUnits': int(self.throughput['write']),
|
| - }
|
| - return schema_data
|
| -
|
| -
|
| -class GlobalAllIndex(GlobalBaseIndexField):
|
| - """
|
| - An index signifying all fields should be in the index.
|
| -
|
| - Example::
|
| -
|
| - >>> GlobalAllIndex('MostRecentlyJoined', parts=[
|
| - ... HashKey('username'),
|
| - ... RangeKey('date_joined')
|
| - ... ],
|
| - ... throughput={
|
| - ... 'read': 2,
|
| - ... 'write': 1,
|
| - ... })
|
| -
|
| - """
|
| - projection_type = 'ALL'
|
| -
|
| -
|
| -class GlobalKeysOnlyIndex(GlobalBaseIndexField):
|
| - """
|
| - An index signifying only key fields should be in the index.
|
| -
|
| - Example::
|
| -
|
| - >>> GlobalKeysOnlyIndex('MostRecentlyJoined', parts=[
|
| - ... HashKey('username'),
|
| - ... RangeKey('date_joined')
|
| - ... ],
|
| - ... throughput={
|
| - ... 'read': 2,
|
| - ... 'write': 1,
|
| - ... })
|
| -
|
| - """
|
| - projection_type = 'KEYS_ONLY'
|
| -
|
| -
|
| -class GlobalIncludeIndex(GlobalBaseIndexField, IncludeIndex):
|
| - """
|
| - An index signifying only certain fields should be in the index.
|
| -
|
| - Example::
|
| -
|
| - >>> GlobalIncludeIndex('GenderIndex', parts=[
|
| - ... HashKey('username'),
|
| - ... RangeKey('date_joined')
|
| - ... ],
|
| - ... includes=['gender'],
|
| - ... throughput={
|
| - ... 'read': 2,
|
| - ... 'write': 1,
|
| - ... })
|
| -
|
| - """
|
| - projection_type = 'INCLUDE'
|
| -
|
| - def __init__(self, *args, **kwargs):
|
| - throughput = kwargs.pop('throughput', None)
|
| - IncludeIndex.__init__(self, *args, **kwargs)
|
| - if throughput:
|
| - kwargs['throughput'] = throughput
|
| - GlobalBaseIndexField.__init__(self, *args, **kwargs)
|
| -
|
| - def schema(self):
|
| - # Pick up the includes.
|
| - schema_data = IncludeIndex.schema(self)
|
| - # Also the throughput.
|
| - schema_data.update(GlobalBaseIndexField.schema(self))
|
| - return schema_data
|
|
|