Skip to content

Commit 03f566a

Browse files
committed
got bytearrays working, hopefully
1 parent 50a74d2 commit 03f566a

4 files changed

Lines changed: 127 additions & 1 deletion

File tree

v3/pg_encoder.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,14 @@ def encode(self, dat, get_parent):
318318
m = classRE.match(typeStr)
319319

320320
assert m, typ
321-
new_obj.extend([m.group(1), str(dat)])
321+
322+
if is_python3:
323+
encoded_dat = str(dat)
324+
else:
325+
# ugh, for bytearray() in Python 2, str() returns
326+
# non-JSON-serializable characters, so need to decode:
327+
encoded_dat = str(dat).decode('utf-8', 'replace')
328+
new_obj.extend([m.group(1), encoded_dat])
322329

323330
return ret
324331

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"code": "# reported as an error in server logs\nhex_string = \"deadbeef\"\nhex_data = hex_string.decode(\"hex\")\nnew = bytearray(hex_data)\n",
3+
"trace": [
4+
{
5+
"ordered_globals": [],
6+
"stdout": "",
7+
"func_name": "<module>",
8+
"stack_to_render": [],
9+
"globals": {},
10+
"heap": {},
11+
"line": 2,
12+
"event": "step_line"
13+
},
14+
{
15+
"ordered_globals": [
16+
"hex_string"
17+
],
18+
"stdout": "",
19+
"func_name": "<module>",
20+
"stack_to_render": [],
21+
"globals": {
22+
"hex_string": "deadbeef"
23+
},
24+
"heap": {},
25+
"line": 3,
26+
"event": "step_line"
27+
},
28+
{
29+
"ordered_globals": [
30+
"hex_string",
31+
"hex_data"
32+
],
33+
"stdout": "",
34+
"func_name": "<module>",
35+
"stack_to_render": [],
36+
"globals": {
37+
"hex_data": "\u07ad\ufffd\ufffd",
38+
"hex_string": "deadbeef"
39+
},
40+
"heap": {},
41+
"line": 4,
42+
"event": "step_line"
43+
},
44+
{
45+
"ordered_globals": [
46+
"hex_string",
47+
"hex_data",
48+
"new"
49+
],
50+
"stdout": "",
51+
"func_name": "<module>",
52+
"stack_to_render": [],
53+
"globals": {
54+
"new": [
55+
"REF",
56+
1
57+
],
58+
"hex_data": "\u07ad\ufffd\ufffd",
59+
"hex_string": "deadbeef"
60+
},
61+
"heap": {
62+
"1": [
63+
"bytearray",
64+
"\u07ad\ufffd\ufffd"
65+
]
66+
},
67+
"line": 4,
68+
"event": "return"
69+
}
70+
]
71+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"code": "# reported as an error in server logs\nhex_string = \"deadbeef\"\nhex_data = hex_string.decode(\"hex\")\nnew = bytearray(hex_data)\n",
3+
"trace": [
4+
{
5+
"ordered_globals": [],
6+
"stdout": "",
7+
"func_name": "<module>",
8+
"stack_to_render": [],
9+
"globals": {},
10+
"heap": {},
11+
"line": 2,
12+
"event": "step_line"
13+
},
14+
{
15+
"ordered_globals": [
16+
"hex_string"
17+
],
18+
"stdout": "",
19+
"func_name": "<module>",
20+
"stack_to_render": [],
21+
"globals": {
22+
"hex_string": "deadbeef"
23+
},
24+
"heap": {},
25+
"line": 3,
26+
"event": "step_line"
27+
},
28+
{
29+
"ordered_globals": [
30+
"hex_string"
31+
],
32+
"stdout": "",
33+
"exception_msg": "AttributeError: 'str' object has no attribute 'decode'",
34+
"func_name": "<module>",
35+
"stack_to_render": [],
36+
"globals": {
37+
"hex_string": "deadbeef"
38+
},
39+
"heap": {},
40+
"line": 3,
41+
"event": "exception"
42+
}
43+
]
44+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# reported as an error in server logs
2+
hex_string = "deadbeef"
3+
hex_data = hex_string.decode("hex")
4+
new = bytearray(hex_data)

0 commit comments

Comments
 (0)