Ë
    ¨eh@  ã                   óH  — d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
mZmZ ddlmZ ddlmZ ddlmZmZmZ d	d
lmZmZmZ d	dlmZmZ d„ ZddddddddœZ G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d«      Z ejB                   G d„ de«      «       Z"y)z,Interactive figures in the IPython notebook.é    )Ú	b64encodeN)ÚComm)ÚdisplayÚ
JavascriptÚHTML)Úis_interactive©ÚGcf)Ú_BackendÚ
CloseEventÚNavigationToolbar2é   )ÚFigureCanvasWebAggCoreÚFigureManagerWebAggÚNavigationToolbar2WebAgg)ÚTimerTornadoÚTimerAsyncioc                  óv  — t        j                  «       D � cg c]R  } dj                  | j                  j                  j                  «       xs d| j                  › �| j                  ¬«      ‘ŒT }} t        «       s+|j                  dt        t         j                  «      › �«       dj                  |«      S c c} 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}zFigure )ÚfigÚsocketzFigures pending show: ú
)r
   Úget_all_fig_managersÚformatÚcanvasÚfigureÚ	get_labelÚnumÚweb_socketsr   ÚappendÚlenÚfigsÚjoin)ÚmanagerÚresults     ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/backends/backend_nbagg.pyÚconnection_infor&      s¦   € ô ×/Ñ/Ó1öð
 ð	 	×!Ñ!Ø—‘×&Ñ&×0Ñ0Ó2ò ,Ø˜gŸk™k˜]Ð+Ø×&Ñ&ð 	"õ 	(ð€Fð ô ÔØ�‰Ð.¬s´3·8±8«}¨oÐ>Ô?Ø�9‰9�VÓÐùòs   —AB6z
fa fa-homezfa fa-arrow-leftzfa fa-arrow-rightzfa fa-square-ozfa fa-arrowszfa fa-floppy-o)ÚhomeÚbackÚforwardÚzoom_to_rectÚmoveÚdownloadNc                   óž   — e Zd Zej                  dz   D � �����cg c]  \  }}}}|t
        v r||t
        |   |f‘Œ c}}}}}} Zyc c}}}}}} w )ÚNavigationIPy))ÚDownloadzDownload plotr,   r,   N)Ú__name__Ú
__module__Ú__qualname__r   Ú	toolitemsÚ_FONT_AWESOME_CLASSES)Ú.0ÚtextÚtooltip_textÚ
image_fileÚname_of_methodr4   s   000000r%   r.   r.   5   sZ   „ ð (×1Ñ1ØMñN÷9ó 9áC�T˜<¨°^ð Ô"7Ñ7ð ˜Ü'¨
Ñ3°^òE÷ 9�Iù÷ 9s   ›!Ar.   c                   ó†   ‡ — e Zd ZexZZˆ fd„Zed„ «       Zd„ Z	d„ Z
d„ Zed„ «       Zedˆ fd„	«       Zd„ Zd	„ Zd
„ Zd„ Zˆ xZS )ÚFigureManagerNbAggc                 ó4   •— d| _         t        ‰| �	  ||«       y )NF)Ú_shownÚsuperÚ__init__)Úselfr   r   Ú	__class__s      €r%   r?   zFigureManagerNbAgg.__init__C   s   ø€ ØˆŒÜ‰Ñ˜ Õ%ó    c                 ó´   ‡‡‡—  ||«      Š | ‰|«      Št        «       r ‰j                  «        ‰j                  «        ˆˆˆfd„}‰j                  d|«      Š‰S )Nc                 óR   •— ‰j                  ‰«       t        j                  ‰«       y ©N)Úmpl_disconnectr
   Údestroy)Úeventr   Úcidr#   s    €€€r%   rG   z6FigureManagerNbAgg.create_with_canvas.<locals>.destroyO   s   ø€ Ø×!Ñ! #Ô&Ü�K‰K˜Õ rB   Úclose_event)r   ÚshowÚ	draw_idleÚmpl_connect)ÚclsÚcanvas_classr   r   rG   r   rI   r#   s        @@@r%   Úcreate_with_canvasz%FigureManagerNbAgg.create_with_canvasG   sR   ú€ á˜fÓ%ˆÙ�f˜cÓ"ˆÜÔØ�L‰LŒNØ×ÑÔö	!ð × Ñ  °Ó8ˆØˆrB   c                 óP   — t        t        t        j                  «       «      «       y rE   )r   r   r;   Úget_javascript©r@   s    r%   Ú
