@@ -511,66 +511,53 @@ async def inspectVariables(self, message):
511511
512512 async def richInspectVariables (self , message ):
513513 reply = {
514- ' type' : ' response' ,
515- ' sequence_seq' : message [' seq' ],
516- ' success' : False ,
517- ' command' : message [' command' ]
514+ " type" : " response" ,
515+ " sequence_seq" : message [" seq" ],
516+ " success" : False ,
517+ " command" : message [" command" ],
518518 }
519-
520- var_name = message [' arguments' ][ ' variableName' ]
519+
520+ var_name = message [" arguments" ][ " variableName" ]
521521 valid_name = str .isidentifier (var_name )
522522 if not valid_name :
523- reply ['body' ] = {
524- 'data' : {},
525- 'metadata' : {}
526- }
527- if var_name == 'special variables' or var_name == 'function variables' :
528- reply ['success' ] = True
523+ reply ["body" ] = {"data" : {}, "metadata" : {}}
524+ if var_name == "special variables" or var_name == "function variables" :
525+ reply ["success" ] = True
529526 return reply
530527
531- var_repr_data = var_name + '_repr_data'
532- var_repr_metadata = var_name + '_repr_metadata'
533-
534- if not self .breakpoint_list :
528+ repr_data = {}
529+ repr_metadata = {}
530+ if not self .stopped_threads :
535531 # The code did not hit a breakpoint, we use the intepreter
536532 # to get the rich representation of the variable
537- var_repr_data , var_repr_metadata = get_ipython ().display_formatter .format (var_name )
533+ result = get_ipython ().user_expressions ({var_name : var_name })[var_name ]
534+ if result .get ("status" , "error" ) == "ok" :
535+ repr_data = result .get ("data" , {})
536+ repr_metadata = result .get ("metadata" , {})
538537 else :
539538 # The code has stopped on a breakpoint, we use the setExpression
540539 # request to get the rich representation of the variable
541- lvalue = var_repr_data + ',' + var_repr_metadata
542- code = 'get_ipython().display_formatter.format(' + var_name + ')'
543- frame_id = message ['arguments' ]['frameId' ]
544- seq = message ['seq' ]
545- request = {
546- 'type' : 'request' ,
547- 'command' : 'setExpression' ,
548- 'seq' : seq + 1 ,
549- 'arguments' : {
550- 'expression' : lvalue ,
551- 'value' : code ,
552- 'frameId' : frame_id
540+ code = "get_ipython().display_formatter.format(" + var_name + ")"
541+ frame_id = message ["arguments" ]["frameId" ]
542+ seq = message ["seq" ]
543+ reply = await self ._forward_message (
544+ {
545+ "type" : "request" ,
546+ "command" : "evaluate" ,
547+ "seq" : seq + 1 ,
548+ "arguments" : {"expression" : code , "frameId" : frame_id },
553549 }
554- }
555- await self ._forward_message (request )
550+ )
551+ if reply ["success" ]:
552+ repr_data , repr_metadata = eval (reply ["body" ]["result" ], {}, {})
556553
557- repr_data = globals ()[var_repr_data ]
558- repr_metadata = globals ()[var_repr_metadata ]
559554 body = {
560- ' data' : {} ,
561- ' metadata' : {}
555+ " data" : repr_data ,
556+ " metadata" : {k : v for k , v in repr_metadata . items () if k in repr_data },
562557 }
563558
564- for key , value in repr_data .items ():
565- body ['data' ]['key' ] = value
566- if key in repr_metadata :
567- body ['metadata' ][key ] = repr_metadata [key ]
568-
569- globals ().pop (var_repr_data )
570- globals ().pop (var_repr_metadata )
571-
572- reply ['body' ] = body
573- reply ['success' ] = True
559+ reply ["body" ] = body
560+ reply ["success" ] = True
574561 return reply
575562
576563 async def process_request (self , message ):
0 commit comments