§
    ÎÐjŒ  ã                  ó¬   — d Z ddlm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 ddlmZmZ ddlmZ d	„ Z G d
„ de	¦  «        Z G d„ de¦  «        ZdS )z:Adapters between Deepy's commands and its host interfaces.é    )ÚannotationsN)ÚPath)ÚGallery)Ú_label_from_settings)ÚGALLERY_SOURCESÚgallery_source)Úpeek_settingsc              #  ó  ‡K  — dd l Šd}| D ]õ\  }}ˆfd„t          d¦  «        D ¦   «         }|dk    r9|�|n‰                     ¦   «         |d<   |r‰                     d¬¦  «        |d<   d	}n…|d
k    r‰                     d¬¦  «        |d<   ne|dv rGt          t	          j        ¦   «         ¦  «        dz   t           |¦   «         ¦  «        z   ||dk    rdnd<   n|dk    rt          |pd¦  «        |d<   t          |¦  «        V — Œöd S )Nr   Tc                ó8   •— g | ]}‰                      ¦   «         ‘ŒS © )Úupdate)Ú.0Ú_Úgrs     €ú<C:\Users\johnn\OneDrive\Documents\AI\shared\deepy\drivers.pyú
<listcomp>z'gradio_chat_updates.<locals>.<listcomp>   s!   ø€ Ð1Ð1Ð1 1�2—9’9‘;”;Ð1Ð1Ð1ó    é   Úchat_outputÚ )Úvalueé   FÚrequest_accepted>   Úrefresh_galleryÚload_queue_triggerr   r   é   é   Úabort_client_idé   )ÚgradioÚranger   ÚstrÚtimeÚtuple)ÚcommandsÚ
refresh_idÚfirst_publicationÚcommandÚdataÚoutputsr   s         @r   Úgradio_chat_updatesr+      sM  øè è € ØÐÐÐàÐØ!ð ð ‰ˆ�Ø1Ð1Ð1Ð1­¨a©¬Ð1Ñ1Ô1ˆØ�mÒ#Ð#Ø!%Ð!1˜˜°r·y²y±{´{ˆG�A‰JØ ð *ØŸYšY¨R˜YÑ0Ô0�˜‘
Ø$)Ð!øØÐ*Ò*Ð*ØŸš¨˜Ñ,Ô,ˆG�A‰JˆJØÐAÐAÐAÝCFÅtÄyÁ{Ä{ÑCSÔCSÐVYÑCYÕ\_Ð`jÐ`jÑ`lÔ`lÑ\mÔ\mÑCmˆG˜Ð$8Ò8Ð8�A�A¸aÑ@Ð@ØÐ)Ò)Ð)Ý˜T˜Z R™œˆG�A‰JÝ�G‰nŒnÐÐÐÐðð r   c                  óX   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zed„ ¦   «         Zd
ˆ fd„	Z	dd	„Z
ˆ xZS )Ú
AppGalleryzCThe API operates on the same media data as the CLI and Deepy tools.c                óŒ   •— t          ¦   «                              ||¦  «         i | _        |                      ¦   «         | _        d S ©N)ÚsuperÚ__init__Ú_media_pathsÚ_genÚ_snapshot_gen)ÚselfÚdepsÚstateÚ	__class__s      €r   r1   zAppGallery.__init__'   s;   ø€ Ý‰Œ×Ò˜˜uÑ%Ô%Ð%ØˆÔØ!ŸYšY™[œ[ˆÔÐÐr   c                ó°   — | j         |         \  }}}| j        t          |¦  «        j                 }| j        j                             d|||         ¦  «        S )NÚformat_media_info)r2   r4   r   Úsettings_keyÚ_depsÚ	callbacksÚ
emit_first)r5   Úmedia_idÚ	source_idÚindexÚpathÚsettingss         r   Ú
media_infozAppGallery.media_info,   sQ   € Ø!%Ô!2°8Ô!<Ñˆ	�5˜$ØÔ%¥n°YÑ&?Ô&?Ô&LÔMˆØŒzÔ#×.Ò.Ð/BÀDÈ(ÐSXÌ/ÑZÔZÐZr   c                ó(   — | j         |         d         S )Nr   )r2   )r5   r?   s     r   Ú
media_pathzAppGallery.media_path1   s   € ØÔ  Ô*¨1Ô-Ð-r   c                óü   — dt          j        t          j                             t          j                             | ¦  «        ¦  «                             ¦   «         ¦  «                             ¦   «         d d…         z   S )NÚfile_é   )ÚhashlibÚsha256ÚosrB   ÚnormcaseÚabspathÚencodeÚ	hexdigest)rB   s    r   r?   zAppGallery.media_id4   sY   € à�œ­¬×(8Ò(8½¼¿ºÈÑ9NÔ9NÑ(OÔ(O×(VÒ(VÑ(XÔ(XÑYÔY×cÒcÑeÔeÐfiÐgiÐfiÔjÑjÐjr   Úanyc                ó@  •— || j         vr9|                     d¦  «        rd S t          ¦   «                              ||¦  «        S | j         |         \  }}}|                      ||¦  «         |                      ||                      |¦  «        d         |         ¦  «        S )NrH   r   )r2   Ú
startswithr0   ÚselectÚ_select_indexÚ	_registerÚ_resolve_lists)r5   Ú	referenceÚ
media_typer@   rA   rB   r8   s         €r   rT   zAppGallery.select8   sš   ø€ Ø˜DÔ-Ð-Ð-Ø×#Ò# GÑ,Ô,ð Ø�tÝ‘7”7—>’> )¨ZÑ8Ô8Ð8Ø!%Ô!2°9Ô!=Ñˆ	�5˜$Ø×Ò˜5 )Ñ,Ô,Ð,Ø�~Š~˜d D×$7Ò$7¸	Ñ$BÔ$BÀ1Ô$EÀeÔ$LÑMÔMÐMr   Nc           
     óX  ‡— |€|                       ¦   «         n|}d„ | j        j        D ¦   «         }g i }}t          D �]ß}||j                 ||j                 }}t          |¦  «        D �]±\  }}		 t          j        |	¦  «        }