display_jszFigureManagerNbAgg.display_jsV   s   € ô 	”
Ô-×<Ñ<Ó>Ó?Õ@rB   c                 óp  — | j                   s!| j                  «        | j                  «        n| j                  j	                  «        d| _         t        | d«      r%| j                  j                  | j                  «       t        «       s-ddl	m
} |j                  j                  | j                  d «       y y )NTÚ_cidgcfr   r	   )r=   rT   Ú_create_commr   rL   ÚhasattrrF   rV   r   Úmatplotlib._pylab_helpersr
   r!   Úpopr   )r@   r
   s     r%   rK   zFigureManagerNbAgg.show\   s|   € Ø�{Š{Ø�O‰OÔØ×ÑÕà�K‰K×!Ñ!Ô#ØˆŒô
 �4˜Ô#Ø�K‰K×&Ñ& t§|¡|Ô4ÜÔÝ5Ø�H‰H�L‰L˜Ÿ™ 4Õ(ð  rB   c                 ó2   — d| _         | j                  «        y)zJ
        A special method to re-show the figure in the notebook.

        FN)r=   rK   rS   s    r%   ÚreshowzFigureManagerNbAgg.reshowm   s   € ð
 ˆŒØ�	‰	�rB   c                 ó,   — t        | j                  «      S rE   )Úboolr   rS   s    r%   Ú	connectedzFigureManagerNbAgg.connectedu   s   € ä�D×$Ñ$Ó%Ð%rB   c                 ó  •— |€t        j                  «       }n|}t        ‰| �  |¬«       |j	                  t        j                  t        «      j                  dz  j                  d¬«      «       |€|j                  «       S y )N)Ústreamzweb_backend/js/nbagg_mpl.jszutf-8)Úencoding)ÚioÚStringIOr>   rR   ÚwriteÚpathlibÚPathÚ__file__ÚparentÚ	read_textÚgetvalue)rN   ra   ÚoutputrA   s      €r%   rR   z!FigureManagerNbAgg.get_javascripty   sr   ø€ àˆ>Ü—[‘[“]‰FàˆFÜ‰Ñ fÐÔ-Ø�‰”g—l‘l¤8Ó,×3Ñ3Ø5ñ6ç‘i¨�iÓ1ô	3ð ˆ>Ø—?‘?Ó$Ð$ð rB   c                 ó>   — t        | «      }| j                  |«       |S rE   )Ú
CommSocketÚadd_web_socket©r@   Úcomms     r%   rW   zFigureManagerNbAgg._create_comm†   s   € Ü˜$ÓˆØ×Ñ˜DÔ!ØˆrB   c                 óš   — | j                  d«       t        | j                  «      D ]  }|j                  «        Œ | j	                  «        y )NÚclose)Ú_send_eventÚlistr   Úon_closeÚclearup_closedrp   s     r%   rG   zFigureManagerNbAgg.destroy‹   s?   € Ø×Ñ˜Ô!ä˜×)Ñ)Ó*ò 	ˆDØ�M‰M�Oð	à×ÑÕrB   c                 óæ   — | j                   D �ch c]  }|j                  «       r|’Œ c}| _         t        | j                   «      dk(  r%t        d| j                  «      j                  «        yyc c}w )zClear up any closed Comms.r   rJ   N)r   Úis_openr    r   r   Ú_process)r@   r   s     r%   rw   z!FigureManagerNbAgg.clearup_closed’   sb   € à15×1AÑ1Aö 1 vØ%Ÿ~™~Ô/ò #ò 1ˆÔô ˆt×ÑÓ  AÒ%Ü�} d§k¡kÓ2×;Ñ;Õ=ð &ùò1s   �A.c                 ó~   — | j                   D �ch c]  }|j                  j                  |k7  r|’Œ c}| _         y c c}w rE   )r   rq   Úcomm_id)r@   r|   r   s      r%   Úremove_commzFigureManagerNbAgg.remove_commš   s9   € Ø15×1AÑ1Aö ? vØ%Ÿ{™{×2Ñ2°gÒ=ò #ò ?ˆÕùò ?s   �":rE   )r0   r1   r2   r.   Ú_toolbar2_classÚ
ToolbarClsr?   ÚclassmethodrP   rT   rK   r\   Úpropertyr_   rR   rW   rG   rw   r}   Ú__classcell__)rA   s   @r%   r;   r;   @   sr   ø„ Ø#0Ð0€O�jô&ð ñó ðòAò)ò"ð ñ&ó ð&ð ô
%ó ð
%òò
ò>ö?rB   r;   c                   ó   — e Zd ZeZy)ÚFigureCanvasNbAggN)r0   r1   r2   r;   Úmanager_class© rB   r%   r„   r„   Ÿ   s   „ Ø&�MrB   r„   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	rn   aL  
    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.

    c                 óÔ  ‡ ‡— d ‰ _         ‰‰ _        t        t        j                  «       «      ‰ _        t        t        d‰ j                  z  «      «       	 t        dd‰ j                  i¬«      ‰ _        ‰ j                  j                  ‰ j                  «       ‰ j                  Šd‰ _        ˆˆ fd„}‰ j                  j                  |«       y # t        $ r}t        d«      |‚d }~ww xY w)Nz<div id=%r></div>Ú
