§
    ÎÐjÙ  ã                   ó^  — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZmZmZm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mZ ddlmZ e ee¦  «                 Z  G d„ de¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ G d„ de¦  «        Z%d„ Z&dS )zGNative Gradio workspace viewer routes; not mounted by standalone Deepy.é    )ÚLiteral)ÚPath)ÚTemporaryDirectory)ÚFileÚHTTPExceptionÚQueryÚResponseÚ
UploadFile)Ú	BaseModelÚFieldÚ
StrictBoolÚ	StrictInt)Úrun_in_threadpool)Ú_AUDIO_EXTENSIONSÚ_IMAGE_EXTENSIONSÚ_VIDEO_EXTENSIONS)Úsave_upload)ÚMESH_IMPORT_EXTENSIONSÚSOURCES)Úpersist_gallery_importc                   óÀ   — e Zd ZU eed<   eed<   eed<    ed¬¦  «        Zee         ed<   dZ	edz  ed<   dZ
ed	         dz  ed
<   dZedz  ed<   dZeed<   dZeed<   dS )ÚViewerActionÚ	workspaceÚsourceÚrevisioné   )Ú
min_lengthÚkeysNÚbeforeÚstartÚedgeÚtargetÚ ÚnameFÚ	confirmed)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚGallerySourceIdr   r   Úlistr   r!   r   r"   r$   r%   Úbool© ó    úIC:\Users\johnn\OneDrive\Documents\AI\shared\deepy\workspace_viewer_api.pyr   r      s°   € € € € € € Ø€N€N�NØÐÐÑØ€M€M�MØ�e qÐ)Ñ)Ô)€Dˆ$ˆsŒ)Ð)Ð)Ñ)Ø€FˆC�$‰JÐÐÑØ$(€Dˆ'�'Ô
˜TÑ
!Ð(Ð(Ñ(Ø€FˆC�$‰JÐÐÑØ€Dˆ#€N€N�NØ€IˆtÐÐÑÐÐr/   r   c                   óˆ   — e Zd ZU eed<   dZeed<    edd¬¦  «        Ze	ed<    ee
¬¦  «        Ze
e         ed<   d	Zeed
<   dS )Ú
ViewerPager   Úvideor   r   )ÚdefaultÚgeÚpage)Údefault_factoryÚselectedFÚinitialN)r&   r'   r(   r)   r*   r   r+   r   r6   Úintr,   r8   r9   r-   r.   r/   r0   r2   r2      s{   € € € € € € Ø€N€N�NØ%€FˆOÐ%Ð%Ñ%Ø�˜a AÐ&Ñ&Ô&€Dˆ#Ð&Ð&Ñ&Ø˜%°Ð5Ñ5Ô5€Hˆd�3ŒiÐ5Ð5Ñ5Ø€GˆTÐÐÑÐÐr/   r2   c                   ó   — e Zd ZU eed<   dS )ÚViewerRetentionÚdaysN)r&   r'   r(   r   r*   r.   r/   r0   r<   r<   '   s   € € € € € € Ø
€O€O�O€O€Or/   r<   c                   ó$   — e Zd ZU eed<   eed<   dS )ÚViewerProtectionr   Ú	protectedN)r&   r'   r(   r)   r*   r   r.   r/   r0   r?   r?   +   s'   € € € € € € Ø€N€N�NØÐÐÑÐÐr/   r?   c                   óR   — e Zd ZU eed<   ed         ed<   dZedz  ed<   dZeed<   dS )ÚViewerMigrationr   )ÚsharedÚ	dedicatedÚmodeNÚfolderFr%   )	r&   r'   r(   r)   r*   r   rF   r%   r   r.   r/   r0   rB   rB   0   sQ   € € € € € € Ø€N€N�NØ
Ð'Ô
(Ð(Ð(Ñ(Ø€FˆC�$‰JÐÐÑØ!€IˆzÐ!Ð!Ñ!Ð!Ð!r/   rB   c                 óè  ‡‡— ‰j         Š|                      d¦  «        dt          fˆfd„¦   «         }|                      d¦  «        dt	          dd¬¦  «        fdt
          d	t          d
t          fˆfd„¦   «         }|                      d¦  «        dt          fˆfd„¦   «         }|                      d¦  «        ˆfd„¦   «         }|                      d¦  «        dt          fˆfd„¦   «         }|                      d¦  «        dt          fˆfd„¦   «         }|                      d¦  «        dt
          d	t          dt
          fˆfd„¦   «         }|                      d¦  «        dt
          d	t          dt
          fˆˆfd„¦   «         }	|                      d¦  «        t          d¦  «        fdt
          dt          fˆfd„¦   «         }
