Ë
    :vžjö$  ã                  ó$  — 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	 ddl
mZmZmZ eeefZdZdZdZe› d	e› d
�ZdZdZdZdZ	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zedd„«       Zdd„Zdd„Z d d„Z!d!d„Z"d"d„Z#	 	 	 	 	 	 d#d„Z$y)$é    )ÚannotationsN)Úcache)ÚAnyé   )Ú_VIRTUAL_FILESÚFileContentsÚVirtualFileContentsz(application/vnd.jupyter.widget-view+jsoné   Ú.z.0Ú_anywidget_idÚ_esmÚ_cssa®  
function render(view) {
  console.log("Dev note: No _esm defined for this widget:", view);
  let url = "https://anywidget.dev/en/getting-started/";
  view.el.innerHTML = `<p>
    <strong>Dev note</strong>:
    <a href='${url}' target='blank'>Implement an <code>_esm</code> attribute</a>
    on AnyWidget subclass <code>${view.model.get('_anywidget_id')}</code>
    to customize this widget.
  </p>`;
}
export default { render };
c                ó"  — t        | «      }d}t        | t        t        f«      r¢t	        | «      D ]“  \  }}t        |t
        «      r9|€t        | «      }d||<   |j                  |«       |j                  g |¢|‘«       ŒOt        |t        t        t        f«      sŒkt        |g |¢|‘||«      }||usŒ‚|€t        | «      }|||<   Œ• nÅt        | t        «      r¥| j                  «       D ]‘  \  }	}t        |t
        «      r7|€t        | «      }||	= |j                  |«       |j                  g |¢|	‘«       ŒMt        |t        t        t        f«      sŒit        |g |¢|	‘||«      }||usŒ€|€t        | «      }|||	<   Œ“ nd| ›�}
t        |
«      ‚|�|S | S )aP  For internal, see _remove_buffers.

    remove binary types from dicts and lists, but keep track of their paths any part of
    the dict/list that needs modification will be cloned, so the original stays
    untouched e.g. {'x': {'ar': ar}, 'y': [ar2, ar3]}, where ar/ar2/ar3 are binary types
    will result in {'x': {}, 'y': [None, None]}, [ar, ar2, ar3], [['x', 'ar'], ['y', 0],
    ['y', 1]] instead of removing elements from the list, this will make replacing the
    buffers on the js side much easier

    Raises
    ------
    TypeError
        If substate is not a list or dict.
    Nz)expected state to be a list or dict, not )ÚtypeÚ
isinstanceÚlistÚtupleÚ	enumerateÚ_BINARY_TYPESÚappendÚdictÚ_separate_buffersÚitemsÚ	TypeError)ÚsubstateÚpathÚbuffer_pathsÚbuffersÚ_tÚ_subÚiÚvÚ_vÚkÚmsgs              ú`/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/anywidget/_util.pyr   r   (   sŽ  € ô( 
ˆh‹€BØ#€DÜ�(œT¤5˜MÔ*Ü˜hÖ'‰DˆAˆqÜ˜!œ]Ô+Ø�<Ü ›>�DØ��Q‘Ø—‘˜qÔ!Ø×#Ñ# J d J¨A JÕ/Ü˜A¤¤d¬EÐ2Õ3Ü& q¨*¨D¨*°!¨*°lÀGÓL�Ø˜B’;Ø�|Ü# H›~˜Ø �D˜’Gñ (ô 
�HœdÔ	#Ø—N‘NÖ$‰DˆAˆqÜ˜!œ]Ô+Ø�<Ü ›>�DØ˜�GØ—‘˜qÔ!Ø×#Ñ# J d J¨A JÕ/Ü˜A¤¤d¬EÐ2Õ3Ü& q¨*¨D¨*°!¨*°lÀGÓL�Ø˜B’;Ø�|Ü# H›~˜Ø �D˜’Gñ %ð :¸(¸ÐFˆÜ˜‹nÐØÐ#ˆ4Ð1¨Ð1ó    c                ó0   — g }g }t        | g ||«      } | ||fS )a¸  Return (state_without_buffers, buffer_paths, buffers) for binary message parts.

    A binary message part is a memoryview, bytearray, or python 3 bytes object.

    Examples
    --------
    >>> ar1 = np.arange(8).reshape(4, 2)
    >>> ar2 = np.arange(100).reshape(10, 10)
    >>> state = {
            'plain': [0, 'text'],
            'x': {'ar': memoryview(ar1)},
            'y': {'shape': (10,10), 'data': memoryview(ar2)}
        }
    >>> _remove_buffers(state)
    (
        {
            'plain': [0, 'text'],
            'x': {},
            'y': {'shape': (10, 10)}
        },
        [['x', 'ar'], ['y', 'data']],
        [<memory at 0x114e7fac0>, <memory at 0x114e7fed0>]
    )
    )r   )Ústater   r   s      r&   Úremove_buffersr*   `   s+   € ð2 €LØ "€GÜ˜e R¨°wÓ?€EØ�, Ð'Ð'r'   c                ób   — t        ||d¬«      D ]  \  }}| }|dd D ]  }||   }Œ	 |||d   <   Œ  y)z¬The inverse of _remove_buffers.

    ...except here we modify the existing dict/lists.
    Modifying should be fine, since this is used when state comes from the wire.
    F)ÚstrictNéÿÿÿÿ)Úzip)r)   r   r   Úbuffer_pathÚbufferÚobjÚkeys          r&   Úput_buffersr3      sL   € ô  # <°À×GÑˆ�Vð ˆØ˜s Ó#ˆCØ�c‘(‰Cð $à%ˆˆK˜‰OÒñ  Hr'   c                 ó&   — dt         j                  v S )z#Determines whether in Google Colab.úgoogle.colab.output)ÚsysÚmodules© r'   r&   Úin_colabr9   ’   s   € à ¤C§K¡KÐ/Ð/r'   c                 óF   — t         j                  d   j                  «        y)z¦Enables Google Colab's custom widget manager so third-party widgets display.

    See https://github.com/googlecolab/colabtools/issues/498#issuecomment-998308485
    r5   N)r6   r7   Úenable_custom_widget_managerr8   r'   r&   Ú!enable_custom_widget_manager_oncer<   —   s   € ô ‡K�KÐ%Ñ&×CÑCÕEr'   c                 ó    — t        «       si S t        «        t        j                  d   j                  j
                  } | €i S t        ddd| iiiiS )a  Creates metadata dict for _repr_mimebundle_.

    If in Google Colab, enables custom widgets as a side effect
    and injects the `custom_widget_manager` metadata for more
    consistent rendering.

    See https://github.com/manzt/anywidget/issues/63#issuecomment-1427194000.
    r5   ÚcolabÚcustom_widget_managerÚurl)r9   r<   r6   r7   Ú_widgetsÚ_installed_urlÚ_WIDGET_MIME_TYPE)r@   s    r&   Úget_repr_metadatarD       sS   € ô Œ:Øˆ	ä%Ô'Ü
�+‰+Ð+Ñ
,×
5Ñ
5×
DÑ
D€Cà
€{Øˆ	ä Ð*AÀEÈ3À<Ð)PÐQÐRÐRr'   c                 ó2   — t        j                  d«      dk(  S )NÚANYWIDGET_HMRÚ1)ÚosÚgetenvr8   r'   r&   Ú_is_hmr_enabledrJ   µ   s   € Ü�9‰9�_Ó%¨Ñ,Ð,r'   c                ó¬   — d| j                   v ryd| j                   v ryt        «       sy	 dd l}y# t        $ r dd l}|j                  dd¬«       Y yw xY w)	Nzsite-packagesFzdist-packagesr   zbanywidget: Live-reloading feature is disabled. To enable, please install the 'watchfiles' package.r
   )Ú
stacklevelT)ÚpartsrJ   Ú
watchfilesÚImportErrorÚwarningsÚwarn)r   rN   rP   s      r&   Ú_should_start_threadrR   ¹   sk   € Ø˜$Ÿ*™*Ñ$àà˜$Ÿ*™*Ñ$àô ÔØðÛð øô ò 	Ûà�‰ðCàð 	ô 	
ñ ð	ús   «0 ° AÁAc                ó2  — t        | t        j                  «      r| S t        | t        «      sy| j	                  d«      ryd| v xs d| v }|ryt        j                  d| «      du}|r1t        j                  | «      j                  «       j                  «       S y)a  If possible coerce x into a pathlib.Path object.

    If a string, we handle the following cases:

    - If it's a URL, return None.
    - If it's a multi-line string, return None.
    - If it's a single-line string with a file extension, return a pathlib.Path object.
    - Otherwise, return None.

    Parameters
    ----------
    x : Any
        The object to try to coerce into a pathlib.Path object.

    Returns
    -------
    pathlib.Path | None
        A pathlib.Path object if x is a file path, otherwise None.
    N)zhttp://zhttps://Ú
Úz[a-zA-Z0-9]\.[a-zA-Z0-9]+$)	r   ÚpathlibÚPathÚstrÚ
startswithÚreÚsearchÚresolveÚabsolute)ÚxÚis_multi_lineÚincludes_file_suffixs      r&   Útry_file_pathra   Ö   s�   € ô* �!”W—\‘\Ô"Øˆä�aœÔØð
 	‡|�|Ð+Ô,Øð ˜A�IÒ* ¨ €MÙØô
 Ÿ9™9Ð%BÀAÓFÈdÐRÐÙÜ�|‰|˜A‹×&Ñ&Ó(×1Ñ1Ó3Ð3àr'   c                óÐ   — t        | t        «      r| t        v r	t        |    S t        | «      }|€y|}|j	                  «       sd|› �}t        |«      ‚t        |t        |«      ¬«      S )zTry to coerce x into a FileContents object.

    Raises
    ------
    FileNotFoundError
        If the file is not found.
    NzFile not found: )r   Ústart_thread)r   rX   r   ra   Úis_fileÚFileNotFoundErrorr   rR   )r^   Ú
maybe_pathr   r%   s       r&   Útry_file_contentsrg     sp   € ô �!”SÔ˜a¤>Ñ1Ü˜aÑ Ð ä˜qÓ!€JØÐØà€DØ�<‰<Œ>Ø   Ð'ˆÜ Ó$Ð$ÜØÜ)¨$Ó/ôð r'   c                óF   — d|t         t        t        | dœi}|t        «       fS )z1Create a MIME bundle for a widget representation.z
text/plain)Úversion_majorÚversion_minorÚmodel_id)rC   Ú_PROTOCOL_VERSION_MAJORÚ_PROTOCOL_VERSION_MINORrD   )rk   Ú	repr_textÚdatas      r&   Úrepr_mimebundlerp     s2   € ð 	�iÜÜ4Ü4Ø ñ
ð€Dð Ô"Ó$Ð$Ð$r'   )
r   Úobjectr   r   r   r   r   r   Úreturnrq   )r)   rq   rr   z(tuple[Any, list[list], list[memoryview]])r)   r   r   zlist[list[str | int]]r   zlist[memoryview]rr   ÚNone)rr   Úbool)rr   rs   )rr   r   )r   zpathlib.Pathrr   rt   )r^   rq   rr   zpathlib.Path | None)r^   rq   rr   z)FileContents | VirtualFileContents | None)rk   rX   rn   rX   rr   z%tuple[dict[str, Any], dict[str, Any]])%Ú
__future__r   rH   rV   rZ   r6   Ú	functoolsr   Útypingr   Ú_file_contentsr   r   r	   Ú
memoryviewÚ	bytearrayÚbytesr   rC   rl   rm   Ú_PROTOCOL_VERSIONÚ_ANYWIDGET_ID_KEYÚ_ESM_KEYÚ_CSS_KEYÚ_DEFAULT_ESMr   r*   r3   r9   r<   rD   rJ   rR   ra   rg   rp   r8   r'   r&   Ú<module>r�      s"  ðÝ "ã 	Û Û 	Û 
Ý Ý ç MÑ Mà˜Y¨Ð.€Ø>Ð ØÐ ØÐ Ø.Ð/¨qÐ1HÐ0IÈÐLÐ Ø#Ð Ø€Ø€ð€ð(52Øð52à
ð52ð ð52ð ð	52ð
 ó52óp(ð>&Øð&à'ð&ð ð&ð 
ó	&ó&0ð
 òFó ðFóSó*-óó:-ó`ð2%Øð%àð%ð +ô%r'   