diff env/lib/python3.7/site-packages/boto/dynamodb/batch.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/boto/dynamodb/batch.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,261 +0,0 @@
-# Copyright (c) 2012 Mitch Garnaat http://garnaat.org/
-# Copyright (c) 2012 Amazon.com, Inc. or its affiliates.  All Rights Reserved
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish, dis-
-# tribute, sublicense, and/or sell copies of the Software, and to permit
-# persons to whom the Software is furnished to do so, subject to the fol-
-# lowing conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
-# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-#
-from boto.compat import six
-
-
-class Batch(object):
-    """
-    Used to construct a BatchGet request.
-
-    :ivar table: The Table object from which the item is retrieved.
-
-    :ivar keys: A list of scalar or tuple values.  Each element in the
-        list represents one Item to retrieve.  If the schema for the
-        table has both a HashKey and a RangeKey, each element in the
-        list should be a tuple consisting of (hash_key, range_key).  If
-        the schema for the table contains only a HashKey, each element
-        in the list should be a scalar value of the appropriate type
-        for the table schema. NOTE: The maximum number of items that
-        can be retrieved for a single operation is 100. Also, the
-        number of items retrieved is constrained by a 1 MB size limit.
-
-    :ivar attributes_to_get: A list of attribute names.
-        If supplied, only the specified attribute names will
-        be returned.  Otherwise, all attributes will be returned.
-
-    :ivar consistent_read: Specify whether or not to use a
-        consistent read. Defaults to False.
-
-    """
-
-    def __init__(self, table, keys, attributes_to_get=None,
-                 consistent_read=False):
-        self.table = table
-        self.keys = keys
-        self.attributes_to_get = attributes_to_get
-        self.consistent_read = consistent_read
-
-    def to_dict(self):
-        """
-        Convert the Batch object into the format required for Layer1.
-        """
-        batch_dict = {}
-        key_list = []
-        for key in self.keys:
-            if isinstance(key, tuple):
-                hash_key, range_key = key
-            else:
-                hash_key = key
-                range_key = None
-            k = self.table.layer2.build_key_from_values(self.table.schema,
-                                                        hash_key, range_key)
-            key_list.append(k)
-        batch_dict['Keys'] = key_list
-        if self.attributes_to_get:
-            batch_dict['AttributesToGet'] = self.attributes_to_get
-        if self.consistent_read:
-            batch_dict['ConsistentRead'] = True
-        else:
-            batch_dict['ConsistentRead'] = False
-        return batch_dict
-
-
-class BatchWrite(object):
-    """
-    Used to construct a BatchWrite request.  Each BatchWrite object
-    represents a collection of PutItem and DeleteItem requests for
-    a single Table.
-
-    :ivar table: The Table object from which the item is retrieved.
-
-    :ivar puts: A list of :class:`boto.dynamodb.item.Item` objects
-        that you want to write to DynamoDB.
-
-    :ivar deletes: A list of scalar or tuple values.  Each element in the
-        list represents one Item to delete.  If the schema for the
-        table has both a HashKey and a RangeKey, each element in the
-        list should be a tuple consisting of (hash_key, range_key).  If
-        the schema for the table contains only a HashKey, each element
-        in the list should be a scalar value of the appropriate type
-        for the table schema.
-    """
-
-    def __init__(self, table, puts=None, deletes=None):
-        self.table = table
-        self.puts = puts or []
-        self.deletes = deletes or []
-
-    def to_dict(self):
-        """
-        Convert the Batch object into the format required for Layer1.
-        """
-        op_list = []
-        for item in self.puts:
-            d = {'Item': self.table.layer2.dynamize_item(item)}
-            d = {'PutRequest': d}
-            op_list.append(d)
-        for key in self.deletes:
-            if isinstance(key, tuple):
-                hash_key, range_key = key
-            else:
-                hash_key = key
-                range_key = None
-            k = self.table.layer2.build_key_from_values(self.table.schema,
-                                                        hash_key, range_key)
-            d = {'Key': k}
-            op_list.append({'DeleteRequest': d})
-        return (self.table.name, op_list)
-
-
-class BatchList(list):
-    """
-    A subclass of a list object that contains a collection of
-    :class:`boto.dynamodb.batch.Batch` objects.
-    """
-
-    def __init__(self, layer2):
-        list.__init__(self)
-        self.unprocessed = None
-        self.layer2 = layer2
-
-    def add_batch(self, table, keys, attributes_to_get=None,
-                  consistent_read=False):
-        """
-        Add a Batch to this BatchList.
-
-        :type table: :class:`boto.dynamodb.table.Table`
-        :param table: The Table object in which the items are contained.
-
-        :type keys: list
-        :param keys: A list of scalar or tuple values.  Each element in the
-            list represents one Item to retrieve.  If the schema for the
-            table has both a HashKey and a RangeKey, each element in the
-            list should be a tuple consisting of (hash_key, range_key).  If
-            the schema for the table contains only a HashKey, each element
-            in the list should be a scalar value of the appropriate type
-            for the table schema. NOTE: The maximum number of items that
-            can be retrieved for a single operation is 100. Also, the
-            number of items retrieved is constrained by a 1 MB size limit.
-
-        :type attributes_to_get: list
-        :param attributes_to_get: A list of attribute names.
-            If supplied, only the specified attribute names will
-            be returned.  Otherwise, all attributes will be returned.
-        """
-        self.append(Batch(table, keys, attributes_to_get, consistent_read))
-
-    def resubmit(self):
-        """
-        Resubmit the batch to get the next result set. The request object is
-        rebuild from scratch meaning that all batch added between ``submit``
-        and ``resubmit`` will be lost.
-
-        Note: This method is experimental and subject to changes in future releases
-        """
-        del self[:]
-
-        if not self.unprocessed:
-            return None
-
-        for table_name, table_req in six.iteritems(self.unprocessed):
-            table_keys = table_req['Keys']
-            table = self.layer2.get_table(table_name)
-
-            keys = []
-            for key in table_keys:
-                h = key['HashKeyElement']
-                r = None
-                if 'RangeKeyElement' in key:
-                    r = key['RangeKeyElement']
-                keys.append((h, r))
-
-            attributes_to_get = None
-            if 'AttributesToGet' in table_req:
-                attributes_to_get = table_req['AttributesToGet']
-
-            self.add_batch(table, keys, attributes_to_get=attributes_to_get)
-
-        return self.submit()
-
-    def submit(self):
-        res = self.layer2.batch_get_item(self)
-        if 'UnprocessedKeys' in res:
-            self.unprocessed = res['UnprocessedKeys']
-        return res
-
-    def to_dict(self):
-        """
-        Convert a BatchList object into format required for Layer1.
-        """
-        d = {}
-        for batch in self:
-            b = batch.to_dict()
-            if b['Keys']:
-                d[batch.table.name] = b
-        return d
-
-
-class BatchWriteList(list):
-    """
-    A subclass of a list object that contains a collection of
-    :class:`boto.dynamodb.batch.BatchWrite` objects.
-    """
-
-    def __init__(self, layer2):
-        list.__init__(self)
-        self.layer2 = layer2
-
-    def add_batch(self, table, puts=None, deletes=None):
-        """
-        Add a BatchWrite to this BatchWriteList.
-
-        :type table: :class:`boto.dynamodb.table.Table`
-        :param table: The Table object in which the items are contained.
-
-        :type puts: list of :class:`boto.dynamodb.item.Item` objects
-        :param puts: A list of items that you want to write to DynamoDB.
-
-        :type deletes: A list
-        :param deletes: A list of scalar or tuple values.  Each element
-            in the list represents one Item to delete.  If the schema
-            for the table has both a HashKey and a RangeKey, each
-            element in the list should be a tuple consisting of
-            (hash_key, range_key).  If the schema for the table
-            contains only a HashKey, each element in the list should
-            be a scalar value of the appropriate type for the table
-            schema.
-        """
-        self.append(BatchWrite(table, puts, deletes))
-
-    def submit(self):
-        return self.layer2.batch_write_item(self)
-
-    def to_dict(self):
-        """
-        Convert a BatchWriteList object into format required for Layer1.
-        """
-        d = {}
-        for batch in self:
-            table_name, batch_dict = batch.to_dict()
-            d[table_name] = batch_dict
-        return d