Ejemplo n.º 1
0
    def deserialize(self, value, flags):
        """
        Deserialized values based on flags or just return it if it is not serialized.

        :param value: Serialized or not value.
        :type value: six.string_type, int
        :param flags: Value flags
        :type flags: int
        :return: Deserialized value
        :rtype: six.string_type|int
        """
        to_str = lambda v: v.decode('utf8') if six.PY3 else v

        if flags & self.FLAGS['compressed']:  # pragma: no branch
            value = self.compression.decompress(value)

        if flags & self.FLAGS['integer']:
            return int(to_str(value))
        elif flags & self.FLAGS['long']:
            return long(to_str(value))
        elif flags & self.FLAGS['pickle']:
            buf = BytesIO(value)

            unpickler = self.unpickler(buf)
            return unpickler.load()

        return to_str(value)
Ejemplo n.º 2
0
    def deserialize(self, value, flags):
        """
        Deserialized values based on flags or just return it if it is not serialized.

        :param value: Serialized or not value.
        :type value: six.string_types, int
        :param flags: Value flags
        :type flags: int
        :return: Deserialized value
        :rtype: six.string_types|int
        """
        FLAGS = self.FLAGS

        if flags & FLAGS['compressed']:  # pragma: no branch
            value = self.compression.decompress(value)

        if flags & FLAGS['binary']:
            return value

        if flags & FLAGS['integer']:
            return int(value)
        elif flags & FLAGS['long']:
            return long(value)
        elif flags & FLAGS['object']:
            buf = BytesIO(value)
            unpickler = self.unpickler(buf)
            return unpickler.load()

        if six.PY3:
            return value.decode('utf8')

        # In Python 2, mimic the behavior of the json library: return a str
        # unless the value contains unicode characters.
        # in Python 2, if value is a binary (e.g struct.pack("<Q") then decode will fail
        try:
            value.decode('ascii')
        except UnicodeDecodeError:
            try:
                return value.decode('utf8')
            except UnicodeDecodeError:
                return value
        else:
            return value
Ejemplo n.º 3
0
    def deserialize(self, value, flags):
        """
        Deserialized values based on flags or just return it if it is not serialized.

        :param value: Serialized or not value.
        :type value: six.string_types, int
        :param flags: Value flags
        :type flags: int
        :return: Deserialized value
        :rtype: six.string_types|int
        """
        FLAGS = self.FLAGS

        if flags & FLAGS['compressed']:  # pragma: no branch
            value = self.compression.decompress(value)

        if flags & FLAGS['binary']:
            return value

        if flags & FLAGS['integer']:
            return int(value)
        elif flags & FLAGS['long']:
            return long(value)
        elif flags & FLAGS['object']:
            loads = self.loads
            if loads is None:
                loads = self.json_loads
            return loads(value)

        if six.PY3:
            return value.decode('utf8')

        # In Python 2, mimic the behavior of the json library: return a str
        # unless the value contains unicode characters.
        try:
            value.decode('ascii')
        except UnicodeDecodeError:
            return value.decode('utf8')
        else:
            return value
Ejemplo n.º 4
0
 def testGetLong(self):
     test_key = self.bkey()
     self.client.set(test_key, long(1))
     value = self.client.get(test_key)
     self.assertEqual(long(1), value)
     self.assertTrue(isinstance(value, long))
Ejemplo n.º 5
0
 def testGetLong(self):
     self.client.set('test_key', long(1))
     value = self.client.get('test_key')
     self.assertEqual(long(1), value)
     self.assertTrue(isinstance(value, long))
 def testGetLong(self):
     self.client.set('test_key', long(1))
     value = self.client.get('test_key')
     self.assertEqual(long(1), value)
     self.assertTrue(isinstance(value, long))
 def testGetLong(self):
     test_key = self.bkey()
     self.client.set(test_key, long(1))
     value = self.client.get(test_key)
     self.assertEqual(long(1), value)
     self.assertTrue(isinstance(value, long))