|                      d¦  «        dt          d         dt          fˆfd„¦   «         }d S )Nz#/deepy_api/workspace_viewer/storageÚpayloadc                 óB   •—  ‰j         di |                      ¦   «         ¤ŽS ©Nr.   )ÚmigrateÚ
model_dump©rH   Úviewers    €r0   Ústoragez'mount_workspace_viewer.<locals>.storage:   s'   ø€ àˆvŒ~Ð5Ð5 × 2Ò 2Ñ 4Ô 4Ð5Ð5Ð5r/   z/deepy_api/workspace_viewerr3   r   )r5   r   r   r6   c                 ó2   •— ‰                      | ||¦  «        S ©N)r6   )r   r   r6   rN   s      €r0   r6   z$mount_workspace_viewer.<locals>.page>   s   ø€ à�{Š{˜9 f¨dÑ3Ô3Ð3r/   c                 óB   •—  ‰j         di |                      ¦   «         ¤ŽS rJ   )r6   rL   rM   s    €r0   Úselected_pagez-mount_workspace_viewer.<locals>.selected_pageB   s'   ø€ àˆvŒ{Ð2Ð2˜W×/Ò/Ñ1Ô1Ð2Ð2Ð2r/   z%/deepy_api/workspace_viewer/retentionc                  ó,   •— ‰                       ¦   «         S rQ   )Ú	retention)rN   s   €r0   rU   z)mount_workspace_viewer.<locals>.retentionF   s   ø€ à×ÒÑ!Ô!Ð!r/   c                 ó8   •— ‰                      | j        ¦  «        S rQ   )rU   r=   rM   s    €r0   Úsave_retentionz.mount_workspace_viewer.<locals>.save_retentionJ   s   ø€ à×Ò ¤Ñ-Ô-Ð-r/   z&/deepy_api/workspace_viewer/protectionc                 óD   •— ‰                      | j        | j        ¦  «        S rQ   )Úprotectr   r@   rM   s    €r0   Ú
protectionz*mount_workspace_viewer.<locals>.protectionN   s   ø€ à�~Š~˜gÔ/°Ô1BÑCÔCÐCr/   z /deepy_api/workspace_viewer/infoÚkeyc                 ó2   •— ‰                      | ||¦  «        S rQ   )Úinfo)r   r   r[   rN   s      €r0   r]   z$mount_workspace_viewer.<locals>.infoR   s   ø€ à�{Š{˜9 f¨cÑ2Ô2Ð2r/   z%/deepy_api/workspace_viewer/thumbnailc              “   óT  •K  — ddl m} t          ‰j        | ||¦  «        ƒ d {V —†}‰j                             |¦  «        dvrt          dd¦  «        ‚	  ||¦  «        ƒ d {V —†}n# t          $ r t          dd¦  «        ‚w xY w|st          dd¦  «        ‚t          |d	d
di¬¦  «        S )Nr   )Úrender_thumbnail)Úimager3   Ú3di�  z Not an image, video or 3D asset.i”  zMedia file not found.zPreview unavailable.z
image/jpegzCache-Controlzprivate, max-age=3600)Ú
media_typeÚheaders)	Úshared.deepy.thumbnailsr_   r   Úthumbnail_pathÚgalleryÚ_detect_media_typer   ÚFileNotFoundErrorr	   )r   r   r[   r_   Úpathr`   ÚservicerN   s         €€r0   Ú	thumbnailz)mount_workspace_viewer.<locals>.thumbnailV   sø   øè è € à<Ð<Ð<Ð<Ð<Ð<Ý& vÔ'<¸iÈÐQTÑUÔUÐUÐUÐUÐUÐUÐUˆØŒ?×-Ò-¨dÑ3Ô3Ð;SÐSÐSÝ Ð%GÑHÔHÐHð	>Ø*Ð*¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆEˆEøÝ ð 	>ð 	>ð 	>Ý Ð%<Ñ=Ô=Ð=ð	>øøøàð 	=Ý Ð%;Ñ<Ô<Ð<Ý˜¨,ÀÐRiÐ@jÐkÑkÔkÐks   ÁA& Á&Bz"/deepy_api/workspace_viewer/import.Úfilec           
   “   ó¾  •‡ ‡‡K  — t          ‰                     ‰ ¦  «        d         ¦  «        Š‰                     dd¬¦  «         t          d‰¬¦  «        5 }t	          |t          |¦  «        dt
          t          z  t          z  t          t          ¦  «        z  d¬¦  «        ƒ d {V —†Šˆˆˆˆ fd„}t          |¦  «        ƒ d {V —†cd d d ¦  «         S # 1 swxY w Y   d S )	NÚ	save_pathT)ÚparentsÚexist_okz.import-)ÚprefixÚdiri   @)ÚlimitÚ
extensionsÚpreserve_filenamec                  ó&  •— ‰j         5  ‰‰j        k    rt          d¦  «        ‚‰j                             ¦   «         t
          v r<ddlm}   | t          ‰¦  «        ‰ 	                    ‰¦  «        d         ¦  «        \  }}nt          ‰‰d¬¦  «        \  }}	 ‰                     |d¬¦  «        }n4# t          $ r' |s#t          |¦  «                             d¬	¦  «         ‚ w xY w||t          |¦  «        j        d
œcd d d ¦  «         S # 1 swxY w Y   d S )Nz=The active workspace changed during upload. Please try again.r   )Úimport_mesh_fileÚmesh_save_pathT)Úmoverf   )Úcontext)Ú
missing_ok)ÚidÚreusedÚfilename)Ú_mutation_lockÚworkspace_idÚ
ValueErrorÚsuffixÚlowerr   Úshared.utils.mesh_outputsrw   r)   Úworkspace_output_configr   Úimport_mediaÚ	Exceptionr   Úunlinkr$   )rw   ri   r}   Úmedia_idÚoutputrj   r   r   s       €€€€r0   Úaddz3mount_workspace_viewer.<locals>.upload.<locals>.addl   s   ø€ ØÔ+ð [ð [Ø  GÔ$8Ò8Ð8Ý(Ð)hÑiÔiÐiØ”}×*Ò*Ñ,Ô,Õ0FÐFÐFØNÐNÐNÐNÐNÐNØ'7Ð'7½¸F¹¼ÀW×EdÒEdÐenÑEoÔEoð  qAô  FBñ  (Cô  (C™˜˜f˜få'=¸fÀfÐSWÐ'XÑ'XÔ'X™˜˜fðØ#*×#7Ò#7¸ÀiÐ#7Ñ#PÔ#P˜˜øÝ$ð ð ð Ø%ð ?Ý  ™JœJ×-Ò-¸Ð-Ñ>Ô>Ð>Øðøøøð #+°fÍ$ÈtÉ*Ì*Ì/ÐZÐZð[ð [ð [ð [ñ [ô [ð [ð [ð [ð [ð [ð [øøøð [ð [ð [ð [ð [ð [s*   ‰BDÂB.Â-DÂ.1CÃDÄD
ÄD
)r   r…   Úmkdirr   r   r   r   r   Úsetr   r   )r   rl   Ú	temporaryr‹   rŠ   r   rj   s   `   @@€r0   Úuploadz&mount_workspace_viewer.<locals>.uploadd   s–  øøøøè è € õ �g×5Ò5°iÑ@Ô@ÀÔMÑNÔNˆØ�Š˜T¨DˆÑ1Ô1Ð1Ý z°vÐ>Ñ>Ô>ð 	0À)Ý& t­T°)©_¬_ÐDVÕctõ  xIñ  dIõ  L]ñ  d]õ  `cõ  dzñ  `{ô  `{ñ  d{ð  OSð  Tñ  Tô  Tð  Tð  Tð  Tð  Tð  Tð  TˆFð[ð [ð [ð [ð [ð [ð [ð [õ  +¨3Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/ð%	0ð 	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   ÁA.CÃCÃCz$/deepy_api/workspace_viewer/{action}Úaction)ÚreorderÚejectÚdeleteÚcopyry   Úarchivec                 óT   •— ‰                      | |                     ¦   «         ¦  «        S rQ   )r�   rL   )r�   rH   rN   s     €r0   r�   z&mount_workspace_viewer.<locals>.action~   s#   ø€ à�}Š}˜V W×%7Ò%7Ñ%9Ô%9Ñ:Ô:Ð:r/   )Úworkspace_viewerÚpostrB   Úgetr   r)   r+   r:   r2   r<   r?   r   r
   r   r   )Úapprj   rO   r6   rS   rU   rW   rZ   r]   rk   r�   r�   rN   s    `          @r0   Úmount_workspace_viewerr›   7   sø  øø€ ØÔ%€Fà‡X‚XÐ3Ñ4Ô4ð6�ð 6ð 6ð 6ð 6ð 6ñ 5Ô4ð6ð 	‡W‚WÐ*Ñ+Ô+Ø7>ÍEÐRSÐXYÈNÉNÌNð 4ð 4�ð 4¥_ð 4Åcð 4ð 4ð 4ð 4ð 4ñ ,Ô+ð4ð 	‡X‚XÐ+Ñ,Ô,ð3�zð 3ð 3ð 3ð 3ð 3ñ -Ô,ð3ð 	‡W‚WÐ4Ñ5Ô5ð"ð "ð "ð "ñ 6Ô5ð"ð 	‡X‚XÐ5Ñ6Ô6ð.¥ð .ð .ð .ð .ð .ñ 7Ô6ð.ð 	‡X‚XÐ6Ñ7Ô7ðDÕ,ð Dð Dð Dð Dð Dñ 8Ô7ðDð 	‡W‚WÐ/Ñ0Ô0ð3�ð 3¥_ð 3½3ð 3ð 3ð 3ð 3ð 3ñ 1Ô0ð3ð 	‡W‚WÐ4Ñ5Ô5ðl¥3ð lµð lÅcð lð lð lð lð lð lñ 6Ô5ðlð 	‡X‚XÐ2Ñ3Ô3Ý8<¸S¹	¼	ð 0ð 0¥ð 0­:ð 0ð 0ð 0ð 0ð 0ñ 4Ô3ð0ð2 	‡X‚XÐ4Ñ5Ô5ð;•wÐVÔWð ;Õbnð ;ð ;ð ;ð ;ð ;ñ 6Ô5ð;ð ;ð ;r/   N)'Ú__doc__Útypingr   Úpathlibr   Útempfiler   Úfastapir   r   r   r	   r
   Úpydanticr   r   r   r   Ústarlette.concurrencyr   Úshared.deepy.galleryr   r   r   Úshared.deepy.voicer   Úshared.utils.gallery_sourcesr   r   Úshared.utils.media_importsr   Útupler+   r   r2   r<   r?   rB   r›   r.   r/   r0   ú<module>r¨      sý  ðà MÐ MØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ *Ð *Ð *Ð *Ð *Ð *Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ =Ð =Ð =Ð =Ð =Ð =à˜%˜% ™.œ.Ô)€ð	ð 	ð 	ð 	ð 	�9ñ 	ô 	ð 	ðð ð ð ð �ñ ô ð ðð ð ð ð �iñ ô ð ðð ð ð ð �yñ ô ð ð
"ð "ð "ð "ð "�iñ "ô "ð "ðI;ð I;ð I;ð I;ð I;r/   