File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -219,7 +219,16 @@ def encode(self, dat):
219219 def encode_class_or_instance (self , dat , new_obj ):
220220 """Encode dat as a class or instance."""
221221 if is_instance (dat ):
222- class_name = get_name (dat .__class__ )
222+ if hasattr (dat , '__class__' ):
223+ # common case ...
224+ class_name = get_name (dat .__class__ )
225+ else :
226+ # super special case for something like
227+ # "from datetime import datetime_CAPI" in Python 3.2,
228+ # which is some weird 'PyCapsule' type ...
229+ # http://docs.python.org/release/3.1.5/c-api/capsule.html
230+ class_name = get_name (type (dat ))
231+
223232 new_obj .extend (['INSTANCE' , class_name ])
224233 # don't traverse inside modules, or else risk EXPLODING the visualization
225234 if class_name == 'module' :
Original file line number Diff line number Diff line change 1+ {
2+ "code": "# importing some C-ish module ...\n# make sure this doesn't crash in Python 2 or 3\nfrom datetime import datetime_CAPI\n",
3+ "trace": [
4+ {
5+ "ordered_globals": [],
6+ "stdout": "",
7+ "func_name": "<module>",
8+ "stack_to_render": [],
9+ "globals": {},
10+ "heap": {},
11+ "line": 3,
12+ "event": "step_line"
13+ },
14+ {
15+ "ordered_globals": [
16+ "datetime_CAPI"
17+ ],
18+ "stdout": "",
19+ "func_name": "<module>",
20+ "stack_to_render": [],
21+ "globals": {
22+ "datetime_CAPI": [
23+ "REF",
24+ 1
25+ ]
26+ },
27+ "heap": {
28+ "1": [
29+ "PyCapsule",
30+ "<capsule object \"datetime.datetime_CAPI\" at 0xADDR>"
31+ ]
32+ },
33+ "line": 3,
34+ "event": "return"
35+ }
36+ ]
37+ }
Original file line number Diff line number Diff line change 1+ {
2+ "code": "# importing some C-ish module ...\n# make sure this doesn't crash in Python 2 or 3\nfrom datetime import datetime_CAPI\n",
3+ "trace": [
4+ {
5+ "ordered_globals": [],
6+ "stdout": "",
7+ "func_name": "<module>",
8+ "stack_to_render": [],
9+ "globals": {},
10+ "heap": {},
11+ "line": 3,
12+ "event": "step_line"
13+ },
14+ {
15+ "ordered_globals": [
16+ "datetime_CAPI"
17+ ],
18+ "stdout": "",
19+ "func_name": "<module>",
20+ "stack_to_render": [],
21+ "globals": {
22+ "datetime_CAPI": [
23+ "REF",
24+ 1
25+ ]
26+ },
27+ "heap": {
28+ "1": [
29+ "INSTANCE",
30+ "PyCapsule"
31+ ]
32+ },
33+ "line": 3,
34+ "event": "return"
35+ }
36+ ]
37+ }
Original file line number Diff line number Diff line change 1+ # importing some C-ish module ...
2+ # make sure this doesn't crash in Python 2 or 3
3+ from datetime import datetime_CAPI
You can’t perform that action at this time.
0 commit comments