diff env/lib/python3.7/site-packages/boto/sdb/item.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/sdb/item.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-# Copyright (c) 2006,2007 Mitch Garnaat http://garnaat.org/
-#
-# 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.
-
-import base64
-
-class Item(dict):
-    """
-    A ``dict`` sub-class that serves as an object representation of a
-    SimpleDB item. An item in SDB is similar to a row in a relational
-    database. Items belong to a :py:class:`Domain <boto.sdb.domain.Domain>`,
-    which is similar to a table in a relational database.
-
-    The keys on instances of this object correspond to attributes that are
-    stored on the SDB item.
-
-    .. tip:: While it is possible to instantiate this class directly, you may
-        want to use the convenience methods on :py:class:`boto.sdb.domain.Domain`
-        for that purpose. For example, :py:meth:`boto.sdb.domain.Domain.get_item`.
-    """
-    def __init__(self, domain, name='', active=False):
-        """
-        :type domain: :py:class:`boto.sdb.domain.Domain`
-        :param domain: The domain that this item belongs to.
-
-        :param str name: The name of this item. This name will be used when
-            querying for items using methods like
-            :py:meth:`boto.sdb.domain.Domain.get_item`
-        """
-        dict.__init__(self)
-        self.domain = domain
-        self.name = name
-        self.active = active
-        self.request_id = None
-        self.encoding = None
-        self.in_attribute = False
-        self.converter = self.domain.connection.converter
-
-    def startElement(self, name, attrs, connection):
-        if name == 'Attribute':
-            self.in_attribute = True
-        self.encoding = attrs.get('encoding', None)
-        return None
-
-    def decode_value(self, value):
-        if self.encoding == 'base64':
-            self.encoding = None
-            return base64.decodestring(value)
-        else:
-            return value
-
-    def endElement(self, name, value, connection):
-        if name == 'ItemName':
-            self.name = self.decode_value(value)
-        elif name == 'Name':
-            if self.in_attribute:
-                self.last_key = self.decode_value(value)
-            else:
-                self.name = self.decode_value(value)
-        elif name == 'Value':
-            if self.last_key in self:
-                if not isinstance(self[self.last_key], list):
-                    self[self.last_key] = [self[self.last_key]]
-                value = self.decode_value(value)
-                if self.converter:
-                    value = self.converter.decode(value)
-                self[self.last_key].append(value)
-            else:
-                value = self.decode_value(value)
-                if self.converter:
-                    value = self.converter.decode(value)
-                self[self.last_key] = value
-        elif name == 'BoxUsage':
-            try:
-                connection.box_usage += float(value)
-            except:
-                pass
-        elif name == 'RequestId':
-            self.request_id = value
-        elif name == 'Attribute':
-            self.in_attribute = False
-        else:
-            setattr(self, name, value)
-
-    def load(self):
-        """
-        Loads or re-loads this item's attributes from SDB.
-
-        .. warning::
-            If you have changed attribute values on an Item instance,
-            this method will over-write the values if they are different in
-            SDB. For any local attributes that don't yet exist in SDB,
-            they will be safe.
-        """
-        self.domain.get_attributes(self.name, item=self)
-
-    def save(self, replace=True):
-        """
-        Saves this item to SDB.
-
-        :param bool replace: If ``True``, delete any attributes on the remote
-            SDB item that have a ``None`` value on this object.
-        """
-        self.domain.put_attributes(self.name, self, replace)
-        # Delete any attributes set to "None"
-        if replace:
-            del_attrs = []
-            for name in self:
-                if self[name] is None:
-                    del_attrs.append(name)
-            if len(del_attrs) > 0:
-                self.domain.delete_attributes(self.name, del_attrs)
-
-    def add_value(self, key, value):
-        """
-        Helps set or add to attributes on this item. If you are adding a new
-        attribute that has yet to be set, it will simply create an attribute
-        named ``key`` with your given ``value`` as its value. If you are
-        adding a value to an existing attribute, this method will convert the
-        attribute to a list (if it isn't already) and append your new value
-        to said list.
-
-        For clarification, consider the following interactive session:
-
-        .. code-block:: python
-
-            >>> item = some_domain.get_item('some_item')
-            >>> item.has_key('some_attr')
-            False
-            >>> item.add_value('some_attr', 1)
-            >>> item['some_attr']
-            1
-            >>> item.add_value('some_attr', 2)
-            >>> item['some_attr']
-            [1, 2]
-
-        :param str key: The attribute to add a value to.
-        :param object value: The value to set or append to the attribute.
-        """
-        if key in self:
-            # We already have this key on the item.
-            if not isinstance(self[key], list):
-                # The key isn't already a list, take its current value and
-                # convert it to a list with the only member being the
-                # current value.
-                self[key] = [self[key]]
-            # Add the new value to the list.
-            self[key].append(value)
-        else:
-            # This is a new attribute, just set it.
-            self[key] = value
-
-    def delete(self):
-        """
-        Deletes this item in SDB.
-
-        .. note:: This local Python object remains in its current state
-            after deletion, this only deletes the remote item in SDB.
-        """
-        self.domain.delete_item(self)