code: def decode(self, dynamo_value):
          
          type, value = next(six.iteritems(dynamo_value))
          if type == STRING:
              return value
          elif type == BINARY:
              return Binary(value)
          elif type == NUMBER:
              return Decimal(value)
          elif type == STRING_SET:
              return set(value)
          elif type == BINARY_SET:
              return set((Binary(v) for v in value))
          elif type == NUMBER_SET:
              return set((Decimal(v) for v in value))
          elif type == BOOL:
              return value
          elif type == LIST:
              return [self.decode(v) for v in value]
          elif type == MAP:
              decoded_dict = {}
              for k, v in six.iteritems(value):
                  decoded_dict[k] = self.decode(v)
              return decoded_dict
          elif type == NULL:
              return None
          else:
              raise TypeError("Received unrecognized type %r from dynamo", type)
docs: Decode a dynamo value into a python value