matplotlibÚid)ÚdatazTUnable to create an IPython notebook Comm instance. Are you in the IPython notebook?Fc                 ób   •— d‰_         ‰j                  | d   d   «       ‰j                  «        y )NTÚcontentr|   )Ú
_ext_closer}   rw   )Úclose_messager#   r@   s    €€r%   Ú	_on_closez&CommSocket.__init__.<locals>._on_close¿   s.   ø€ Ø"ˆDŒOØ×Ñ ¨iÑ 8¸Ñ CÔDØ×"Ñ"Õ$rB   )Úsupports_binaryr#   ÚstrÚuuidÚuuid4r   r   r   rq   ÚAttributeErrorÚRuntimeErrorÚon_msgÚ
on_messagerŽ   rv   )r@   r#   Úerrr�   s   ``  r%   r?   zCommSocket.__init__­   sÁ   ù€ Ø#ˆÔØˆŒÜœŸ
™
›Ó%ˆŒ	ô 	”Ð(¨4¯9©9Ñ4Ó5Ô6ð	5Ü˜\°°t·y±yÐ0AÔBˆDŒIð
 	�	‰	×Ñ˜Ÿ™Ô)à—,‘,ˆØˆŒõ	%ð
 	�	‰	×Ñ˜9Õ%øô ò 	5Üð  +ó ,à14ð5ûð	5ús   ÁC Ã	C'ÃC"Ã"C'c                 óL   — | j                   xs | j                  j                   S rE   )rŽ   rq   Ú_closedrS   s    r%   ry   zCommSocket.is_openÆ   s   € Ø—O‘OÒ8 t§y¡y×'8Ñ'8Ð9Ð9rB   c                 óz   — | j                  «       r	 | j                  j                  «        y y # t        $ r Y y w xY wrE   )ry   rq   rs   ÚKeyErrorrS   s    r%   rv   zCommSocket.on_closeÉ   s9   € ð �<‰<Œ>ðØ—	‘	—‘Õ!ð øô ò áðús   ’. ®	:¹:c                 ód   — | j                   j                  dt        j                  |«      i«       y )Nr‹   )rq   ÚsendÚjsonÚdumps)r@   r�   s     r%   Ú	send_jsonzCommSocket.send_jsonÓ   s    € Ø�	‰	�‰˜¤§
¡
¨7Ó 3Ð4Õ5rB   c                 óÖ   — | j                   r!| j                  j                  ddi|g¬«       y t        |«      j	                  d«      }d|› �}| j                  j                  d|i«       y )NÚblobz	image/png)ÚbuffersÚasciizdata:image/png;base64,r‹   )r‘   rq   rŸ   r   Údecode)r@   r¤   r‹   Údata_uris       r%   Úsend_binaryzCommSocket.send_binaryÖ   s]   € Ø×ÒØ�I‰I�N‰N˜F KÐ0¸4¸&ˆNÕAô ˜T“?×)Ñ)¨'Ó2ˆDØ/°¨vÐ6ˆHØ�I‰I�N‰N˜F HÐ-Õ.rB   c                 óü   — t        j                  |d   d   «      }|d   dk(  r+| j                  «        | j                  j	                  «        y |d   dk(  r|d   | _        y | j                  j                  |«       y )Nr�   r‹   ÚtypeÚclosingr‘   Úvalue)r    Úloadsrv   r#   rw   r‘   Úhandle_json)r@   Úmessages     r%   r˜   zCommSocket.on_messageà   sm   € ô —*‘*˜W YÑ/°Ñ7Ó8ˆØ�6‰?˜iÒ'Ø�M‰MŒOØ�L‰L×'Ñ'Õ)Ø�V‰_Ð 1Ò1Ø#*¨7Ñ#3ˆDÕ à�L‰L×$Ñ$ WÕ-rB   N)
r0   r1   r2   Ú__doc__r?   ry   rv   r¢   r©   r˜   r†   rB   r%   rn   rn   £   s%   „ ñò&ò2:òò6ò/ó.rB   rn   c                   ó   — e Zd ZeZeZy)Ú_BackendNbAggN)r0   r1   r2   r„   ÚFigureCanvasr;   ÚFigureManagerr†   rB   r%   r³   r³   ð   s   „ à$€LØ&�MrB   r³   )#r±   Úbase64r   rc   r    rf   r“   Úipykernel.commr   ÚIPython.displayr   r   r   r‰   r   rY   r
   Úmatplotlib.backend_basesr   r   r   Úbackend_webagg_corer   r   r   r   r   r&   r4   r.   r;   r„   rn   Úexportr³   r†   rB   r%   ú<module>r¼      s¹   ðÙ 2õ
 Û 	Û Û Û å ß 5Ñ 5å %Ý )ß MÑ M÷Kñ K÷ òð& ØØ"Ø$ØØ Ø
ñÐ ô9Ð,ô 9ô\?Ð,ô \?ô~'Ð.ô '÷J.ñ J.ðZ 
‡�ô'�Hó 'ó ñ'rB   