當前位置: 首頁>>代碼示例>>Python>>正文


Python pickletools.genops方法代碼示例

本文整理匯總了Python中pickletools.genops方法的典型用法代碼示例。如果您正苦於以下問題:Python pickletools.genops方法的具體用法?Python pickletools.genops怎麽用?Python pickletools.genops使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在pickletools的用法示例。


在下文中一共展示了pickletools.genops方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: count_opcode

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def count_opcode(code, pickle):
    n = 0
    for op, dummy, dummy in pickletools.genops(pickle):
        if op.code == code:
            n += 1
    return n

# We can't very well test the extension registry without putting known stuff
# in it, but we have to be careful to restore its original state.  Code
# should do this:
#
#     e = ExtensionSaver(extension_code)
#     try:
#         fiddle w/ the extension registry's stuff for extension_code
#     finally:
#         e.restore() 
開發者ID:dxwu,項目名稱:BinderFilter,代碼行數:18,代碼來源:pickletester.py

示例2: check_frame_opcodes

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def check_frame_opcodes(self, pickled):
        """
        Check the arguments of FRAME opcodes in a protocol 4+ pickle.
        """
        frame_opcode_size = 9
        last_arg = last_pos = None
        for op, arg, pos in pickletools.genops(pickled):
            if op.name != 'FRAME':
                continue
            if last_pos is not None:
                # The previous frame's size should be equal to the number
                # of bytes up to the current frame.
                frame_size = pos - last_pos - frame_opcode_size
                self.assertEqual(frame_size, last_arg)
            last_arg, last_pos = arg, pos
        # The last frame's size should be equal to the number of bytes up
        # to the pickle's end.
        frame_size = len(pickled) - last_pos - frame_opcode_size
        self.assertEqual(frame_size, last_arg) 
開發者ID:Microvellum,項目名稱:Fluid-Designer,代碼行數:21,代碼來源:pickletester.py

示例3: opcode_in_pickle

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def opcode_in_pickle(code, pickle):
    for op, dummy, dummy in pickletools.genops(pickle):
        if op.code == code:
            return True
    return False

# Return the number of times opcode code appears in pickle. 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:9,代碼來源:pickletester.py

示例4: count_opcode

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def count_opcode(code, pickle):
    n = 0
    for op, dummy, dummy in pickletools.genops(pickle):
        if op.code == code:
            n += 1
    return n 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:8,代碼來源:pickletester.py

示例5: opcode_in_pickle

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def opcode_in_pickle(code, pickle):
    for op, dummy, dummy in pickletools.genops(pickle):
        if op.code == code.decode("latin-1"):
            return True
    return False

# Return the number of times opcode code appears in pickle. 
開發者ID:Microvellum,項目名稱:Fluid-Designer,代碼行數:9,代碼來源:pickletester.py

示例6: count_opcode

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def count_opcode(code, pickle):
    n = 0
    for op, dummy, dummy in pickletools.genops(pickle):
        if op.code == code.decode("latin-1"):
            n += 1
    return n 
開發者ID:Microvellum,項目名稱:Fluid-Designer,代碼行數:8,代碼來源:pickletester.py

示例7: test_optional_frames

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def test_optional_frames(self):
        if pickle.HIGHEST_PROTOCOL < 4:
            return

        def remove_frames(pickled, keep_frame=None):
            """Remove frame opcodes from the given pickle."""
            frame_starts = []
            # 1 byte for the opcode and 8 for the argument
            frame_opcode_size = 9
            for opcode, _, pos in pickletools.genops(pickled):
                if opcode.name == 'FRAME':
                    frame_starts.append(pos)

            newpickle = bytearray()
            last_frame_end = 0
            for i, pos in enumerate(frame_starts):
                if keep_frame and keep_frame(i):
                    continue
                newpickle += pickled[last_frame_end:pos]
                last_frame_end = pos + frame_opcode_size
            newpickle += pickled[last_frame_end:]
            return newpickle

        frame_size = self.FRAME_SIZE_TARGET
        num_frames = 20
        obj = [bytes([i]) * frame_size for i in range(num_frames)]

        for proto in range(4, pickle.HIGHEST_PROTOCOL + 1):
            pickled = self.dumps(obj, proto)

            frameless_pickle = remove_frames(pickled)
            self.assertEqual(count_opcode(pickle.FRAME, frameless_pickle), 0)
            self.assertEqual(obj, self.loads(frameless_pickle))

            some_frames_pickle = remove_frames(pickled, lambda i: i % 2)
            self.assertLess(count_opcode(pickle.FRAME, some_frames_pickle),
                            count_opcode(pickle.FRAME, pickled))
            self.assertEqual(obj, self.loads(some_frames_pickle)) 
開發者ID:Microvellum,項目名稱:Fluid-Designer,代碼行數:40,代碼來源:pickletester.py

示例8: set_pickle

# 需要導入模塊: import pickletools [as 別名]
# 或者: from pickletools import genops [as 別名]
def set_pickle(self, pickle):
        self.pickle = pickle
        self.ops = pickletools.genops(BytesIO(pickle)) 
開發者ID:newtdb,項目名稱:db,代碼行數:5,代碼來源:jsonpickle.py


注:本文中的pickletools.genops方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。