Returns the item corresponding to ``id``.  If the ``decrypt`` param is
        not False (the default) any encrypted attributes in the item will be
        decrypted before the item is returned.  If not, the encrypted
        attributes will contain the encrypted value.

def get(self, id, decrypt=False, id_name='id', **kwargs):
        """
        Returns the item corresponding to ``id``.  If the ``decrypt`` param is
        not False (the default) any encrypted attributes in the item will be
        decrypted before the item is returned.  If not, the encrypted
        attributes will contain the encrypted value.

        """
        response = self._new_response()
        if self._check_supported_op('get', response):
            if id is None:
                response.status = 'error'
                response.error_type = 'IDRequired'
                response.error_message = 'Get requires an id'
            else:
                params = {'Key': {id_name: id},
                          'ConsistentRead': True}
                self._call_ddb_method(self.table.get_item,
                                      params, response)
                if response.status == 'success':
                    if 'Item' in response.raw_response:
                        item = response.raw_response['Item']
                        if decrypt:
                            self._decrypt(item)
                        response.data = self._replace_decimals(item)
                    else:
                        response.status = 'error'
                        response.error_type = 'NotFound'
                        msg = 'item ({}) not found'.format(id)
                        response.error_message = msg
        response.prepare()
        return response