n# t          $ r Y Œ(w xY w|  
                    |	¦  «        }|j        ||	f||<   |                      |	¦  «        }d|z   }d|
j        › d|
j        › �}|t          |	¦  «        j        ||dz   |z   |
j        |||j                 k    |d         |j        k    dœ}|dv r|d	z   |z   |d
<   |dk    r<t          |	¦  «        j                             ¦   «                              d¦  «        |d<   t+          ||¦  «        Št-          ‰|	¦  «        pU|                     t          j                             t          j                             |	¦  «        ¦  «        |d         ¦  «        |d<   ‰rˆfd„dD ¦   «         |d<   |                     |¦  «         �Œ³�Œá|| _        || _        |S )Nc                ó,   — i | ]}|d          |d         “ŒS )Úpath_keyÚlabelr   )r   Úrecords     r   ú
<dictcomp>z'AppGallery.snapshot.<locals>.<dictcomp>C   s#   € ÐaÐaÐa¸&�&˜Ô$ f¨W¤oÐaÐaÐar   zdeepy_api/media/z?v=ú-z/fileÚcurrent_gallery_source)ÚidÚnameÚkindÚurlÚsizeÚselectedÚactive)ÚimageÚvideoÚ3dz
/thumbnailÚ	thumbnailrk   ú.Úformatrc   c                ó*   •— i | ]}|‰v ¯|‰|         “ŒS r   r   )r   ÚkeyÚcacheds     €r   r_   z'AppGallery.snapshot.<locals>.<dictcomp>Y   sL   ø€ ð  'Eð  'Eð  'E¸CÐvyð  ~Dð  wDð  wD s¨F°3¬Kð  wDð  wDð  wDr   )Ú
resolutionÚdurationÚfpsÚ
model_typeÚsummary)r3   Ú_sessionÚmedia_registryr   Ú	files_keyr;   Ú	enumeraterL   ÚstatÚFileNotFoundErrorr?   rb   Ú_detect_media_typeÚst_mtime_nsÚst_sizer   rc   Úselected_keyÚsuffixÚlowerÚlstripr	   r   ÚgetrB   rM   rN   Úappendr2   r4   )r5   ÚgenÚlabelsÚitemsÚpathsÚsourceÚfilesrC   rA   rB   r{   r?   rd   ÚbaseÚversionÚitemrq   s                   @r   ÚsnapshotzAppGallery.snapshotA   sÊ  ø€ Ø ˜[ˆd�iŠi‰kŒkˆk¨cˆØaÐaÀDÄMÔD`ÐaÑaÔaˆØ˜2ˆuˆÝ%ð 	#ñ 	#ˆFØ! &Ô"2Ô3°S¸Ô9LÔ5M�8ˆEÝ(¨Ñ/Ô/ð #ñ #‘��tðÝœ7 4™=œ=�D�DøÝ(ð ð ð Ø�HðøøøàŸ=š=¨Ñ.Ô.�Ø#)¤9¨e°TÐ":��h‘Ø×.Ò.¨tÑ4Ô4�Ø)¨HÑ4�ØA Ô 0ÐAÐA°4´<ÐAÐA�Ø&µ°T±
´
´ÈÐVZÐ]dÑVdÐgnÑVnÐx|ô  yEð  SXð  \_ð  `fô  `sô  \tò  Stð  @Cð  D\ô  @]ð  agô  ajò  @jð  kð  k�ØÐ3Ð3Ð3Ø(,¨|Ñ(;¸gÑ(E�D˜Ñ%Ø˜4’<�<Ý%)¨$¡Z¤ZÔ%6×%<Ò%<Ñ%>Ô%>×%EÒ%EÀcÑ%JÔ%J�D˜‘NÝ& x°Ñ7Ô7�Ý3°F¸DÑAÔAð   GÀVÇZÂZÕPRÔPW×P`ÒP`ÕacÔah×apÒapÐquÑavÔavÑPwÔPwÐy}ð  Eô  zFñ  FGô  FG��V‘Øð Eð 'Eð  'Eð  'Eð  'EÐCrð  'Eñ  'Eô  'E�D˜‘OØ—’˜TÑ"Ô"Ð"Ñ"ñ'#ð( "ˆÔØ ˆÔØˆs   Á.BÂ
BÂB©rQ   r/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   rD   rF   Ústaticmethodr?   rT   r�   Ú__classcell__©r8   s   @r   r-   r-   $   sµ   ø€ € € € € ØMÐMð)ð )ð )ð )ð )ð
[ð [ð [ð
.ð .ð .ð ðkð kñ „\ðkðNð Nð Nð Nð Nð Nðð ð ð ð ð ð ð r   r-   c                  óN   ‡ — e Zd ZdZˆ fd„Zdˆ fd„	Zdˆ fd„	Zˆ fd„Zˆ fd„Zˆ xZ	S )	ÚGradioGalleryzèAn in-process driver for a live WebUI state; rendering stays in Gradio.

    The refresh callback requests a view update, never starts generation. This
    allows the same API to attach to the WebUI when hybrid mode is enabled.
    c                óZ   •— t          ¦   «                              ||¦  «         || _        d S r/   )r0   r1   Ú_refresh)r5   r6   r7   Úrefreshr8   s       €r   r1   zGradioGallery.__init__g   s(   ø€ Ý‰Œ×Ò˜˜uÑ%Ô%Ð%ØˆŒˆˆr   rQ   c                ót   •— t          ¦   «                              ||¦  «        }|                      ¦   «          |S r/   )r0   Úadd_pathr›   )r5   Úraw_pathÚpreferred_typeÚresultr8   s       €r   rž   zGradioGallery.add_pathk   s.   ø€ Ý‘”×!Ò! (¨NÑ;Ô;ˆØ�Š‰ŒˆØˆr   c                ót   •— t          ¦   «                              ||¦  «        }|                      ¦   «          |S r/   )r0   rT   r›   )r5   rX   rY   r¡   r8   s       €r   rT   zGradioGallery.selectp   s,   ø€ Ý‘”—’ 	¨:Ñ6Ô6ˆØ�Š‰ŒˆØˆr   c                ór   •— t          ¦   «                              |¦  «         |                      ¦   «          d S r/   )r0   Úsync_refresh_pathr›   )r5   Úpayloadr8   s     €r   r¤   zGradioGallery.sync_refresh_pathu   s,   ø€ Ý‰Œ×!Ò! 'Ñ*Ô*Ð*Ø�Š‰Œˆˆˆr   c                ór   •— t          ¦   «                              |¦  «         |                      ¦   «          d S r/   )r0   Úsync_latest_generatedr›   )r5   Úbefore_countsr8   s     €r   r§   z#GradioGallery.sync_latest_generatedy   s,   ø€ Ý‰Œ×%Ò% mÑ4Ô4Ð4Ø�Š‰Œˆˆˆr   r�   )
r‘   r’   r“   r”   r1   rž   rT   r¤   r§   r–   r—   s   @r   r™   r™   `   s°   ø€ € € € € ðð ð ð  ð  ð  ð  ðð ð ð ð ð ð
ð ð ð ð ð ð
ð ð ð ð ðð ð ð ð ð ð ð ð r   r™   )r”   Ú
__future__r   r#   rJ   rL   Úpathlibr   Úshared.deepy.galleryr   Úshared.deepy.media_registryr   Úshared.utils.gallery_sourcesr   r   Úshared.utils.media_settingsr	   r+   r-   r™   r   r   r   ú<module>r¯      s  ðà @Ð @Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø <Ð <Ð <Ð <Ð <Ð <Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð(9ð 9ð 9ð 9ð 9�ñ 9ô 9ð 9ðxð ð ð ð �Jñ ô ð ð ð r   