Commit fbb2a3d9 authored by Kirill Smelkov's avatar Kirill Smelkov

zodbdump: Fix pickle disassembly if state part of zpickle refers to class part

I've tried to run `zodb dump --pretty=zpickledis` on wendelin.core test
data in WCFS(*) and hit the following failure:

    (z-dev) kirr@deca:~/src/wendelin/wendelin.core/wcfs/internal/zdata/testdata$ zodb dump --pretty=zpickledis zblk.fs
    ...
    obj 0000000000000005 685 sha1:865171b709f575b355afd2cc9e1f32b9781c6510
    Traceback (most recent call last):
      File "/home/kirr/src/wendelin/venv/z-dev/bin/zodb", line 11, in <module>
        load_entry_point('zodbtools', 'console_scripts', 'zodb')()
      File "/home/kirr/src/wendelin/z/zodbtools/zodbtools/zodb.py", line 129, in main
        return command_module.main(argv)
      File "<decorator-gen-3>", line 2, in main
      File "/home/kirr/src/wendelin/venv/z-dev/lib/python2.7/site-packages/golang/__init__.py", line 103, in _
        return f(*argv, **kw)
      File "/home/kirr/src/wendelin/z/zodbtools/zodbtools/zodbdump.py", line 341, in main
        zodbdump(stor, tidmin, tidmax, hashonly, pretty)
      File "/home/kirr/src/wendelin/z/zodbtools/zodbtools/zodbdump.py", line 167, in zodbdump
        pickletools.dis(dataf, disf) # state
      File "/usr/lib/python2.7/pickletools.py", line 2005, in dis
        raise ValueError(errormsg)
    ValueError: memo key 1 has never been stored into

The problem turned out to be due to that state part of zpickle is
referring to another object with the same class as already saved
in class part of zpickle, so that class was being referred to via GET
matching corresponding PUT done in the class part, but our zpickledis
handler did not shared the memo in between those two parts and so the
GET became unmatched.

In more details the problem is illustrated by the following zpickle that
corresponds to Object.value referring to the same Object. The first part
of zpickle contains class part and refers to __main__.Object global
with putting it into memo[1]. The second part of zpickle contains state
part and refers to that object by `(Object, 7) PERSID` where Object is
retrieved via memo[1] GET:

    obj 0000000000000007 41 sha1:7108c96ccb9cbeaab1164d533174c300e51309f9
          0: \x80 PROTO      2
          2: c    GLOBAL     '__main__ Object'
         19: q    BINPUT     1                   <-- NOTE
         21: .    STOP
      highest protocol among opcodes = 2
         22: \x80 PROTO      2
         24: U    SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
         34: q    BINPUT     2
         36: h    BINGET     1                   <-- NOTE
         38: \x86 TUPLE2
         39: Q    BINPERSID
         40: .    STOP
      highest protocol among opcodes = 2

To handle such zpickles well we need to share the memo when dumping
class and state disassemblies similarly to how ZODB does in its
ObjectWriter._dump:

https://github.com/zopefoundation/ZODB/blob/5.8.1-0-g72cebe6bc/src/ZODB/serialize.py#L436-L443

Pickletools.dis has explicit support for using shared memo - originally
added in https://github.com/python/cpython/commit/62235e701e37 and
likely motivated by ZODB use-case.

(*) https://lab.nexedi.com/nexedi/wendelin.core/-/blob/07087ec8/wcfs/internal/zdata/testdata/zblk.fs
    generated by nexedi/wendelin.core@2c152d41

