Esempio n. 1
0
def _unwrap_query_scan(result):
    response = {
        'Count': result.get('Count', 0),
        'Items': [utils.unmarshall(i) for i in result.get('Items', [])],
        'ScannedCount': result.get('ScannedCount', 0)
    }
    if 'LastEvaluatedKey' in result:
        response['LastEvaluatedKey'] = \
            utils.unmarshall(result['LastEvaluatedKey'])
    if 'ConsumedCapacity' in result:
        response['ConsumedCapacity'] = result['ConsumedCapacity']
    return response
Esempio n. 2
0
def _unwrap_delete_put_update_item(result):
    response = {
       'Attributes': utils.unmarshall(result['Attributes'] if result else {})
    }
    if 'ConsumedCapacity' in result:
        response['ConsumedCapacity'] = result['ConsumedCapacity']
    if 'ItemCollectionMetrics' in result:
        response['ItemCollectionMetrics'] = {
            'ItemCollectionKey': utils.unmarshall(
                result['ItemCollectionMetrics'].get('ItemCollectionKey', {})),
            'SizeEstimateRangeGB':
                result['ItemCollectionMetrics'].get('SizeEstimateRangeGB',
                                                    [None]).pop()
        }
    return response
Esempio n. 3
0
def _unwrap_get_item(result):
    response = {
       'Item': utils.unmarshall(result['Item'] if result else {})
    }
    if 'ConsumedCapacity' in result:
        response['ConsumedCapacity'] = result['ConsumedCapacity']
    return response
Esempio n. 4
0
 def test_complex_document(self):
     uuid_value = str(uuid.uuid4())
     dt_value = datetime.datetime.utcnow()
     value = {
         'key1': {
             'S': 'str'
         },
         'key2': {
             'N': '10'
         },
         'key3': {
             'M': {
                 'sub-key1': {
                     'N': '20'
                 },
                 'sub-key2': {
                     'BOOL': True
                 },
                 'sub-key3': {
                     'S': 'value'
                 }
             }
         },
         'key4': {
             'NULL': True
         },
         'key5': {
             'L': [{
                 'S': 'one'
             }, {
                 'S': 'two'
             }, {
                 'S': 'three'
             }, {
                 'N': '4'
             }, {
                 'NULL': True
             }, {
                 'BOOL': True
             }]
         },
         'key6': {
             'SS': ['a', 'b', 'c']
         },
         'key7': {
             'NS': ['1', '2', '3', '4']
         },
         'key8': {
             'S': dt_value.isoformat()
         },
         'key9': {
             'S': uuid_value
         },
         'key10': {
             'B': base64.b64encode(b'\0x01\0x02\0x03').decode('ascii')
         },
         'key11': {
             'BS': [
                 base64.b64encode(b'\0x01\0x02\0x03').decode('ascii'),
                 base64.b64encode(b'\0x04\0x05\0x06').decode('ascii')
             ]
         }
     }
     expectation = {
         'key1': 'str',
         'key2': 10,
         'key3': {
             'sub-key1': 20,
             'sub-key2': True,
             'sub-key3': 'value'
         },
         'key4': None,
         'key5': ['one', 'two', 'three', 4, None, True],
         'key6': {'a', 'b', 'c'},
         'key7': {1, 2, 3, 4},
         'key8': dt_value.isoformat(),
         'key9': uuid_value,
         'key10': b'\0x01\0x02\0x03',
         'key11': {b'\0x01\0x02\0x03', b'\0x04\0x05\0x06'}
     }
     self.assertDictEqual(expectation, utils.unmarshall(value))