rL i@HdZddlmZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl mZddlmZddlmZmZmZd d lmZmZmZd d lmZmZd Zd dddddddZGddeZGddeZGddeZGddZ ejBGddeZ"y)z,Interactive figures in the IPython notebook.) b64encodeN)Comm)display JavascriptHTML)is_interactiveGcf)_Backend CloseEventNavigationToolbar2)FigureCanvasWebAggCoreFigureManagerWebAggNavigationToolbar2WebAgg) TimerTornado TimerAsynciocvtjDcgc]R}dj|jjj xsd|j |jT}}ts+|jdttjdj|Scc}w)z Return a string showing the figure and connection status for the backend. This is intended as a diagnostic tool, and not for general use. z{fig} - {socket}zFigure )figsocketzFigures pending show:  ) r get_all_fig_managersformatcanvasfigure get_labelnum web_socketsrappendlenfigsjoin)managerresults g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/backends/backend_nbagg.pyconnection_infor&s//1   !!&&002,gkk]+&& " (F   .s388}o>? 99V sAB6z fa fa-homezfa fa-arrow-leftzfa fa-arrow-rightzfa fa-square-oz fa fa-arrowszfa fa-floppy-o)homebackforward zoom_to_rectmovedownloadNc eZdZejdzDcgc]\}}}}|t vr ||t ||fc}}}}}}Zycc}}}}}}w) NavigationIPy))Downloadz Download plotr,r,N)__name__ __module__ __qualname__r toolitems_FONT_AWESOME_CLASSES).0text tooltip_text image_filename_of_methodr4s000000r%r.r.5sZ (11MN99CT<^"77  ' 3^E9I9s!Ar.ceZdZexZZfdZedZdZ dZ dZ e dZ ed fd ZdZd Zd Zd ZxZS) FigureManagerNbAggc4d|_t| ||y)NF)_shownsuper__init__)selfrr __class__s r%r?zFigureManagerNbAgg.__init__Cs  %c||||tr jjfd}jd|S)NcRjtjyN)mpl_disconnectr destroy)eventrcidr#s r%rGz6FigureManagerNbAgg.create_with_canvas..destroyOs  ! !# & KK rB close_event)rshow draw_idle mpl_connect)cls canvas_classrrrGrrIr#s @@@r%create_with_canvasz%FigureManagerNbAgg.create_with_canvasGsRf%fc"   LLN     !  8rBcPtttjyrE)rrr;get_javascriptr@s r% display_jszFigureManagerNbAgg.display_jsVs  -<<>?@rBcp|js!|j|jn|jj d|_t |dr%|jj |jts-ddl m }|jj|jdyy)NT_cidgcfrr )r=rT _create_commrrLhasattrrFrVrmatplotlib._pylab_helpersr r!popr)r@r s r%rKzFigureManagerNbAgg.show\s|{{ OO      KK ! ! # 4 # KK & &t|| 4 5 HHLL4 ( rBc2d|_|jy)zJ A special method to re-show the figure in the notebook. FN)r=rKrSs r%reshowzFigureManagerNbAgg.reshowms   rBc,t|jSrE)boolrrSs r% connectedzFigureManagerNbAgg.connectedusD$$%%rBc|tj}n|}t| ||j t j tjdz jd||jSy)N)streamzweb_backend/js/nbagg_mpl.jszutf-8)encoding) ioStringIOr>rRwritepathlibPath__file__parent read_textgetvalue)rNraoutputrAs r%rRz!FigureManagerNbAgg.get_javascriptysr >[[]FF f- gll8,3356ii1 3 >??$ $ rBc>t|}|j||SrE) CommSocketadd_web_socketr@comms r%rWzFigureManagerNbAgg._create_comms$ D! rBc|jdt|jD]}|j|j y)Nclose) _send_eventlistron_closeclearup_closedrps r%rGzFigureManagerNbAgg.destroys? !))* D MMO  rBc|jDchc]}|jr|c}|_t|jdk(r%td|jj yycc}w)zClear up any closed Comms.rrJN)ris_openr r r_process)r@rs r%rwz!FigureManagerNbAgg.clearup_closedsb151A1A1v%~~/#1 t A % }dkk 2 ; ; = &1sA.c~|jDchc]}|jj|k7r|c}|_ycc}wrE)rrqcomm_id)r@r|rs r% remove_commzFigureManagerNbAgg.remove_comms9151A1A?v%{{22g=#??s":rE)r0r1r2r._toolbar2_class ToolbarClsr? classmethodrPrTrKr\propertyr_rRrWrGrwr} __classcell__)rAs@r%r;r;@sr#00Oj&  A )"&& % % >?rBr;ceZdZeZy)FigureCanvasNbAggN)r0r1r2r; manager_classrBr%rrs&MrBrc4eZdZdZdZdZdZdZdZdZ y) rnaL Manages the Comm connection between IPython and the browser (client). Comms are 2 way, with the CommSocket being able to publish a message via the send_json method, and handle a message with on_message. On the JS side figure.send_message and figure.ws.onmessage do the sending and receiving respectively. cd__ttj_t t djz tddji_jjjjd_ fd}jj|y#t$r}td|d}~wwxYw)Nz
matplotlibid)datazTUnable to create an IPython notebook Comm instance. Are you in the IPython notebook?Fcbd_j|ddjy)NTcontentr|) _ext_closer}rw) close_messager#r@s r% _on_closez&CommSocket.__init__.._on_closes."DO    i 8 C D  " " $rB)supports_binaryr#struuiduuid4rrrrqAttributeError RuntimeErroron_msg on_messagerrv)r@r#errrs`` r%r?zCommSocket.__init__s#  %  (499456 5\tyy0ABDI ),, % 9% 5 +,14 5 5sC C' C""C'cL|jxs|jj SrE)rrq_closedrSs r%ryzCommSocket.is_opensOO8tyy'8'899rBcz|jr |jjyy#t$rYywxYwrE)ryrqrsKeyErrorrSs r%rvzCommSocket.on_closes9 <<>  !   s . ::cd|jjdtj|iy)Nr)rqsendjsondumps)r@rs r% send_jsonzCommSocket.send_jsons   7 345rBc|jr!|jjddi|gyt|j d}d|}|jjd|iy)Nblobz image/png)buffersasciizdata:image/png;base64,r)rrqrrdecode)r@rrdata_uris r% send_binaryzCommSocket.send_binarys]    IINNFK04&N AT?))'2D/v6H IINNFH- .rBctj|dd}|ddk(r+|j|jj y|ddk(r |d|_y|jj |y)Nrrtypeclosingrvalue)rloadsrvr#rwr handle_json)r@messages r%rzCommSocket.on_messagesm **WY/78 6?i ' MMO LL ' ' ) V_ 1 1#*7#3D LL $ $W -rBN) r0r1r2__doc__r?ryrvrrrrrBr%rnrns%&2:6/ .rBrnceZdZeZeZy) _BackendNbAggN)r0r1r2r FigureCanvasr; FigureManagerrrBr%rrs $L&MrBr)#rbase64rrcrrfripykernel.commrIPython.displayrrrrrrYr matplotlib.backend_basesr r r backend_webagg_corerrrrrr&r4r.r;rrnexportrrrBr%rs2   55%)MMKK &  "$  9,9\?,\?~'.'J.J.Z 'H''rB