/reviewed-by @jerome
/reviewed-on nexedi/zodbtools!28
parent 513c296c
Pipeline #35578 failed with stage
in 0 seconds
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (C) 2017-2023 Nexedi SA and Contributors.
# Copyright (C) 2017-2024 Nexedi SA and Contributors.
# Kirill Smelkov <kirr@nexedi.com>
#
# This program is free software: you can Use, Study, Modify and Redistribute
......@@ -230,6 +230,14 @@ def _gen_testdb(outfs_path, zext):
break
# create a cyclic object -> object reference
# pretty=zpickledis used not to handle this well because in ZODB pickle the reference
# referes to referred type by GET that is prepared by PUT in class part of the pickle.
name = random.choice(list(root.keys()))
obj = root[name]
obj.value = obj
commit(u"user", u"cyclic reference", ext("cycle"))
# delete an object
name = random.choice(list(root.keys()))
obj = root[name]
......
# -*- coding: utf-8 -*-
# Copyright (C) 2019-2023 Nexedi SA and Contributors.
# Copyright (C) 2019-2024 Nexedi SA and Contributors.
#
# This program is free software: you can Use, Study, Modify and Redistribute
# it under the terms of the GNU General Public License version 3, or (at your
......@@ -40,7 +40,7 @@ def test_zodbanalyze(tmpdir, capsys):
csv=False,
)
captured = capsys.readouterr()
assert "Processed 68 records in 65 transactions" in captured.out
assert "Processed 70 records in 67 transactions" in captured.out
assert captured.err == ""
# csv output
......@@ -57,8 +57,8 @@ def test_zodbanalyze(tmpdir, capsys):
captured = capsys.readouterr()
assert (
"""Class Name,T.Count,T.Bytes,Pct,AvgSize,C.Count,C.Bytes,O.Count,O.Bytes
persistent.mapping.PersistentMapping,3,639,23.194192%,213.000000,1,213,2,426
__main__.Object,63,2116,76.805808%,33.587302,9,303,54,1813
persistent.mapping.PersistentMapping,3,639,22.468354%,213.000000,1,213,2,426
__main__.Object,65,2205,77.531646%,33.923077,9,310,56,1895
"""
== captured.out
)
......
......@@ -56,35 +56,6 @@ obj 0000000000000006 34 sha1:5dbf26359289e5a25f9755f832ea91cc8ee76686
highest protocol among opcodes = 2
txn 0285cbac917e4b4c "p"
user "user0.18"
description "step 0.18"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-generator'
19: q BINPUT 2
21: U SHORT_BINSTRING 'zodb/py2 (b)'
35: U SHORT_BINSTRING 'x-cookieO'
46: U SHORT_BINSTRING 'CQUX6'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000004 34 sha1:551bc2fad39058879f4ba00a9c53d0d63b127bb1
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b0.18'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbac962fc999 "p"
user "user0.19"
description "step 0.19"
......@@ -173,10 +144,42 @@ obj 0000000000000003 34 sha1:484358413b2746e8a05b1e3173051abedd28e1fa
txn 0285cbacbbbbbc00 "p"
user "user"
description "cyclic reference"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieE'
17: U SHORT_BINSTRING 'ZM3QZ'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (cycle)'
57: u SETITEMS (MARK at 5)
58: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 41 sha1:7108c96ccb9cbeaab1164d533174c300e51309f9
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
39: Q BINPERSID
40: . STOP
highest protocol among opcodes = 2
txn 0285cbacc06d3a4c "p"
user ""
description "predelete 7"
description "predelete 4"
extension ""
obj 0000000000000000 213 sha1:9eba67326a7fd2393c39966bfc7d7be2a8035dfa
obj 0000000000000000 213 sha1:a6e70638fafd4619841032356ae93a4da7b539c5
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -198,13 +201,13 @@ obj 0000000000000000 213 sha1:9eba67326a7fd2393c39966bfc7d7be2a8035dfa
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
......@@ -238,51 +241,22 @@ obj 0000000000000000 213 sha1:9eba67326a7fd2393c39966bfc7d7be2a8035dfa
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 32 sha1:c0517df3bfc49dcda73c2797fb957c92bc651888
obj 0000000000000008 32 sha1:936674657cf846998d27356363832827fa612092
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c0*'
24: U SHORT_BINSTRING 'b0*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
txn 0285cbad02222280 " "
txn 0285cbad06d3a0cc " "
user "user1.0"
description "step 1.0"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie3'
17: U SHORT_BINSTRING '7P0TJ'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:064279cb7fe24286e7ec0c47704a75eedc5dfc85
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c1.0'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad06d3a0cc " "
user "user1.1"
description "step 1.1"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -296,22 +270,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 33 sha1:3362a180bda38de9551456e11aba3a50b3ee4063
obj 0000000000000006 33 sha1:f18e991b87b63cf1f9486d74d70020ff8d573eec
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1.1'
24: U SHORT_BINSTRING 'e1.0'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad0b851f19 " "
user "user1.2"
description "step 1.2"
user "user1.1"
description "step 1.1"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -325,22 +299,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000004 33 sha1:78395e22e884588e5c8037d6d90a697105722708
obj 0000000000000008 33 sha1:c37e1d2350c8fc4e18cdbc53b432dba50e5196ba
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b1.2'
24: U SHORT_BINSTRING 'b1.1'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad10369d66 " "
user "user1.3"
description "step 1.3"
user "user1.2"
description "step 1.2"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -354,22 +328,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 33 sha1:5fb466e36ea6f847b73ad7976def8ad60e00e766
obj 0000000000000003 33 sha1:28e9880fc0f50a9fea5c4a9e861adc1fe44c9f5c
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.3'
24: U SHORT_BINSTRING 'g1.2'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad14e81bb3 " "
user "user1.4"
description "step 1.4"
user "user1.3"
description "step 1.3"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -383,22 +357,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 33 sha1:15a38343610d25057cd88521669671350eb0c0a8
obj 0000000000000003 33 sha1:5fb466e36ea6f847b73ad7976def8ad60e00e766
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.4'
24: U SHORT_BINSTRING 'g1.3'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad19999a00 " "
user "user1.5"
description "step 1.5"
user "user1.4"
description "step 1.4"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -412,22 +386,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:fd3a56403fb6da1f975676b50d745284f187029d
obj 0000000000000007 33 sha1:90b0ffa657df9de708913a2cbbd454126fd9de15
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c1.5'
24: U SHORT_BINSTRING 'c1.4'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad1e4b184c " "
user "user1.6"
description "step 1.6"
user "user1.5"
description "step 1.5"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -441,22 +415,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 33 sha1:4d811fcaaa707127f5f6f49dc368ffd2ebae1018
obj 0000000000000001 33 sha1:70b0a88b7652b82b82539800484dc7788277f32a
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f1.6'
24: U SHORT_BINSTRING 'f1.5'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad22fc9699 " "
user "user1.7"
description "step 1.7"
user "user1.6"
description "step 1.6"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -470,22 +444,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 33 sha1:4c3e1f41eebd1f56c0fef1f609d64e061a137f5a
obj 0000000000000002 33 sha1:e9018b0bc67c9de08becf1f1fe1a548ed263fb29
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd1.7'
24: U SHORT_BINSTRING 'd1.6'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad27ae14e6 " "
user "user1.8"
description "step 1.8"
user "user1.7"
description "step 1.7"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -499,22 +473,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:13e366fb1d15d36a62099e6b835638407718229f
obj 0000000000000007 33 sha1:0cd3f4b725517a5371429e2ef2f56ea54fe405fb
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c1.8'
24: U SHORT_BINSTRING 'c1.7'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad2c5f9333 " "
user "user1.9"
description "step 1.9"
user "user1.8"
description "step 1.8"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -528,22 +502,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:beb7a6ebd477848306328f613a6bc214144ba14a
obj 0000000000000007 33 sha1:13e366fb1d15d36a62099e6b835638407718229f
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c1.9'
24: U SHORT_BINSTRING 'c1.8'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad31111180 " "
user "user1.10"
description "step 1.10"
user "user1.9"
description "step 1.9"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -557,22 +531,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 34 sha1:3d8eb2e84c17af9e6ffe4c2dab6a8d4180b3717c
obj 0000000000000006 33 sha1:3ac37991a56061c7407cc093ee2a71eef4379131
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1.10'
31: q BINPUT 2
33: . STOP
24: U SHORT_BINSTRING 'e1.9'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad35c28fcc " "
user "user1.11"
description "step 1.11"
user "user1.10"
description "step 1.10"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -586,22 +560,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000005 34 sha1:3e2ce7b87adc999c578dec26c3d9a7148b169d50
obj 0000000000000005 34 sha1:407cc5710a22f6c387df45aab613aa3673b221c6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a1.11'
24: U SHORT_BINSTRING 'a1.10'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad3a740e19 " "
user "user1.12"
description "step 1.12"
user "user1.11"
description "step 1.11"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -615,22 +589,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:d7a594303b8f49334430312211b65f06586d4e72
obj 0000000000000007 34 sha1:88ab1add11652101077535c03b04e83fe4ddb88b
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c1.12'
24: U SHORT_BINSTRING 'c1.11'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad3f258c66 " "
user "user1.13"
description "step 1.13"
user "user1.12"
description "step 1.12"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -644,22 +618,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 34 sha1:1b5a346d8929e52eb078f442c300d26e125e4200
obj 0000000000000006 34 sha1:4808aef147f8ded08ffaae2ce04265506385e7f7
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1.13'
24: U SHORT_BINSTRING 'e1.12'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad43d70ab3 " "
user "user1.14"
description "step 1.14"
user "user1.13"
description "step 1.13"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -673,22 +647,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 34 sha1:e5b3820378e102a61be2b5998ded3182c106c7db
obj 0000000000000003 34 sha1:a9f47880096587b359fa7ea6a0fd213e800a24a4
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.14'
24: U SHORT_BINSTRING 'g1.13'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad48888900 " "
user "user1.15"
description "step 1.15"
user "user1.14"
description "step 1.14"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -702,22 +676,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 34 sha1:2e9ebc331bf53c095e9573de64a9b31f2b340b2f
obj 0000000000000003 34 sha1:e5b3820378e102a61be2b5998ded3182c106c7db
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.15'
24: U SHORT_BINSTRING 'g1.14'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad4d3a074c " "
user "user1.16"
description "step 1.16"
user "user1.15"
description "step 1.15"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -731,22 +705,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 34 sha1:3faf2b3ec22270e84cebb4d3b892e77b02d2ac10
obj 0000000000000002 34 sha1:f136bac1befa0fbd1ebd50218f8d9afe00b9b0a5
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd1.16'
24: U SHORT_BINSTRING 'd1.15'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad51eb8599 " "
user "user1.17"
description "step 1.17"
user "user1.16"
description "step 1.16"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -760,22 +734,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 34 sha1:732fac4aa308c29fba8b0da4d0502b6d35e211f4
obj 0000000000000003 34 sha1:778621ce5c5e97b65343b1ab0cc1a3ce5702fbc8
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.17'
24: U SHORT_BINSTRING 'g1.16'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad569d03e6 " "
user "user1.18"
description "step 1.18"
user "user1.17"
description "step 1.17"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -789,22 +763,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 34 sha1:14b40a66bb827f09c17d8a64985788a781886828
obj 0000000000000001 34 sha1:eb6d2d192f3d8fe47a1b2e8119d390ed580c3fb4
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f1.18'
24: U SHORT_BINSTRING 'f1.17'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad5b4e8233 " "
user "user1.19"
description "step 1.19"
user "user1.18"
description "step 1.18"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -818,22 +792,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000005 34 sha1:4f226e961b5c4f301a491442b1c820ac7dc3ce1d
obj 0000000000000005 34 sha1:921682b323eb62f109d052bc1dfd4ffe0dbf79db
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a1.19'
24: U SHORT_BINSTRING 'a1.18'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad60000080 " "
user "user1.20"
description "step 1.20"
user "user1.19"
description "step 1.19"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -847,22 +821,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 34 sha1:6bfd3298d0bea74cfa3d1f01bb722e958e3f1520
obj 0000000000000003 34 sha1:b0b31eb0b48548119153628eb3c6711d959e9f9b
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.20'
24: U SHORT_BINSTRING 'g1.19'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad64b17ecc " "
user "user1.21"
description "step 1.21"
user "user1.20"
description "step 1.20"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -876,22 +850,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 34 sha1:443fc48b546d0c85d01a485607253180c5624bdf
obj 0000000000000003 34 sha1:6bfd3298d0bea74cfa3d1f01bb722e958e3f1520
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.21'
24: U SHORT_BINSTRING 'g1.20'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad6962fd19 " "
user "user1.22"
description "step 1.22"
user "user1.21"
description "step 1.21"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -905,22 +879,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 34 sha1:5d3efa2ca7bdf3c57b08ebb4c70344f53d93a0a1
obj 0000000000000006 34 sha1:0d4b4837500e84b190ea2f92b16ab8ec0c486db5
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1.22'
24: U SHORT_BINSTRING 'e1.21'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad6e147b66 " "
user "user1.23"
description "step 1.23"
user "user1.22"
description "step 1.22"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -934,22 +908,22 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000005 34 sha1:1b443228d5a434ddd9616ecb5aa90672c0ce9ba2
obj 0000000000000005 34 sha1:eacbd02d0d78eece9d784da7f3fd0b2738ca6ce0
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a1.23'
24: U SHORT_BINSTRING 'a1.22'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad72c5f9b3 " "
user "user1.24"
description "step 1.24"
user "user1.23"
description "step 1.23"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
......@@ -963,14 +937,43 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000005 34 sha1:ad7f258dfad403eb22ab3a7f28e12ed153c45486
obj 0000000000000005 34 sha1:1b443228d5a434ddd9616ecb5aa90672c0ce9ba2
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a1.23'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad77777800 " "
user "user1.24"
description "step 1.24"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieD'
17: U SHORT_BINSTRING 'O5ZEM'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (f)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 34 sha1:b35a1826cc6cb71b9ddff043f0e8f88b4d90281f
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a1.24'
24: U SHORT_BINSTRING 'f1.24'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
......@@ -984,15 +987,15 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieM'
17: U SHORT_BINSTRING '1G51M'
6: U SHORT_BINSTRING 'x-cookie3'
17: U SHORT_BINSTRING 'G51MM'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrWli/Rk=)'
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrXLF+bM=)'
69: u SETITEMS (MARK at 5)
70: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 from 0285cbad3f258c66
obj 0000000000000005 from 0285cbad6e147b66
txn 0285cbad80da7499 " "
user "root1.1\nYour\nMagesty "
......@@ -1002,21 +1005,53 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieV'
17: U SHORT_BINSTRING 'JCDRH'
6: U SHORT_BINSTRING 'x-cookieL'
17: U SHORT_BINSTRING 'CDRHV'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrXLF+bM=)'
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrXd3eAA=)'
69: u SETITEMS (MARK at 5)
70: . STOP
highest protocol among opcodes = 2
obj 0000000000000005 from 0285cbad6e147b66
obj 0000000000000001 from 0285cbad569d03e6
txn 0285cbad858bf2e6 " "
user "user"
description "cyclic reference"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie4'
17: U SHORT_BINSTRING 'C4OMS'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (cycle)'
57: u SETITEMS (MARK at 5)
58: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
39: Q BINPERSID
40: . STOP
highest protocol among opcodes = 2
txn 0285cbad8a3d7133 " "
user ""
description "predelete 6"
description "predelete 3"
extension ""
obj 0000000000000000 213 sha1:e4b5a7c8f5537b25f27e5b9c4f6eaf6da17fc0a1
obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -1038,19 +1073,19 @@ obj 0000000000000000 213 sha1:e4b5a7c8f5537b25f27e5b9c4f6eaf6da17fc0a1
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
133: Q BINPERSID
134: U SHORT_BINSTRING 'e'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
147: q BINPUT 9
149: h BINGET 6
151: \x86 TUPLE2
......@@ -1062,7 +1097,7 @@ obj 0000000000000000 213 sha1:e4b5a7c8f5537b25f27e5b9c4f6eaf6da17fc0a1
170: \x86 TUPLE2
171: Q BINPERSID
172: U SHORT_BINSTRING 'g'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
185: q BINPUT 11
187: h BINGET 6
189: \x86 TUPLE2
......@@ -1078,20 +1113,20 @@ obj 0000000000000000 213 sha1:e4b5a7c8f5537b25f27e5b9c4f6eaf6da17fc0a1
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 32 sha1:1a43b55bc4a19245cce9eb5aa5ad411006f06afe
obj 0000000000000009 32 sha1:38aaea7061f311a5ff41e144ea56df2c8f66435c
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1*'
24: U SHORT_BINSTRING 'g1*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
txn 0285cbad8a3d7133 " "
txn 0285cbad8eeeef80 " "
user "root1\nYour\nRoyal\nMagesty' \x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
description "delete 1\nalpha beta gamma'delta\"lambda\n\nqqq ..."
extension
......@@ -1100,16 +1135,16 @@ extension
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieS'
17: U SHORT_BINSTRING 'MC4OM'
17: U SHORT_BINSTRING 'XVOTI'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (delete 6)'
39: U SHORT_BINSTRING 'zodb/py2 (delete 3)'
60: u SETITEMS (MARK at 5)
61: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 delete
obj 0000000000000003 delete
txn 0285cbadc740db19 " "
txn 0285cbadcbf25966 " "
user "user2.0"
description "step 2.0"
extension
......@@ -1117,28 +1152,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieI'
17: U SHORT_BINSTRING 'SXVOT'
6: U SHORT_BINSTRING 'x-cookie1'
17: U SHORT_BINSTRING 'GRGS2'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (g)'
39: U SHORT_BINSTRING 'zodb/py2 (f)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 33 sha1:387ba615461244d2f9ede7e1c3a06465f0d10fa0
obj 0000000000000001 33 sha1:7b5599bdbf192e2d33e2597b52c8a72a751ddd13
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g2.0'
24: U SHORT_BINSTRING 'f2.0'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadcbf25966 " "
txn 0285cbadd0a3d7b3 " "
user "user2.1"
description "step 2.1"
extension
......@@ -1146,28 +1181,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie2'
17: U SHORT_BINSTRING 'SGRGS'
6: U SHORT_BINSTRING 'x-cookie3'
17: U SHORT_BINSTRING 'WYNK7'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (b)'
39: U SHORT_BINSTRING 'zodb/py2 (d)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000004 33 sha1:1a68c1da2be4f7b3faa4482930d7d37c1213e535
obj 0000000000000002 33 sha1:50b0cf792f2fdc3fbfc5f47f148784924350e31c
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b2.1'
24: U SHORT_BINSTRING 'd2.1'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadd0a3d7b3 " "
txn 0285cbadd5555600 " "
user "user2.2"
description "step 2.2"
extension
......@@ -1175,15 +1210,15 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie7'
17: U SHORT_BINSTRING 'HWYNK'
6: U SHORT_BINSTRING 'x-cookieF'
17: U SHORT_BINSTRING 'SPFA4'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (g)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 33 sha1:71f1255a9751e0f223f079552e182cf26b27c0a6
obj 0000000000000009 33 sha1:71f1255a9751e0f223f079552e182cf26b27c0a6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1196,7 +1231,7 @@ obj 0000000000000003 33 sha1:71f1255a9751e0f223f079552e182cf26b27c0a6
highest protocol among opcodes = 2
txn 0285cbadd5555600 " "
txn 0285cbadda06d44c " "
user "user2.3"
description "step 2.3"
extension
......@@ -1204,28 +1239,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie4'
17: U SHORT_BINSTRING 'VSPFA'
6: U SHORT_BINSTRING 'x-cookie1'
17: U SHORT_BINSTRING 'XE3RQ'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (f)'
39: U SHORT_BINSTRING 'zodb/py2 (g)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 33 sha1:c80786faab0ded92976d8248ace4fb2a6be39d47
obj 0000000000000009 33 sha1:e6236b8f0a4a2201c0c2375a8f360905108eff2d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f2.3'
24: U SHORT_BINSTRING 'g2.3'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadda06d44c " "
txn 0285cbaddeb85299 " "
user "user2.4"
description "step 2.4"
extension
......@@ -1233,28 +1268,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieQ'
17: U SHORT_BINSTRING 'XXE3R'
6: U SHORT_BINSTRING 'x-cookie2'
17: U SHORT_BINSTRING '1XYQ2'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (d)'
39: U SHORT_BINSTRING 'zodb/py2 (e)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 33 sha1:39d1dc4c8bc3ea4c445db4811839801d57d5816c
obj 0000000000000006 33 sha1:55a37439e3dc66552d680833af332b8be83bfc2a
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.4'
24: U SHORT_BINSTRING 'e2.4'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbaddeb85299 " "
txn 0285cbade369d0e6 " "
user "user2.5"
description "step 2.5"
extension
......@@ -1262,28 +1297,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie2'
17: U SHORT_BINSTRING 'O1XYQ'
6: U SHORT_BINSTRING 'x-cookieW'
17: U SHORT_BINSTRING 'C0ZT2'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (d)'
39: U SHORT_BINSTRING 'zodb/py2 (a)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 33 sha1:2e472bec634f703fc24e5192114b0c61364d9273
obj 0000000000000005 33 sha1:6beb5d1ca083744ff1e8a13c0bee70c2df54a05c
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.5'
24: U SHORT_BINSTRING 'a2.5'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbade369d0e6 " "
txn 0285cbade81b4f33 " "
user "user2.6"
description "step 2.6"
extension
......@@ -1291,28 +1326,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie2'
17: U SHORT_BINSTRING '1C0ZT'
6: U SHORT_BINSTRING 'x-cookie0'
17: U SHORT_BINSTRING 'OX40D'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
39: U SHORT_BINSTRING 'zodb/py2 (b)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:2984bc31eaef3fc19c8d41e4fda81442a97bfbc9
obj 0000000000000008 33 sha1:2a3221e27ac8fbf15ab75b38a9a65e727d237355
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.6'
24: U SHORT_BINSTRING 'b2.6'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbade81b4f33 " "
txn 0285cbadeccccd80 " "
user "user2.7"
description "step 2.7"
extension
......@@ -1320,28 +1355,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieD'
17: U SHORT_BINSTRING '7OX40'
6: U SHORT_BINSTRING 'x-cookieY'
17: U SHORT_BINSTRING '64CY4'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (b)'
39: U SHORT_BINSTRING 'zodb/py2 (g)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000004 33 sha1:ca7c0222e051105fba81d7fcef12dd1358a2376c
obj 0000000000000009 33 sha1:408fddc8c7255c5e2ed94c239ac57c211ab94b6d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b2.7'
24: U SHORT_BINSTRING 'g2.7'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadeccccd80 " "
txn 0285cbadf17e4bcc " "
user "user2.8"
description "step 2.8"
extension
......@@ -1349,28 +1384,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie4'
17: U SHORT_BINSTRING 'U64CY'
6: U SHORT_BINSTRING 'x-cookieZ'
17: U SHORT_BINSTRING 'AXYM6'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (e)'
39: U SHORT_BINSTRING 'zodb/py2 (d)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 33 sha1:1b01a4beac7fd9a6dba2c81ddc85b2ebc9429cf6
obj 0000000000000002 33 sha1:72eda0cdae0addbec9472e28b5a9a91ecdf41bbf
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2.8'
24: U SHORT_BINSTRING 'd2.8'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadf17e4bcc " "
txn 0285cbadf62fca19 " "
user "user2.9"
description "step 2.9"
extension
......@@ -1378,28 +1413,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie6'
17: U SHORT_BINSTRING 'HAXYM'
6: U SHORT_BINSTRING 'x-cookie8'
17: U SHORT_BINSTRING '5WYSB'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
39: U SHORT_BINSTRING 'zodb/py2 (e)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:cafb08245439fbb426a30114f67d5cad33bfb738
obj 0000000000000006 33 sha1:f1d87ba386f57291ecc925020a05df06caedb278
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.9'
24: U SHORT_BINSTRING 'e2.9'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadf62fca19 " "
txn 0285cbadfae14866 " "
user "user2.10"
description "step 2.10"
extension
......@@ -1407,28 +1442,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieB'
17: U SHORT_BINSTRING 'K5WYS'
6: U SHORT_BINSTRING 'x-cookie2'
17: U SHORT_BINSTRING 'F1402'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (a)'
39: U SHORT_BINSTRING 'zodb/py2 (c)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000005 34 sha1:34e522b77f14f2c10fbcdcf8e19ce9c751a3a1d0
obj 0000000000000007 34 sha1:6696fa0434fadb645687c74c8561f0f55fce1fd6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a2.10'
24: U SHORT_BINSTRING 'c2.10'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbadfae14866 " "
txn 0285cbadff92c6b3 " "
user "user2.11"
description "step 2.11"
extension
......@@ -1436,28 +1471,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie2'
17: U SHORT_BINSTRING 'AF140'
6: U SHORT_BINSTRING 'x-cookieG'
17: U SHORT_BINSTRING 'Q5FM3'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (f)'
39: U SHORT_BINSTRING 'zodb/py2 (d)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 34 sha1:a29bc1058df9c09210a4c1068ecc1402b7d8a3ab
obj 0000000000000002 34 sha1:14e8b27b3bc8bf5b4d86ca162cc1c912a29a1c05
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f2.11'
24: U SHORT_BINSTRING 'd2.11'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbadff92c6b3 " "
txn 0285cbae04444500 " "
user "user2.12"
description "step 2.12"
extension
......@@ -1465,28 +1500,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie3'
17: U SHORT_BINSTRING 'JQ5FM'
6: U SHORT_BINSTRING 'x-cookie7'
17: U SHORT_BINSTRING '2EFQB'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
39: U SHORT_BINSTRING 'zodb/py2 (g)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:8c5814c88e906929b8cb85fe8728b88b6d5ea96c
obj 0000000000000009 34 sha1:db269b90a0df33aa7d411c672f93fb7d86bbdb87
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.12'
24: U SHORT_BINSTRING 'g2.12'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae04444500 " "
txn 0285cbae08f5c34c " "
user "user2.13"
description "step 2.13"
extension
......@@ -1494,28 +1529,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieB'
17: U SHORT_BINSTRING 'Y2EFQ'
6: U SHORT_BINSTRING 'x-cookieS'
17: U SHORT_BINSTRING 'YS9KO'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
39: U SHORT_BINSTRING 'zodb/py2 (d)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:5d89801d288c5238f605784e7c71b2d61598d362
obj 0000000000000002 34 sha1:4b28f9e97ff4f61f3dfba30b9f7aceb4913215ce
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.13'
24: U SHORT_BINSTRING 'd2.13'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae08f5c34c " "
txn 0285cbae0da74199 " "
user "user2.14"
description "step 2.14"
extension
......@@ -1523,15 +1558,15 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-generator'
19: q BINPUT 2
21: U SHORT_BINSTRING 'zodb/py2 (c)'
35: U SHORT_BINSTRING 'x-cookieO'
46: U SHORT_BINSTRING 'GYS9K'
6: U SHORT_BINSTRING 'x-cookie5'
17: U SHORT_BINSTRING 'RF8GX'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:c3eabecf360015b4b7555abc3a0dc0cea77fe7ed
obj 0000000000000007 34 sha1:c3eabecf360015b4b7555abc3a0dc0cea77fe7ed
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1544,7 +1579,7 @@ obj 0000000000000008 34 sha1:c3eabecf360015b4b7555abc3a0dc0cea77fe7ed
highest protocol among opcodes = 2
txn 0285cbae0da74199 " "
txn 0285cbae1258bfe6 " "
user "user2.15"
description "step 2.15"
extension
......@@ -1552,28 +1587,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieX'
17: U SHORT_BINSTRING 'ERF8G'
6: U SHORT_BINSTRING 'x-cookie0'
17: U SHORT_BINSTRING 'H70PM'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (d)'
39: U SHORT_BINSTRING 'zodb/py2 (e)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 34 sha1:eae3771a6fa3e632c46c51e2f29e1e314dc429e6
obj 0000000000000006 34 sha1:25ffaeb6090581d72bce075a765d3cf4198af90f
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.15'
24: U SHORT_BINSTRING 'e2.15'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae1258bfe6 " "
txn 0285cbae170a3e33 " "
user "user2.16"
description "step 2.16"
extension
......@@ -1581,28 +1616,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieM'
17: U SHORT_BINSTRING 'MH70P'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (d)'
6: U SHORT_BINSTRING 'x-generator'
19: q BINPUT 2
21: U SHORT_BINSTRING 'zodb/py2 (f)'
35: U SHORT_BINSTRING 'x-cookieO'
46: U SHORT_BINSTRING 'MJ5PG'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 34 sha1:2f75a34f0871d2b5c28d66c97108c91aeda78bd5
obj 0000000000000001 34 sha1:e934438dede49d14ee2d1d2afa8fa18774547764
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.16'
24: U SHORT_BINSTRING 'f2.16'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae170a3e33 " "
txn 0285cbae1bbbbc80 " "
user "user2.17"
description "step 2.17"
extension
......@@ -1610,28 +1645,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-generator'
19: q BINPUT 2
21: U SHORT_BINSTRING 'zodb/py2 (c)'
35: U SHORT_BINSTRING 'x-cookieG'
46: U SHORT_BINSTRING 'RMJ5P'
6: U SHORT_BINSTRING 'x-cookie1'
17: U SHORT_BINSTRING 'RAZ4V'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (b)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:2840f7eadf2b100a429e5a358f9656985827612b
obj 0000000000000008 34 sha1:9961f82b3f01204f80efbb3b62a2b98d9d3202fa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.17'
24: U SHORT_BINSTRING 'b2.17'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae1bbbbc80 " "
txn 0285cbae206d3acc " "
user "user2.18"
description "step 2.18"
extension
......@@ -1639,28 +1674,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieV'
17: U SHORT_BINSTRING '8RAZ4'
6: U SHORT_BINSTRING 'x-cookieR'
17: U SHORT_BINSTRING 'KE39A'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (f)'
39: U SHORT_BINSTRING 'zodb/py2 (d)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 34 sha1:ae55ca7189bdef69b9721ec5efae5ccefcecca45
obj 0000000000000002 34 sha1:5294513e1e00c7de532f4f90068b2147bf87f673
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f2.18'
24: U SHORT_BINSTRING 'd2.18'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae206d3acc " "
txn 0285cbae251eb919 " "
user "user2.19"
description "step 2.19"
extension
......@@ -1668,28 +1703,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieA'
17: U SHORT_BINSTRING 'IKE39'
6: U SHORT_BINSTRING 'x-cookie8'
17: U SHORT_BINSTRING '1SBCJ'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (b)'
39: U SHORT_BINSTRING 'zodb/py2 (e)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000004 34 sha1:c1b57432c9e2fad36fe4a1efaa0445851865b775
obj 0000000000000006 34 sha1:523ec17c6d74016e3464d52bb7c7b7baa4b82a20
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b2.19'
24: U SHORT_BINSTRING 'e2.19'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae251eb919 " "
txn 0285cbae29d03766 " "
user "user2.20"
description "step 2.20"
extension
......@@ -1698,27 +1733,27 @@ extension
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieJ'
17: U SHORT_BINSTRING 'L1SBC'
17: U SHORT_BINSTRING 'EAIKM'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (g)'
39: U SHORT_BINSTRING 'zodb/py2 (b)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 34 sha1:3cc48a9a864cd996988559dcad0bfae9a8ac4a2c
obj 0000000000000008 34 sha1:14b17f0e944432782cb270205b2e96948d112619
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g2.20'
24: U SHORT_BINSTRING 'b2.20'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae29d03766 " "
txn 0285cbae2e81b5b3 " "
user "user2.21"
description "step 2.21"
extension
......@@ -1727,27 +1762,27 @@ extension
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieM'
17: U SHORT_BINSTRING '5EAIK'
17: U SHORT_BINSTRING 'ESSAD'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (g)'
39: U SHORT_BINSTRING 'zodb/py2 (e)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 34 sha1:0d5cd01d0b1c8e6f40fdb2e6d417e9f669c884f4
obj 0000000000000006 34 sha1:27744ea516240e0d00be75f26af9698f842bdda5
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g2.21'
24: U SHORT_BINSTRING 'e2.21'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae2e81b5b3 " "
txn 0285cbae33333400 " "
user "user2.22"
description "step 2.22"
extension
......@@ -1755,28 +1790,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieD'
17: U SHORT_BINSTRING 'MESSA'
6: U SHORT_BINSTRING 'x-cookieH'
17: U SHORT_BINSTRING 'DL5OC'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
39: U SHORT_BINSTRING 'zodb/py2 (e)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:5f40b64fc1a997b4426307755b3f01d66710211a
obj 0000000000000006 34 sha1:a3f303ddd4f2fb9369f6fbbb38ae8030f7f8188d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.22'
24: U SHORT_BINSTRING 'e2.22'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae33333400 " "
txn 0285cbae37e4b24c " "
user "user2.23"
description "step 2.23"
extension
......@@ -1784,28 +1819,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieC'
17: U SHORT_BINSTRING 'PDL5O'
6: U SHORT_BINSTRING 'x-cookieQ'
17: U SHORT_BINSTRING 'PBN2A'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (b)'
39: U SHORT_BINSTRING 'zodb/py2 (d)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000004 34 sha1:6acfb712234bb732bd96b893c87ec37cc3c4fe43
obj 0000000000000002 34 sha1:343bed4b31f4fe69a92ee51d28fd7b9cfd6ecb8b
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b2.23'
24: U SHORT_BINSTRING 'd2.23'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae37e4b24c " "
txn 0285cbae3c963099 " "
user "user2.24"
description "step 2.24"
extension
......@@ -1813,28 +1848,28 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieA'
17: U SHORT_BINSTRING 'HPBN2'
6: U SHORT_BINSTRING 'x-cookie2'
17: U SHORT_BINSTRING '0GV0I'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (c)'
39: U SHORT_BINSTRING 'zodb/py2 (e)'
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:6cb9e4f502834b71b06f3e9cf99deb16dd6f0cfb
obj 0000000000000006 34 sha1:8804c60dc27b2e2f6908e2a099a5c5d4b5abc843
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.24'
24: U SHORT_BINSTRING 'e2.24'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae3c963099 " "
txn 0285cbae4147aee6 " "
user "root2.0\nYour\nMagesty "
description "undo 2.0\nmore detailed description\n\nzzz ...\t\t"
extension
......@@ -1842,17 +1877,17 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie0'
17: U SHORT_BINSTRING '1M0GV'
6: U SHORT_BINSTRING 'x-cookieM'
17: U SHORT_BINSTRING 'OQO01'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrjMzNAA=)'
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrjfkskw=)'
69: u SETITEMS (MARK at 5)
70: . STOP
highest protocol among opcodes = 2
obj 0000000000000004 from 0285cbae206d3acc
obj 0000000000000002 from 0285cbae206d3acc
txn 0285cbae4147aee6 " "
txn 0285cbae45f92d33 " "
user "root2.1\nYour\nMagesty "
description "undo 2.1\nmore detailed description\n\nzzz ...\t\t\t"
extension
......@@ -1860,21 +1895,53 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookie0'
17: U SHORT_BINSTRING '2VOQO'
6: U SHORT_BINSTRING 'x-cookieA'
17: U SHORT_BINSTRING 'VPQ8R'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrjfkskw=)'
39: U SHORT_BINSTRING 'zodb/py2 (undo AoXLrjyWMJk=)'
69: u SETITEMS (MARK at 5)
70: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 from 0285cbae2e81b5b3
obj 0000000000000006 from 0285cbae33333400
txn 0285cbae45f92d33 " "
txn 0285cbae4aaaab80 " "
user "user"
description "cyclic reference"
extension
0: \x80 PROTO 2
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-generator'
19: q BINPUT 2
21: U SHORT_BINSTRING 'zodb/py2 (cycle)'
39: U SHORT_BINSTRING 'x-cookieG'
50: U SHORT_BINSTRING 'B6FWF'
57: u SETITEMS (MARK at 5)
58: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
39: Q BINPERSID
40: . STOP
highest protocol among opcodes = 2
txn 0285cbae4f5c29cc " "
user ""
description "predelete 2"
description "predelete 6"
extension ""
obj 0000000000000000 213 sha1:193a3d6e70241106bcc22c72857f2b40195b1bc1
obj 0000000000000000 213 sha1:b44d53e1b6cc465c4ab3ba2a3384a80fbba4eb8a
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -1896,31 +1963,31 @@ obj 0000000000000000 213 sha1:193a3d6e70241106bcc22c72857f2b40195b1bc1
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
133: Q BINPERSID
134: U SHORT_BINSTRING 'e'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\n'
147: q BINPUT 9
149: h BINGET 6
151: \x86 TUPLE2
152: Q BINPERSID
153: U SHORT_BINSTRING 'd'
156: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\n'
156: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
166: q BINPUT 10
168: h BINGET 6
170: \x86 TUPLE2
171: Q BINPERSID
172: U SHORT_BINSTRING 'g'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
185: q BINPUT 11
187: h BINGET 6
189: \x86 TUPLE2
......@@ -1936,20 +2003,20 @@ obj 0000000000000000 213 sha1:193a3d6e70241106bcc22c72857f2b40195b1bc1
212: . STOP
highest protocol among opcodes = 2
obj 000000000000000a 32 sha1:c9a667705323348a209f8f3b22c1977dbcd3f7e9
obj 000000000000000a 32 sha1:35a18f6ce20260014618957689b770b74d7b3c78
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2*'
24: U SHORT_BINSTRING 'e2*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
txn 0285cbae4aaaab80 " "
txn 0285cbae540da819 " "
user "root2\nYour\nRoyal\nMagesty' \x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
description "delete 2\nalpha beta gamma'delta\"lambda\n\nqqq ..."
extension
......@@ -1957,13 +2024,13 @@ extension
2: } EMPTY_DICT
3: q BINPUT 1
5: ( MARK
6: U SHORT_BINSTRING 'x-cookieR'
17: U SHORT_BINSTRING 'ZVPQ8'
6: U SHORT_BINSTRING 'x-cookieT'
17: U SHORT_BINSTRING '4WFSD'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (delete 2)'
39: U SHORT_BINSTRING 'zodb/py2 (delete 6)'
60: u SETITEMS (MARK at 5)
61: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 delete
obj 0000000000000006 delete
......@@ -49,45 +49,48 @@ obj 0000000000000006 34 sha1:0734767857e69ab8bfd0007d4ca3f1a7fd69b677
highest protocol among opcodes = 2
txn 0285cbacb258bf66 "p"
user "root0.0\nYour\nMagesty "
description "undo 0.0\nmore detailed description\n\nzzz ..."
txn 0285cbacb70a3db3 "p"
user "root0.1\nYour\nMagesty "
description "undo 0.1\nmore detailed description\n\nzzz ...\t"
extension ""
obj 0000000000000005 34 sha1:820cfeef1fc1fc1bda646401c5603fad36c7011e
obj 0000000000000004 34 sha1:fe21381adc01e51965c3278c6debf52ebd63068c
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e0.14'
24: U SHORT_BINSTRING 'd0.11'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbacb70a3db3 "p"
user "root0.1\nYour\nMagesty "
description "undo 0.1\nmore detailed description\n\nzzz ...\t"
txn 0285cbacbbbbbc00 "p"
user "user"
description "cyclic reference"
extension ""
obj 0000000000000004 34 sha1:fe21381adc01e51965c3278c6debf52ebd63068c
obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd0.11'
31: q BINPUT 2
33: . STOP
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
39: Q BINPERSID
40: . STOP
highest protocol among opcodes = 2
txn 0285cbacbbbbbc00 "p"
txn 0285cbacc06d3a4c "p"
user ""
description "predelete 2"
description "predelete 5"
extension ""
obj 0000000000000000 194 sha1:5456a4d7bbe20eb26beb84eae76762cd9f4f8c8a
obj 0000000000000000 194 sha1:4a9e413a4ff168a6a7f84be32b9168364048fd6d
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -102,7 +105,7 @@ obj 0000000000000000 194 sha1:5456a4d7bbe20eb26beb84eae76762cd9f4f8c8a
57: q BINPUT 4
59: ( MARK
60: U SHORT_BINSTRING 'c'
63: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
63: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
73: q BINPUT 5
75: c GLOBAL '__main__ Object'
92: q BINPUT 6
......@@ -115,7 +118,7 @@ obj 0000000000000000 194 sha1:5456a4d7bbe20eb26beb84eae76762cd9f4f8c8a
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'e'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x05'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
......@@ -143,54 +146,54 @@ obj 0000000000000000 194 sha1:5456a4d7bbe20eb26beb84eae76762cd9f4f8c8a
193: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 32 sha1:c0517df3bfc49dcda73c2797fb957c92bc651888
obj 0000000000000007 32 sha1:b9d61167d2388ac320b1bc2940b43e7a8bad46ac
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c0*'
24: U SHORT_BINSTRING 'e0*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
txn 0285cbad02222280 " "
txn 0285cbad06d3a0cc " "
user "user1.0"
description "step 1.0"
extension ""
obj 0000000000000004 33 sha1:cb655aa6a738a9855dffeb7584da2df381ab89d6
obj 0000000000000007 33 sha1:f18e991b87b63cf1f9486d74d70020ff8d573eec
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd1.0'
24: U SHORT_BINSTRING 'e1.0'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad06d3a0cc " "
txn 0285cbad0b851f19 " "
user "user1.1"
description "step 1.1"
extension ""
obj 0000000000000005 33 sha1:3362a180bda38de9551456e11aba3a50b3ee4063
obj 0000000000000006 33 sha1:bf4f1be3d63bca5c7dccf98f7660f419597a0f3d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1.1'
24: U SHORT_BINSTRING 'g1.1'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad0b851f19 " "
txn 0285cbad10369d66 " "
user "user1.2"
description "step 1.2"
extension ""
......@@ -207,113 +210,96 @@ obj 0000000000000006 33 sha1:28e9880fc0f50a9fea5c4a9e861adc1fe44c9f5c
highest protocol among opcodes = 2
txn 0285cbad10369d66 " "
txn 0285cbad14e81bb3 " "
user "user1.3"
description "step 1.3"
extension ""
obj 0000000000000006 33 sha1:5fb466e36ea6f847b73ad7976def8ad60e00e766
obj 0000000000000004 33 sha1:e8796affc44d563a09a2913907f91467a34498fc
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.3'
24: U SHORT_BINSTRING 'd1.3'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad14e81bb3 " "
txn 0285cbad19999a00 " "
user "user1.4"
description "step 1.4"
extension ""
obj 0000000000000004 33 sha1:31a9f07c87da619daa5212fd3c1af57419d07fc3
obj 0000000000000006 33 sha1:15a38343610d25057cd88521669671350eb0c0a8
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd1.4'
24: U SHORT_BINSTRING 'g1.4'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad19999a00 " "
txn 0285cbad1e4b184c " "
user "user1.5"
description "step 1.5"
extension ""
obj 0000000000000006 33 sha1:ad1fa70347e93f4e7987bb4702494619db32cb73
obj 0000000000000003 33 sha1:0adf3b787e6814b6cc073bd51a42c3f18615a674
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.5'
24: U SHORT_BINSTRING 'b1.5'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad1e4b184c " "
txn 0285cbad22fc9699 " "
user "user1.6"
description "step 1.6"
extension ""
obj 0000000000000003 33 sha1:f0d30533c8b386ed571c400c0a37aec4df75fe52
obj 0000000000000001 33 sha1:4d811fcaaa707127f5f6f49dc368ffd2ebae1018
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b1.6'
24: U SHORT_BINSTRING 'f1.6'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad22fc9699 " "
txn 0285cbad27ae14e6 " "
user "user1.7"
description "step 1.7"
extension ""
obj 0000000000000001 33 sha1:fee73692c6795a6421978a1ccdca4b61468a487b
obj 0000000000000004 33 sha1:4c3e1f41eebd1f56c0fef1f609d64e061a137f5a
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f1.7'
24: U SHORT_BINSTRING 'd1.7'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad27ae14e6 " "
txn 0285cbad2c5f9333 " "
user "user1.8"
description "step 1.8"
extension ""
obj 0000000000000004 33 sha1:e9dc07c0050bf3b9378a1f17d562b8a2423c6076
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd1.8'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad2c5f9333 " "
user "user1.9"
description "step 1.9"
extension ""
obj 0000000000000000 213 sha1:f4bcbfda350ec47458539ad8aa8566a89f278015
obj 0000000000000000 213 sha1:8ccd62e915379b196be62bdb500c4019dfb7825f
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -335,7 +321,7 @@ obj 0000000000000000 213 sha1:f4bcbfda350ec47458539ad8aa8566a89f278015
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
......@@ -347,7 +333,7 @@ obj 0000000000000000 213 sha1:f4bcbfda350ec47458539ad8aa8566a89f278015
132: \x86 TUPLE2
133: Q BINPERSID
134: U SHORT_BINSTRING 'e'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x05'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
147: q BINPUT 9
149: h BINGET 6
151: \x86 TUPLE2
......@@ -375,291 +361,328 @@ obj 0000000000000000 213 sha1:f4bcbfda350ec47458539ad8aa8566a89f278015
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:9e7210231bc0dd64ef92361d6bc4c9a3f5670aaf
obj 0000000000000008 33 sha1:7cffb67651540355d8467852ec6cabcb48d964aa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a1.9'
24: U SHORT_BINSTRING 'a1.8'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad31111180 " "
user "user1.9"
description "step 1.9"
extension ""
obj 0000000000000001 33 sha1:c32c4831eabc3a97810c4f925465c6093e4fb716
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f1.9'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbad35c28fcc " "
user "user1.10"
description "step 1.10"
extension ""
obj 0000000000000001 34 sha1:32ad367b3ca4641b070902c7d3073b4fa7e22b85
obj 0000000000000002 34 sha1:07fe4a745e127abf54f451d41fba5db7bd10ac9d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f1.10'
24: U SHORT_BINSTRING 'c1.10'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad35c28fcc " "
txn 0285cbad3a740e19 " "
user "user1.11"
description "step 1.11"
extension ""
obj 0000000000000007 34 sha1:88ab1add11652101077535c03b04e83fe4ddb88b
obj 0000000000000001 34 sha1:2f0fc397cd9bdceb59cfb7e40b823ae3a81e2f7c
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c1.11'
24: U SHORT_BINSTRING 'f1.11'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad3a740e19 " "
txn 0285cbad3f258c66 " "
user "user1.12"
description "step 1.12"
extension ""
obj 0000000000000001 34 sha1:ae2ad008499e3ad36f7c7453437c10dafacc687e
obj 0000000000000007 34 sha1:4808aef147f8ded08ffaae2ce04265506385e7f7
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f1.12'
24: U SHORT_BINSTRING 'e1.12'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad3f258c66 " "
txn 0285cbad43d70ab3 " "
user "user1.13"
description "step 1.13"
extension ""
obj 0000000000000005 34 sha1:1b5a346d8929e52eb078f442c300d26e125e4200
obj 0000000000000008 34 sha1:656d65291d6e34225fe2c8213c2241b390e7487a
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1.13'
24: U SHORT_BINSTRING 'a1.13'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad43d70ab3 " "
txn 0285cbad48888900 " "
user "user1.14"
description "step 1.14"
extension ""
obj 0000000000000008 34 sha1:2e14c0bd1a82ee7d1ee18d76881221845f47627c
obj 0000000000000004 34 sha1:87a243d2e9bdd70a84129119894b7d25479f4abc
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a1.14'
24: U SHORT_BINSTRING 'd1.14'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad48888900 " "
txn 0285cbad4d3a074c " "
user "user1.15"
description "step 1.15"
extension ""
obj 0000000000000004 34 sha1:f136bac1befa0fbd1ebd50218f8d9afe00b9b0a5
obj 0000000000000006 34 sha1:2e9ebc331bf53c095e9573de64a9b31f2b340b2f
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd1.15'
24: U SHORT_BINSTRING 'g1.15'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad4d3a074c " "
txn 0285cbad51eb8599 " "
user "user1.16"
description "step 1.16"
extension ""
obj 0000000000000006 34 sha1:778621ce5c5e97b65343b1ab0cc1a3ce5702fbc8
obj 0000000000000003 34 sha1:86adb5f06801883ba2be7776f68bd8ab46b34dd8
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.16'
24: U SHORT_BINSTRING 'b1.16'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad51eb8599 " "
txn 0285cbad569d03e6 " "
user "user1.17"
description "step 1.17"
extension ""
obj 0000000000000003 34 sha1:647be0dedecdb5b4db6ba09d53be97e1f2c27bb2
obj 0000000000000002 34 sha1:033ab1c2cfacb42e1db63ec9fac8427c700cc3cb
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b1.17'
24: U SHORT_BINSTRING 'c1.17'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad569d03e6 " "
txn 0285cbad5b4e8233 " "
user "user1.18"
description "step 1.18"
extension ""
obj 0000000000000007 34 sha1:bfe7a4966f673758259d81429e6e6b3543fbdc4e
obj 0000000000000006 34 sha1:11f0228fea479a8dacdda2351f2720d005c04b06
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c1.18'
24: U SHORT_BINSTRING 'g1.18'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad5b4e8233 " "
txn 0285cbad60000080 " "
user "user1.19"
description "step 1.19"
extension ""
obj 0000000000000006 34 sha1:b0b31eb0b48548119153628eb3c6711d959e9f9b
obj 0000000000000003 34 sha1:6f5ef8a80a64540885791a6b1e2d1a352ee91d1a
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.19'
24: U SHORT_BINSTRING 'b1.19'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad60000080 " "
txn 0285cbad64b17ecc " "
user "user1.20"
description "step 1.20"
extension ""
obj 0000000000000003 34 sha1:884af302035127df026f8b5fcd29711489d8c3e9
obj 0000000000000004 34 sha1:1c032191dab251d941e739b3703f42ed7e43b246
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b1.20'
24: U SHORT_BINSTRING 'd1.20'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad64b17ecc " "
txn 0285cbad6962fd19 " "
user "user1.21"
description "step 1.21"
extension ""
obj 0000000000000004 34 sha1:af06091cac7b507337c2876c28d3977b969f4b8a
obj 0000000000000003 34 sha1:d90118a669a7a9dbe6b779bcc61110df0cc97fd1
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd1.21'
24: U SHORT_BINSTRING 'b1.21'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad6962fd19 " "
txn 0285cbad6e147b66 " "
user "user1.22"
description "step 1.22"
extension ""
obj 0000000000000003 34 sha1:ca52325c013834a4dd9fc81caca23aef75e31fc0
obj 0000000000000006 34 sha1:cd7d6434b0aa8290342b60c85d7378cda0d19734
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b1.22'
24: U SHORT_BINSTRING 'g1.22'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad6e147b66 " "
txn 0285cbad72c5f9b3 " "
user "user1.23"
description "step 1.23"
extension ""
obj 0000000000000006 34 sha1:36b1190c8065ee5db865bf7bb11cfc1b2d1c2120
obj 0000000000000001 34 sha1:230c0adc97facea312cd09aeb825f9a6c953e029
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1.23'
24: U SHORT_BINSTRING 'f1.23'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad72c5f9b3 " "
txn 0285cbad77777800 " "
user "user1.24"
description "step 1.24"
extension ""
obj 0000000000000001 34 sha1:b35a1826cc6cb71b9ddff043f0e8f88b4d90281f
obj 0000000000000004 34 sha1:ec728760e33cbafcd21496354cbe752995dc02c4
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f1.24'
24: U SHORT_BINSTRING 'd1.24'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbad77777800 " "
txn 0285cbad7c28f64c " "
user "root1.0\nYour\nMagesty "
description "undo 1.0\nmore detailed description\n\nzzz ...\t"
extension ""
obj 0000000000000006 from 0285cbad5b4e8233
obj 0000000000000001 from 0285cbad3a740e19
txn 0285cbad7c28f64c " "
txn 0285cbad80da7499 " "
user "root1.1\nYour\nMagesty "
description "undo 1.1\nmore detailed description\n\nzzz ...\t\t"
extension ""
obj 0000000000000001 from 0285cbad3a740e19
obj 0000000000000004 from 0285cbad64b17ecc
txn 0285cbad80da7499 " "
txn 0285cbad858bf2e6 " "
user "user"
description "cyclic reference"
extension ""
obj 0000000000000008 41 sha1:ecd78bff79e5e10c04d6a14c8277d3fd5baba3a2
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
39: Q BINPERSID
40: . STOP
highest protocol among opcodes = 2
txn 0285cbad8a3d7133 " "
user ""
description "predelete 5"
description "predelete 3"
extension ""
obj 0000000000000000 213 sha1:125bc13199ab5e44db744c520533ead6b0632f00
obj 0000000000000000 213 sha1:e8e6e66cf82c7cbff72efb7bed28826296e51a01
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -681,19 +704,19 @@ obj 0000000000000000 213 sha1:125bc13199ab5e44db744c520533ead6b0632f00
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
133: Q BINPERSID
134: U SHORT_BINSTRING 'e'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
147: q BINPUT 9
149: h BINGET 6
151: \x86 TUPLE2
......@@ -721,111 +744,111 @@ obj 0000000000000000 213 sha1:125bc13199ab5e44db744c520533ead6b0632f00
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 32 sha1:1a43b55bc4a19245cce9eb5aa5ad411006f06afe
obj 0000000000000009 32 sha1:94f4c80027cdf77affb7dd9f26b634975b4619e4
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e1*'
24: U SHORT_BINSTRING 'b1*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
txn 0285cbad858bf2e6 " "
txn 0285cbad8eeeef80 " "
user "root1\nYour\nRoyal\nMagesty' \x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
description "delete 1\nalpha beta gamma'delta\"lambda\n\nqqq ..."
extension ""
obj 0000000000000005 delete
obj 0000000000000003 delete
txn 0285cbadc28f5ccc " "
txn 0285cbadcbf25966 " "
user "user2.0"
description "step 2.0"
extension ""
obj 0000000000000008 33 sha1:e14542ee70cda44a9c10581119fda69e59122d9a
obj 0000000000000004 33 sha1:aff1248f33b29d65fe0b038d7dc11db007e2690d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a2.0'
24: U SHORT_BINSTRING 'd2.0'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadc740db19 " "
txn 0285cbadd0a3d7b3 " "
user "user2.1"
description "step 2.1"
extension ""
obj 0000000000000007 33 sha1:037832808bec50c372784161a441cf46720ae028
obj 0000000000000006 33 sha1:2a2f21f6f3480aef6afd1398bec7f6bffa43109c
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.1'
24: U SHORT_BINSTRING 'g2.1'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadcbf25966 " "
txn 0285cbadd5555600 " "
user "user2.2"
description "step 2.2"
extension ""
obj 0000000000000004 33 sha1:c2b3e9c9a079045fd10f1ddfc306b8e7e75877c8
obj 0000000000000008 33 sha1:07e79c0eb72eea524bbfbce530b0671a4f90f483
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.2'
24: U SHORT_BINSTRING 'a2.2'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadd0a3d7b3 " "
txn 0285cbadda06d44c " "
user "user2.3"
description "step 2.3"
extension ""
obj 0000000000000006 33 sha1:e6236b8f0a4a2201c0c2375a8f360905108eff2d
obj 0000000000000004 33 sha1:9985268077ca849a615e15ed1b37634875749695
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g2.3'
24: U SHORT_BINSTRING 'd2.3'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadd5555600 " "
txn 0285cbaddeb85299 " "
user "user2.4"
description "step 2.4"
extension ""
obj 0000000000000008 33 sha1:c6d96f0663023f3d2c45153e80f1d9ac34e58565
obj 0000000000000007 33 sha1:55a37439e3dc66552d680833af332b8be83bfc2a
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a2.4'
24: U SHORT_BINSTRING 'e2.4'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadda06d44c " "
txn 0285cbade369d0e6 " "
user "user2.5"
description "step 2.5"
extension ""
......@@ -842,24 +865,24 @@ obj 0000000000000004 33 sha1:2e472bec634f703fc24e5192114b0c61364d9273
highest protocol among opcodes = 2
txn 0285cbaddeb85299 " "
txn 0285cbade81b4f33 " "
user "user2.6"
description "step 2.6"
extension ""
obj 0000000000000009 33 sha1:77b65f4da784e13c772516f8b64c9afa3a539718
obj 0000000000000001 33 sha1:e0148787fb3ffe52ef3ba85ad82b6b8afa47e20f
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2.6'
24: U SHORT_BINSTRING 'f2.6'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbade369d0e6 " "
txn 0285cbadeccccd80 " "
user "user2.7"
description "step 2.7"
extension ""
......@@ -876,79 +899,79 @@ obj 0000000000000004 33 sha1:9472357211e402a8dfcda8b72f7ef98c2b8d8b20
highest protocol among opcodes = 2
txn 0285cbade81b4f33 " "
txn 0285cbadf17e4bcc " "
user "user2.8"
description "step 2.8"
extension ""
obj 0000000000000001 33 sha1:f2a087272b15748e83ccd0da151e6b780b5e84cf
obj 0000000000000006 33 sha1:d57709ac596de41959e36e1dd6902a853213267e
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f2.8'
24: U SHORT_BINSTRING 'g2.8'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadeccccd80 " "
txn 0285cbadf62fca19 " "
user "user2.9"
description "step 2.9"
extension ""
obj 0000000000000004 33 sha1:131b4a39325003afe371ebb5ee24a5bb360fdc73
obj 0000000000000007 33 sha1:f1d87ba386f57291ecc925020a05df06caedb278
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.9'
24: U SHORT_BINSTRING 'e2.9'
30: q BINPUT 2
32: . STOP
highest protocol among opcodes = 2
txn 0285cbadf17e4bcc " "
txn 0285cbadfae14866 " "
user "user2.10"
description "step 2.10"
extension ""
obj 0000000000000006 34 sha1:d24bd1f8a061f39190aae0e7a96d711617591e01
obj 0000000000000007 34 sha1:5118b5ada1ab6ce6852eef392212ea9300ac6f06
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g2.10'
24: U SHORT_BINSTRING 'e2.10'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbadf62fca19 " "
txn 0285cbadff92c6b3 " "
user "user2.11"
description "step 2.11"
extension ""
obj 0000000000000009 34 sha1:a37845561ff3d44ed0d6fb5b6369e5531c9586c4
obj 0000000000000004 34 sha1:14e8b27b3bc8bf5b4d86ca162cc1c912a29a1c05
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2.11'
24: U SHORT_BINSTRING 'd2.11'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbadfae14866 " "
txn 0285cbae04444500 " "
user "user2.12"
description "step 2.12"
extension ""
obj 0000000000000009 34 sha1:60c6854b7737f5bbc7569c8b6a694910ed370ccc
obj 0000000000000007 34 sha1:60c6854b7737f5bbc7569c8b6a694910ed370ccc
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -961,28 +984,28 @@ obj 0000000000000009 34 sha1:60c6854b7737f5bbc7569c8b6a694910ed370ccc
highest protocol among opcodes = 2
txn 0285cbadff92c6b3 " "
txn 0285cbae08f5c34c " "
user "user2.13"
description "step 2.13"
extension ""
obj 0000000000000004 34 sha1:4b28f9e97ff4f61f3dfba30b9f7aceb4913215ce
obj 0000000000000002 34 sha1:5d89801d288c5238f605784e7c71b2d61598d362
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.13'
24: U SHORT_BINSTRING 'c2.13'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae04444500 " "
txn 0285cbae0da74199 " "
user "user2.14"
description "step 2.14"
extension ""
obj 0000000000000009 34 sha1:0a27d685d77313b1a2b7c3478888a98798847077
obj 0000000000000007 34 sha1:0a27d685d77313b1a2b7c3478888a98798847077
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -995,11 +1018,11 @@ obj 0000000000000009 34 sha1:0a27d685d77313b1a2b7c3478888a98798847077
highest protocol among opcodes = 2
txn 0285cbae08f5c34c " "
txn 0285cbae1258bfe6 " "
user "user2.15"
description "step 2.15"
extension ""
obj 0000000000000007 34 sha1:ae3975f91e13b4ec60e6810006be027149642926
obj 0000000000000002 34 sha1:ae3975f91e13b4ec60e6810006be027149642926
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1012,176 +1035,196 @@ obj 0000000000000007 34 sha1:ae3975f91e13b4ec60e6810006be027149642926
highest protocol among opcodes = 2
txn 0285cbae0da74199 " "
txn 0285cbae170a3e33 " "
user "user2.16"
description "step 2.16"
extension ""
obj 0000000000000009 34 sha1:21c9675d1a7c6152bbd8d5d7102a0ba926cd6325
obj 0000000000000009 34 sha1:0f253572ebd02bdd419b287ac75113bc8213ef83
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2.16'
24: U SHORT_BINSTRING 'b2.16'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae1258bfe6 " "
txn 0285cbae1bbbbc80 " "
user "user2.17"
description "step 2.17"
extension ""
obj 0000000000000007 34 sha1:2840f7eadf2b100a429e5a358f9656985827612b
obj 0000000000000009 34 sha1:9961f82b3f01204f80efbb3b62a2b98d9d3202fa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'c2.17'
24: U SHORT_BINSTRING 'b2.17'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae170a3e33 " "
txn 0285cbae206d3acc " "
user "user2.18"
description "step 2.18"
extension ""
obj 0000000000000003 34 sha1:428f7ab13e02b7facbd1e4ddbcc1833ace6250d0
obj 0000000000000007 34 sha1:00cce52a596916011d8935c4e53dcb04510af2d9
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b2.18'
24: U SHORT_BINSTRING 'e2.18'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae1bbbbc80 " "
txn 0285cbae251eb919 " "
user "user2.19"
description "step 2.19"
extension ""
obj 0000000000000003 34 sha1:c1b57432c9e2fad36fe4a1efaa0445851865b775
obj 0000000000000007 34 sha1:523ec17c6d74016e3464d52bb7c7b7baa4b82a20
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b2.19'
24: U SHORT_BINSTRING 'e2.19'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae206d3acc " "
txn 0285cbae29d03766 " "
user "user2.20"
description "step 2.20"
extension ""
obj 0000000000000009 34 sha1:5f1b9fc7ba1147cdfbe3a0a74f988bf355cfc3b4
obj 0000000000000004 34 sha1:9cf3a2031b4e9af93e7fd40e58dbceedc753b7d6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2.20'
24: U SHORT_BINSTRING 'd2.20'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae251eb919 " "
txn 0285cbae2e81b5b3 " "
user "user2.21"
description "step 2.21"
extension ""
obj 0000000000000009 34 sha1:27744ea516240e0d00be75f26af9698f842bdda5
obj 0000000000000008 34 sha1:330a069412b6cfb00a43da001b600b7f6b2380e6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2.21'
24: U SHORT_BINSTRING 'a2.21'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae29d03766 " "
txn 0285cbae33333400 " "
user "user2.22"
description "step 2.22"
extension ""
obj 0000000000000004 34 sha1:f3c8fd6739f600592fdaaf3ef1f7dbf788306cfc
obj 0000000000000001 34 sha1:bf2d0d8f4cd81e1592001eb3c265a22894cdb51b
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'd2.22'
24: U SHORT_BINSTRING 'f2.22'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae2e81b5b3 " "
txn 0285cbae37e4b24c " "
user "user2.23"
description "step 2.23"
extension ""
obj 0000000000000008 34 sha1:6cc69da894b91f857e89146dcd6e3edd08eea0ed
obj 0000000000000006 34 sha1:c47e0f1415e14f41016809ac3a4323745ad79170
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'a2.23'
24: U SHORT_BINSTRING 'g2.23'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae33333400 " "
txn 0285cbae3c963099 " "
user "user2.24"
description "step 2.24"
extension ""
obj 0000000000000001 34 sha1:49a11733c8365f1adbc76bff48a1d3b689618556
obj 0000000000000006 34 sha1:2030a0ccc56595b70aac033e70c899060dbfb0f9
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'f2.24'
24: U SHORT_BINSTRING 'g2.24'
31: q BINPUT 2
33: . STOP
highest protocol among opcodes = 2
txn 0285cbae37e4b24c " "
txn 0285cbae45f92d33 " "
user "root2.0\nYour\nMagesty "
description "undo 2.0\nmore detailed description\n\nzzz ...\t\t"
extension ""
obj 0000000000000008 from 0285cbadd5555600
obj 0000000000000001 from 0285cbade81b4f33
txn 0285cbae3c963099 " "
txn 0285cbae4aaaab80 " "
user "root2.1\nYour\nMagesty "
description "undo 2.1\nmore detailed description\n\nzzz ...\t\t\t"
extension ""
obj 0000000000000001 from 0285cbade81b4f33
obj 0000000000000006 from 0285cbae37e4b24c
txn 0285cbae4f5c29cc " "
user "user"
description "cyclic reference"
extension ""
obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
39: Q BINPERSID
40: . STOP
highest protocol among opcodes = 2
txn 0285cbae4147aee6 " "
txn 0285cbae540da819 " "
user ""
description "predelete 1"
extension ""
obj 0000000000000000 213 sha1:cf71305f1094cda7b0fef253960035bb6e5b48b4
obj 0000000000000000 213 sha1:ae6936a4e7c9f3f748d8ecf28186e259897651dd
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -1203,19 +1246,19 @@ obj 0000000000000000 213 sha1:cf71305f1094cda7b0fef253960035bb6e5b48b4
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
133: Q BINPERSID
134: U SHORT_BINSTRING 'e'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
147: q BINPUT 9
149: h BINGET 6
151: \x86 TUPLE2
......@@ -1256,7 +1299,7 @@ obj 000000000000000a 32 sha1:da5c7f574b5e6a64d0d58314a6939ef761266d41
highest protocol among opcodes = 2
txn 0285cbae45f92d33 " "
txn 0285cbae58bf2666 " "
user "root2\nYour\nRoyal\nMagesty' \x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
description "delete 2\nalpha beta gamma'delta\"lambda\n\nqqq ..."
extension ""
......
# -*- coding: utf-8 -*-
# Copyright (C) 2016-2022 Nexedi SA and Contributors.
# Copyright (C) 2016-2024 Nexedi SA and Contributors.
# Kirill Smelkov <kirr@nexedi.com>
# Jérome Perrin <jerome@nexedi.com>
#
......@@ -161,10 +161,12 @@ def zodbdump(stor, tidmin, tidmax, hashonly=False, pretty='raw', out=asbinstream
out.write(obj.data)
elif pretty == 'zpickledis':
# https://github.com/zopefoundation/ZODB/blob/5.6.0-55-g1226c9d35/src/ZODB/serialize.py#L24-L29
# https://github.com/zopefoundation/ZODB/blob/5.8.1-0-g72cebe6bc/src/ZODB/serialize.py#L436-L443
dataf = BytesIO(obj.data)
disf = StringIO()
pickletools.dis(dataf, disf) # class
pickletools.dis(dataf, disf) # state
memo = {} # memo is shared in between class and state
pickletools.dis(dataf, disf, memo) # class
pickletools.dis(dataf, disf, memo) # state
out.write(b(indent(disf.getvalue(), " ")))
extra = dataf.read()
if len(extra) > 0:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment