Ë
    F^(h—6  ã                   óê   — d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlZ	ddl
mZmZmZ ddlmZ  e	j                   «         ej"                  d«      Z G d„ d«      Z G d	„ d
e«      Z G d„ de«      Zy)é    N)ÚClassVarÚSequenceé   )ÚOpenFileÚget_filesystem_classÚsplit_protocol)Úknown_implementationsz
fsspec.guic                   óº   — e Zd ZU dZg Zeee      ed<   g Z	eee      ed<   d„ Z
d„ Zdej                  dfd„Zd	„ Zd
„ Zd„ Zej&                  d„ «       Zdd„Zdd„Zy)ÚSigSlotaŠ  Signal-slot mixin, for Panel event passing

    Include this class in a widget manager's superclasses to be able to
    register events and callbacks on Panel widgets managed by that class.

    The method ``_register`` should be called as widgets are added, and external
    code should call ``connect`` to associate callbacks.

    By default, all signals emit a DEBUG logging statement.
    ÚsignalsÚslotsc                 óN   — d| _         i | _        i | _        | j                  «        y )NF)Ú_ignoring_eventsÚ_sigsÚ_mapÚ_setup©Úselfs    úH/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fsspec/gui.pyÚ__init__zSigSlot.__init__%   s!   € Ø %ˆÔØˆŒ
ØˆŒ	Ø�‰�ó    c                 óJ   — t         j                  j                  «       | _        y)z(Create GUI elements and register signalsN)ÚpnÚpaneÚPaneBaseÚpanelr   s    r   r   zSigSlot._setup+   s   € ä—W‘W×%Ñ%Ó'ˆ�
r   ÚvalueFc           	      ó„  — || j                   vrt        d|› �«      ‚|g ||dœ| j                  |<   dj                  |�t	        |dt        |«      «      nd|g«      }|| j                  |<   |�(|j                  j                  | j                  |d¬«       |r*t        | |«      r| j                  |t	        | |«      «       yyy)	aò  Watch the given attribute of a widget and assign it a named event

        This is normally called at the time a widget is instantiated, in the
        class which owns it.

        Parameters
        ----------
        widget : pn.layout.Panel or None
            Widget to watch. If None, an anonymous signal not associated with
            any widget.
        name : str
            Name of this event
        thing : str
            Attribute of the given widget to watch
        log_level : int
            When the signal is triggered, a logging event of the given level
            will be fired in the dfviz logger.
        auto : bool
            If True, automatically connects with a method in this class of the
            same name.
        z(Attempt to assign an undeclared signal: )ÚwidgetÚ	callbacksÚthingÚlogú-NÚnameÚnoneT)Úonlychanged)r   Ú
ValueErrorr   ÚjoinÚgetattrÚstrr   ÚparamÚwatchÚ_signalÚhasattrÚconnect)r   r   r$   r!   Ú	log_levelÚautoÚwns          r   Ú	_registerzSigSlot._register0   sÉ   € ð0 �t—|‘|Ñ#ÜÐGÈÀvÐNÓOÐOàØØØñ	
ˆ�
‰
�4Ñð �X‰Xà8>Ð8J”˜ ¬¨F«Ô4ÐPVØðó
ˆð ˆ�	‰	�"‰ØÐØ�L‰L×Ñ˜tŸ|™|¨UÀÐÔEÙ”G˜D $Ô'Ø�L‰L˜œw t¨TÓ2Õ3ð (ˆ4r   c                 ó‚   — 	  | j                   j                  |i |¤ŽS # t        t        f$ r}t	        d«      |‚d}~ww xY w)z!Display in a notebook or a serverz)Panel does not seem to be set up properlyN)r   Ú_repr_mimebundle_r'   ÚAttributeErrorÚNotImplementedError)r   ÚargsÚkwargsÚexcs       r   r5   zSigSlot._repr_mimebundle_\   sK   € ð	Ø/�4—:‘:×/Ñ/°Ð@¸Ñ@Ð@øÜœNÐ+ò 	Ü%Ø;óàðûð	ús   ‚ ž>­9¹>c                 óF   — | j                   |   d   j                  |«       y)až  Associate call back with given event

        The callback must be a function which takes the "new" value of the
        watched attribute as the only parameter. If the callback return False,
        this cancels any further processing of the given event.

        Alternatively, the callback can be a string, in which case it means
        emitting the correspondingly-named event (i.e., connect to self)
        r    N)r   Úappend)r   ÚsignalÚslots      r   r/   zSigSlot.connecte   s    € ð 	�
‰
�6Ñ˜;Ñ'×.Ñ.¨tÕ4r   c                 ó(  — | j                   s†dj                  |j                  j                  |j                  g«      }|| j                  v rF| j                  |   | j
                  v r*| j                  | j                  |   |j                  «       yyyy)z×This is called by a an action on a widget

        Within an self.ignore_events context, nothing happens.

        Tests can execute this method by directly changing the values of
        widget components.
        r#   N)r   r(   Úobjr$   r   r   Ú_emitÚnew)r   Úeventr2   s      r   r-   zSigSlot._signalq   sp   € ð ×$Ò$Ø—‘˜5Ÿ9™9Ÿ>™>¨5¯:©:Ð6Ó7ˆBØ�T—Y‘Y‰ 4§9¡9¨R¡=°D·J±JÑ#>Ø—
‘
˜4Ÿ9™9 R™=¨%¯)©)Õ4ð $?ˆð %r   c              #   óJ   K  — d| _         	 d–— d| _         y# d| _         w xY w­w)zjTemporarily turn off events processing in this instance

        (does not propagate to children)
        TNF)r   r   s    r   Úignore_eventszSigSlot.ignore_events~   s(   è ø€ ð !%ˆÔð	*Ûà$)ˆDÕ!ø EˆDÕ!üs   ‚#‹ �#—	  #Nc                 óD  — t         j                  | j                  |   d   |› d|› �«       | j                  |   d   D ]3  }t        |t        «      r| j                  |«       Œ%	  ||«      }|du r yŒ5 y# t        $ r!}t         j                  d||«       Y d}~Œ\d}~ww xY w)zëAn event happened, call its callbacks

        This method can be used in tests to simulate message passing without
        directly changing visual elements.

        Calling of callbacks will halt whenever one returns False.
        r"   z: r    Fz6Exception (%s) while executing callback for signal: %sN)Úloggerr"   r   Ú
isinstancer*   rA   Ú	ExceptionÚ	exception)r   Úsigr   ÚcallbackÚretÚes         r   rA   zSigSlot._emitŠ   s§   € ô 	�
‰
�4—:‘:˜c‘? 5Ñ)¨c¨U°"°U°GÐ+<Ô=ØŸ
™
 3™¨Ñ4ò 	ˆHÜ˜(¤CÔ(Ø—
‘
˜8Õ$ð
á" 5›/�CØ˜e‘|Ùð $ñ	øô !ò Ü×$Ñ$ØPØØ÷ñ ûðús   Á$A5Á5	BÁ>BÂBc                 ó@   — | j                   j                  |d¬«       | S )z<Open a new browser tab and display this instance's interfaceF)ÚthreadsÚverbose)r   Úshow)r   rP   s     r   rR   zSigSlot.show£   s   € à�
‰
�‰ °ˆÔ7Øˆr   ©N)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r*   Ú__annotations__r   r   r   ÚloggingÚDEBUGr3   r5   r/   r-   Ú
contextlibÚcontextmanagerrE   rA   rR   © r   r   r   r      s   … ñ	ð (*€GˆX�h˜s‘mÑ$Ó)à%'€Eˆ8�H˜S‘MÑ"Ó'òò(ð #*°W·]±]Èó*4òXò
5ò5ð ×Ññ	*ó ð	*óô2r   r   c                   ój   ‡ — e Zd ZdZddgZg d¢Zˆ fd„Zd„ Zˆ fd„Zd„ Z	d	„ Z
d
„ Zed„ «       Zd„ Zˆ xZS )ÚSingleSelectzCA multiselect which only allows you to select one item for an eventÚ	_selectedÚselected)Úset_optionsÚset_selectionÚaddÚclearÚselectc                 ó0   •— || _         t        ‰| �	  «        y rS   )r9   Úsuperr   )r   r9   Ú	__class__s     €r   r   zSingleSelect.__init__¯   s   ø€ ØˆŒÜ‰ÑÕr   c                 óö   — t        j                  j                  di | j                  ¤Ž| _        | j                  | j                  dd«       | j                  d d«       | j                  d| j                  «       y )Nr`   r   ra   r]   )r   ÚwidgetsÚMultiSelectr9   r   r3   r/   Ú
select_oner   s    r   r   zSingleSelect._setup³   sS   € Ü—Z‘Z×+Ñ+Ñ:¨d¯k©kÑ:ˆŒ
Ø�‰�t—z‘z ;°Ô8Ø�‰�t˜ZÔ(Ø�‰�[ $§/¡/Õ2r   c                 ó$   •— t        ‰| �  |i |¤Ž y rS   )rh   r-   )r   r8   r9   ri   s      €r   r-   zSingleSelect._signal¹   s   ø€ Ü‰‰˜Ð( Ó(r   c                 ó   — | j                  «       5  | j                  j                  r| j                  j                  d   gng }|| j                  _        d d d «       | j                  d| j                  j                  «       y # 1 sw Y   Œ0xY w)Néÿÿÿÿra   )rE   r   r   rA   )r   Ú_Úvals      r   rm   zSingleSelect.select_one¼   sn   € Ø×ÑÓ!ñ 	#Ø,0¯J©J×,<Ò,<�4—:‘:×#Ñ# BÑ'Ñ(À"ˆCØ"ˆD�J‰JÔ÷	#ð 	�
‰
�:˜tŸz™z×/Ñ/Õ0÷	#ð 	#ús   ‘ABÂBc                 ó&   — || j                   _        y rS   ©r   Úoptions)r   ru   s     r   rb   zSingleSelect.set_optionsÂ   s   € Ø$ˆ�
‰
Õr   c                 ó&   — g | j                   _        y rS   rt   r   s    r   re   zSingleSelect.clearÅ   s   € Øˆ�
‰
Õr   c                 ó.   — | j                   j                  S rS   ©r   r   r   s    r   r   zSingleSelect.valueÈ   s   € à�z‰z×ÑÐr   c                 ó(   — |g| j                   _        y rS   rx   )r   Ú	selections     r   rc   zSingleSelect.set_selectionÌ   s   € Ø%˜;ˆ�
‰
Õr   )rT   rU   rV   rW   r   r   r   r   r-   rm   rb   re   Úpropertyr   rc   Ú__classcell__©ri   s   @r   r_   r_   ©   sL   ø„ ÙMà˜JÐ'€GÚF€Eôò3ô)ò1ò%ò ð ñ ó ð ö'r   r_   c                   óž   ‡ — e Zd ZdZg d¢ZddgZdˆ fd„	Zd„ Zdd„Ze	d„ «       Z
e	d	„ «       Ze	d
„ «       Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚFileSelectorzÚPanel-based graphical file selector widget

    Instances of this widget are interactive and can be displayed in jupyter by having
    them as the output of a cell,  or in a separate browser tab using ``.show()``.
    )Úprotocol_changedÚselection_changedÚdirectory_enteredÚhome_clickedÚ
up_clickedÚ
go_clickedÚfilters_changedÚset_filtersÚgo_homec                 ó^  •— |rt        |«      \  | _        }ndt        j                  «       c| _        }|| _        t        |t        «      r|n
t        |«      xs d| _        || _        |xs g D �cg c]  }t        j                  |«      ‘Œ c}| _        d| _        t        ‰| �9  «        yc c}w )a‚  

        Parameters
        ----------
        url : str (optional)
            Initial value of the URL to populate the dialog; should include protocol
        filters : list(str) (optional)
            File endings to include in the listings. If not included, all files are
            allowed. Does not affect directories.
            If given, the endings will appear as checkboxes in the interface
        ignore : list(str) (optional)
            Regex(s) of file basename patterns to ignore, e.g., "\." for typical
            hidden files on posix
        kwargs : dict (optional)
            To pass to file system instance
        Úfilez{}N)r   Úinit_protocolÚosÚgetcwdÚinit_urlrH   r*   Úinit_kwargsÚfiltersÚreÚcompileÚignoreÚ_fsrh   r   )r   Úurlr�   r“   r9   Úiri   s         €r   r   zFileSelector.__init__â   s�   ø€ ñ" Ü&4°SÓ&9Ñ#ˆDÔ¡à&,¬b¯i©i«kÐ#ˆDÔ ØˆŒÜ&0°¼Ô&=™FÄ3ÀvÃ;ÒWÐSWˆÔØˆŒØ.4ªl¸Ö;¨”r—z‘z !•}Ò;ˆŒØˆŒÜ‰ÑÕùò <s   Á0B*c           
      ób  — t         j                  j                  d| j                  ddd¬«      | _        t         j                  j                  t        t        «      | j                  dd¬«      | _	        t         j                  j                  d	| j                  d¬
«      | _        t         j                  j                  ddd¬«      | _        t        d¬«      | _        t         j                  j                  dddd¬«      | _        t         j                  j                  dddd¬«      | _        | j%                  | j                  dd¬«       | j%                  | j                  ddd¬«       | j%                  | j"                  ddd¬«       | j%                  | j                   ddd¬«       | j%                  d d«       | j                  j'                  d| j(                  «       | j%                  d d«       | j                  j*                  | _        | j.                  | _        t         j                  j3                  g g ddd ¬!«      | _        | j%                  | j4                  d"d¬«       t        j6                  t        j8                  | j                  | j                  «      t        j8                  | j                   | j"                  | j                  | j                  | j4                  «      | j                  j:                  «      | _        | j=                  | j>                  «       | jA                  «        y )#Nr•   ÚendÚstretch_widthÚmax)r$   r   ÚalignÚsizing_modeÚwidth_policyÚprotocolÚcenter)ru   r   r$   r›   r9   )r$   r   r›   u   â‡¨é-   )r$   r›   Úwidthé
   )Úsizeu   ðŸ� é(   é   )r$   r¡   Úheightr›   u   â€¹r€   T)r1   r…   Úclicksr„   rƒ   r�   ra   r‚   FÚmin)r   ru   Úinliner›   r�   r†   )!r   rk   Ú	TextInputrŽ   r•   ÚSelectÚsortedr	   r‹   rž   r�   r9   ÚButtonÚgor_   ÚmainÚhomeÚupr3   r/   r�   r   Úprev_protocolÚstorage_optionsÚprev_kwargsÚCheckBoxGroupÚ
filter_selÚColumnÚRowr   r‡   r�   r…   r   s    r   r   zFileSelector._setupþ   se  € Ü—:‘:×'Ñ'ØØ—-‘-ØØ'Øð (ó 
ˆŒô Ÿ
™
×)Ñ)ÜÔ0Ó1Ø×$Ñ$ØØð	 *ó 
ˆŒô —j‘j×*Ñ*Ø ×!1Ñ!1¸ð +ó 
ˆŒô —*‘*×#Ñ#¨°eÀ2Ð#ÓFˆŒÜ  bÔ)ˆŒ	Ü—J‘J×%Ñ%¨6¸ÀBÈeÐ%ÓTˆŒ	Ü—*‘*×#Ñ#¨°bÀÈ5Ð#ÓQˆŒà�‰�t—}‘}Ð&8¸tˆÔDØ�‰�t—w‘w ¨h¸TˆÔBØ�‰�t—w‘w ¨h¸TˆÔBØ�‰�t—y‘y .°(ÀˆÔFØ�‰�tÐ0Ô1Ø�	‰	×Ñ˜* d×&<Ñ&<Ô=Ø�‰�tÐ0Ô1Ø!Ÿ]™]×0Ñ0ˆÔØ×/Ñ/ˆÔäŸ*™*×2Ñ2Ø˜b¨°eÈ%ð 3ó 
ˆŒð 	�‰�t—‘Ð(9ÀˆÔEä—Y‘YÜ�F‰F�4—=‘= $§+¡+Ó.Ü�F‰F�4—9‘9˜dŸg™g t§x¡x°·±¸$¿/¹/ÓJØ�I‰I�O‰Oó
ˆŒ
ð
 	×Ñ˜Ÿ™Ô&Ø�‰Õr   c                 ó    — || _         |r#|| j                  _        || j                  _        y g | j                  _        g | j                  _        y rS   )r�   r¶   ru   r   )r   r�   s     r   r‡   zFileSelector.set_filters+  s<   € ØˆŒÙØ&-ˆD�O‰OÔ#Ø$+ˆD�O‰OÕ!à&(ˆD�O‰OÔ#Ø$&ˆD�O‰OÕ!r   c                 ó\   — t        j                  | j                  j                  «      xs i S )z'Value of the kwargs box as a dictionary)ÚastÚliteral_evalr9   r   r   s    r   r³   zFileSelector.storage_options4  s$   € ô ×Ñ §¡× 1Ñ 1Ó2Ò8°bÐ8r   c                 óž   — | j                   €6t        | j                  j                  «      } |di | j                  ¤Ž| _         | j                   S )zCurrent filesystem instancer]   )r”   r   rž   r   r³   )r   Úclss     r   ÚfszFileSelector.fs9  s@   € ð �8‰8ÐÜ& t§}¡}×':Ñ':Ó;ˆCÙÑ2˜T×1Ñ1Ñ2ˆDŒHØ�x‰xˆr   c                 ó–   — | j                   j                  r2| j                  j                  › d| j                   j                  d   › �S dS )zURL of currently selected itemz://r   N)r¯   r   rž   r   s    r   ÚurlpathzFileSelector.urlpathA  sG   € ð
 �y‰y�Šð —‘×#Ñ#Ð$ C¨¯	©	¯©¸Ñ(:Ð';Ð<ð	
ð ð	
r   c                 óv   — | j                   €t        d«      ‚t        | j                  | j                   |||«      S )a¯  Create OpenFile instance for the currently selected item

        For example, in a notebook you might do something like

        .. code-block::

            [ ]: sel = FileSelector(); sel

            # user selects their file

            [ ]: with sel.open_file('rb') as f:
            ...      out = f.read()

        Parameters
        ----------
        mode: str (optional)
            Open mode for the file.
        compression: str (optional)
            The interact with the file as compressed. Set to 'infer' to guess
            compression from the file ending
        encoding: str (optional)
            If using text mode, use this encoding; defaults to UTF8.
        zNo file selected)rÁ   r'   r   r¿   )r   ÚmodeÚcompressionÚencodings       r   Ú	open_filezFileSelector.open_fileJ  s5   € ð0 �<‰<ÐÜÐ/Ó0Ð0Ü˜Ÿ™ §¡¨t°[À(ÓKÐKr   c                 ó2   — || _         | j                  «        y rS   )r�   r…   )r   Úvaluess     r   r†   zFileSelector.filters_changedf  s   € ØˆŒØ�‰Õr   c                 óð   — | j                   €y | j                  j                  | j                   «      r4| j                  j                  | j                   «      | j                  _        | j                  «        y rS   )rÁ   r¿   ÚisdirÚ_strip_protocolr•   r   r…   ©r   rq   s     r   r�   zFileSelector.selection_changedj  sK   € Ø�<‰<ÐØØ�7‰7�=‰=˜Ÿ™Ô&Ø!ŸW™W×4Ñ4°T·\±\ÓBˆD�H‰HŒNØ�‰Õr   c                 óž  ‡‡— | j                   | j                  j                  k7  s| j                  | j                  k7  r3d | _        | j                  j                  | _         | j                  | _        t        | j                  j                  | j                  j                  d¬«      d„ ¬«      }|D �‡cg c]"  Št        ˆfd„| j                  D «       «      s‰‘Œ$ }}|D �ci c])  }|d   dk(  rd|d	   j                  d
d«      d   z   |d	   “Œ+ }}|D �ci c])  }|d   dk(  rd|d	   j                  d
d«      d   z   |d	   “Œ+ }}| j                  rB|j                  «       D ��‡ci c]&  \  }Št        ˆfd„| j                  D «       «      r|‰“Œ( }}}| j                  j!                  t#        di |¤|¤Ž«       y c c}w c c}w c c}w c c}}w )NT)Údetailc                 ó   — | d   S )Nr$   r]   )Úxs    r   ú<lambda>z)FileSelector.go_clicked.<locals>.<lambda>z  s
   € À1ÀVÁ9€ r   )Úkeyc              3   ól   •K  — | ]+  }|j                  ‰d    j                  dd«      d   «      –— Œ- y­w)r$   ú/r   rp   N)ÚmatchÚrsplit)Ú.0r–   Úls     €r   ú	<genexpr>z*FileSelector.go_clicked.<locals>.<genexpr>  s0   øè ø€ ÒRÀ�q—w‘w˜q ™y×/Ñ/°°QÓ7¸Ñ;×<ÑRùs   ƒ14ÚtypeÚ	directoryu   ðŸ“� r$   rÔ   r   rp   rŠ   u   ðŸ“„ c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrS   )Úendswith)r×   ÚextÚvs     €r   rÙ   z*FileSelector.go_clicked.<locals>.<genexpr>�  s   øè ø€ Ò?¨3�q—z‘z #—Ñ?ùs   ƒr]   )r²   rž   r   r´   r³   r”   r¬   r¿   Úlsr•   Úanyr“   rÖ   r�   Úitemsr¯   rb   Údict)	r   rq   ÚlistingrØ   ÚoÚfoldersÚfilesÚkrß   s	      `    `r   r…   zFileSelector.go_clickedq  sÐ  ù€ à×Ñ $§-¡-×"5Ñ"5Ò5Ø×Ñ 4×#7Ñ#7Ò7àˆDŒHØ!%§¡×!4Ñ!4ˆDÔØ#×3Ñ3ˆDÔÜØ�G‰G�J‰J�t—x‘x—~‘~¨dˆJÓ3Ñ9Lô
ˆð
 ÷
àÜÓRÀdÇkÁkÔRÔRò ð
ˆð 
ð ö
àØ�‰y˜KÒ'ð �a˜‘i×&Ñ& s¨AÓ.¨rÑ2Ñ2°A°f±IÑ=ð
ˆð 
ð ö
àØ�‰y˜FÒ"ð �a˜‘i×&Ñ& s¨AÓ.¨rÑ2Ñ2°A°f±IÑ=ð
ˆð 
ð
 �<Š<ð "ŸK™K›M÷ð á�A�qÜÓ?°$·,±,Ô?Ô?ð �1‘ðˆEñ ð
 	�	‰	×ÑœdÑ6 WÐ6°Ñ6Õ7ùò+
ùò

ùò

ùós   Â4'F:Ã!.F?Ä.GÅ%+G	c                 óV   — d | _         g | j                  _        d| j                  _        y )NÚ )r”   r¯   ru   r•   r   rÌ   s     r   r€   zFileSelector.protocol_changed“  s    € ØˆŒØˆ�	‰	ÔØˆ�‰�r   c                 óÆ   — | j                   | j                  _        | j                  | j                  _        | j
                  | j                  _        | j                  «        y rS   )r‹   rž   r   r�   r9   rŽ   r•   r…   rÌ   s     r   rƒ   zFileSelector.home_clicked˜  s?   € Ø"×0Ñ0ˆ�‰ÔØ ×,Ñ,ˆ�‰ÔØŸ™ˆ�‰ŒØ�‰Õr   c                 ó    — | j                   j                  | j                  j                  «      | j                  _        | j	                  «        y rS   )r¿   Ú_parentr•   r   r…   rÌ   s     r   r„   zFileSelector.up_clickedž  s,   € ØŸ™Ÿ™¨¯©¯©Ó8ˆ�‰ŒØ�‰Õr   )NNNNrS   )ÚrbNN)rT   rU   rV   rW   r   r   r   r   r‡   r{   r³   r¿   rÁ   rÆ   r†   r�   r…   r€   rƒ   r„   r|   r}   s   @r   r   r   Ð   sŒ   ø„ ñò€Gð ˜IÐ&€Eõò8+óZ'ð ñ9ó ð9ð ñó ðð ñ
ó ð
óLò8òò 8òDò
ör   r   )r»   r[   rY   rŒ   r‘   Útypingr   r   r   r   Úcorer   r   r   Úregistryr	   Ú	extensionÚ	getLoggerrG   r   r_   r   r]   r   r   ú<module>rô      sh   ðÛ 
Û Û Û 	Û 	ß %ã ç @Ñ @Ý +à €‡�„Ø	ˆ×	Ñ	˜<Ó	(€÷Uñ Uôp$'�7ô $'ôNP�7õ Pr   