§
    ¸)ýfÑ$  ã                   óˆ   — d dl mZ d dlZ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	 d„ Z
d„ Zd„ Zd„ Zd„ Z G d	„ d
e¦  «        ZdS )é    )Úprint_functionN)Úcontextmanagerc                 ó$   — t          | ¦  «         d S ©N)Úprint©Úmsgs    úp/home/blender/git/blender-v430/install_release/4.3/python/lib/python3.11/site-packages/pxr/UsdUtils/usdzUtils.pyÚ_Printr   %   s   € Ý	ˆ#�J„J€J€J€Jó    c                 óJ   — t           j                             | dz   ¦  «         d S )Nú
)ÚsysÚstderrÚwriter   s    r
   Ú_Errr   (   s"   € Ý„J×Ò�S˜4‘ZÑ Ô Ð Ð Ð r   c                  ó   — dgS )Nú.usdz© r   r   r
   Ú_AllowedUsdzExtensionsr   +   s
   € Øˆ9Ðr   c                  ó
   — g d¢S )N)z.usdz.usdaz.usdcr   r   r   r
   Ú_AllowedUsdExtensionsr   .   s   € Ø%Ð%Ð%Ð%r   c                 óJ  ‡— |                       d¦  «        st          d| z  ¦  «         dS t          j                             | ¦  «        st          d| z  ¦  «         |st          d¦  «         dS |rmt          j                             t          j                             |¦  «        ¦  «        r1t          j        t          j                             |¦  «        ¦  «         t          j                             |¦  «        rt          d|z  ¦  «         dS ˆfd„Št          j
        ¦   «         }	  ‰| |||¦  «         t          j        t          j                             |¦  «        t          j                             |¦  «        ¦  «         n#  t          j        |¦  «         Y nxY wdS )	zö
    Given a usdz package usdzFile, extracts the contents of the archive under
    the extractDir directory. Since usdz packages can contain other usdz
    packages, recurse flag can be used to extract the nested structure
    appropriately.
    r   z"'%s' does not have .usdz extensionFzusdz file '%s' does not exist.zNo extract dir specifiedz!Extract Dir: '%s' already exists.c                 ó@  •— t          j        | ¦  «        5 }|rt          d| ›d|›d�¦  «         |                     |¦  «         |rÀt	          j        |¦  «        D ]«}|                     d¦  «        r”t          d|z  ¦  «         t          j                             ||¦  «        } ‰|t          j         	                    |¦  «        d         ||¦  «         t	          j
        t          j                             |¦  «        ¦  «         Œ¬d d d ¦  «         d S # 1 swxY w Y   d S )NzExtracting usdz file 'z' to 'ú'r   zExtracting item '%s'.r   )ÚzipfileÚZipFiler   Ú
extractallÚosÚlistdirÚendswithÚpathÚjoinÚsplitextÚremoveÚabspath)ÚzipFileÚextractedDirÚrecurseÚverboseÚusdzArchiveÚitemÚitemPathÚ_ExtractZips          €r
   r.   z'ExtractUsdzPackage.<locals>._ExtractZipJ   se  ø€ ÝŒ_˜WÑ%Ô%ð 	=¨Øð 2Ý�Ø!˜'˜' < < <ð1ñ 2ô 2ð 2à×"Ò" <Ñ0Ô0Ð0Øð =ÝœJ |Ñ4Ô4ð =ð =�DØ—}’} WÑ-Ô-ð =ÝÐ8¸$Ñ>Ñ?Ô?Ð?Ý#%¤7§<¢<°¸dÑ#CÔ#C˜Ø#˜ H­b¬g×.>Ò.>¸xÑ.HÔ.HÈÔ.KØ '¨ñ2ô 2ð 2åœ	¥"¤'§/¢/°(Ñ";Ô";Ñ<Ô<Ð<øð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s   –C0DÄDÄDT)r!   r   r   r"   ÚexistsÚisdirr&   ÚshutilÚrmtreeÚtempfileÚmkdtempÚmove)ÚusdzFileÚ
extractDirr)   r*   ÚforceÚtmpExtractPathr.   s         @r
   ÚExtractUsdzPackager:   1   s‹  ø€ ð ×Ò˜gÑ&Ô&ð ÝÐ5¸Ñ@ÑAÔAÐAØˆuåŒG�NŠN˜8Ñ$Ô$ð >ÝÐ1°HÑ<Ñ=Ô=Ð=àð ÝÐ)Ñ*Ô*Ð*Øˆuàð 2•”—’�rœwŸš¨zÑ:Ô:Ñ;Ô;ð 2Ý„}•R”W—_’_ ZÑ0Ô0Ñ1Ô1Ð1å	„w‡}‚}�ZÑ Ô ð ÝÐ4°zÑAÑBÔBÐBØˆuð=ð =ð =ð =ð =õ$ Ô%Ñ'Ô'€Nð&Øˆ�H˜n¨g°wÑ?Ô?Ð?ÝŒ•B”G—O’O NÑ3Ô3µR´W·_²_ÀZÑ5PÔ5PÑQÔQÐQÐQøð&ÝŒ�nÑ%Ô%Ð%Ð%Ð%øøøØˆ4s   Ä*AF ÆF c                   óN   — e Zd ZdZd
d„Zd„ Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d	„ ZdS )ÚUsdzAssetIteratoraŸ  
    Class that provides an iterator for usdz assets. Within context, it
    extracts the contents of the usdz package, provides generators for all usd
    files and all assets and on exit packs the extracted files back recursively 
    into a usdz package.
    Note that root layer of the usdz package might not be compliant which can
    cause UsdzAssetIterator to raise an exception while repacking on exit.
    Nc                 óÔ  — |rd | _         nt          j        ¦   «         | _         t          j                             |¦  «        d         }|r t          j                             ||¦  «        n$t          j                             | j         |¦  «        | _        t          j                             |¦  «        | _	        || _
        | j
        r"t          d| j	        ›d| j        ›d�¦  «         d S d S )Nr   z$Initializing UsdzAssetIterator for (z) with (z) temp extract dir)Ú_tmpDirr3   r4   r   r"   r$   r#   r7   r&   r6   r*   r   )Úselfr6   r*   Ú	parentDirÚusdzFileDirs        r
   Ú__init__zUsdzAssetIterator.__init__m   sÜ   € ð ð 	.ØˆDŒLˆLå#Ô+Ñ-Ô-ˆDŒLÝ”g×&Ò& xÑ0Ô0°Ô3ˆØBKð =�"œ'Ÿ,š, y°+Ñ>Ô>Ð>Ý”W—\’\ $¤,°Ñ<Ô<ð 	ŒåœŸš¨Ñ1Ô1ˆŒØˆŒØŒ<ð 	=ÝˆFØ œM˜M˜M¨4¬?¨?¨?ð<ñ =ô =ð =ð =ð =ð	=ð 	=r   c                 óN   ‡ — ˆ fd„t          j        ‰ j        ¦  «        D ¦   «         S )Nc           	      ó¨   •— g | ]N\  }}}|D ]E}t           j                             t           j                             ||¦  «        ‰j        ¦  «        ‘ŒFŒOS r   )r   r"   Úrelpathr#   r7   )Ú.0ÚrootÚdirsÚfilesÚfr?   s        €r
   ú
<listcomp>z5UsdzAssetIterator._ExtractedFiles.<locals>.<listcomp>   sf   ø€ ð $ð $ð $Ù)˜˜d EØ"ð$ð $àõ ”G—O’O¥B¤G§L¢L°°qÑ$9Ô$9¸4¼?ÑKÔKð $ð $ð $ð $r   )r   Úwalkr7   ©r?   s   `r
   Ú_ExtractedFilesz!UsdzAssetIterator._ExtractedFiles~   s:   ø€ ð$ð $ð $ð $Ý-/¬W°T´_Ñ-EÔ-Eð$ñ $ô $ð $r   c                 óT  — |                       d¦  «        sdS ddlm}m} |j                             | ¦  «        5 }|D ]Q}|rt          d|z  ¦  «         	 |                     |¦  «         Œ-# |j        $ r}t          d|z  ¦  «         ‚ d }~ww xY w	 d d d ¦  «         dS # 1 swxY w Y   d S )Nr   Fr   )ÚUsdÚTfz.. adding: %szICreateUsdzPackage failed to add file '%s' to package. Discarding package.T)
r!   ÚpxrrP   rQ   ÚZipFileWriterÚ	CreateNewr   ÚAddFileÚErrorExceptionr   )r6   Ú
filesToAddr*   rP   rQ   Ú
usdzWriterrJ   Úes           r
   Ú_CreateUsdzPackagez$UsdzAssetIterator._CreateUsdzPackage„   s@  € à×!Ò! 'Ñ*Ô*ð 	Ø�5àÐÐÐÐÐÐÐØÔ×(Ò(¨Ñ2Ô2ð 	°jð  ð 	ð 	�Øð /Ý˜/¨AÑ-Ñ.Ô.Ð.ðØ×&Ò& qÑ)Ô)Ð)Ð)øØÔ(ð ð ð Ýð 7Ø9:ñ;ñ <ô <ð <ð øøøøð	øøøð
 ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s5   ºBÁA*Á)BÁ*
BÁ4BÂBÂBÂB!Â$B!c                 óJ   — t          | j        | j        d| j        d¦  «         | S )NFT)r:   r6   r7   r*   rM   s    r
   Ú	__enter__zUsdzAssetIterator.__enter__™   s*   € å˜4œ=¨$¬/¸5À$Ä,Øñ	ô 	ð 	àˆr   c           	      óh  — ddl m} t          j                             | j        ¦  «        sd S t          j        ¦   «         }t          j        | j        ¦  «         |                      ¦   «         }| j	        r6t          dd                     |¦  «        ›d| j        ›d| j        ›d�¦  «         	 |€&t                               | j        || j	        ¦  «         t          j        |¦  «         t          j        | j        ¦  «         d S # t          j        |¦  «         t          j        | j        ¦  «         w xY w)Nr   )rQ   zPacking files [z, z] in (z) directory as (z) usdz package.)rR   rQ   r   r"   r/   r7   ÚgetcwdÚchdirrN   r*   r   r#   r6   r<   rZ   r1   r2   )r?   ÚexcTypeÚexcValÚexcTBrQ   Ú
restoreDirrW   s          r
   Ú__exit__zUsdzAssetIterator.__exit__Ÿ   s*  € àÐÐÐÐÐåŒw�~Š~˜dœoÑ.Ô.ð 	ØˆFÝ”Y‘[”[ˆ
Ý
Œ�”Ñ!Ô!Ð!Ø×)Ò)Ñ+Ô+ˆ
ØŒ<ð 	 ÝˆFØŸš :Ñ.Ô.Ð.Ð.°´°°Ø”��ðñ  ô  ð  ð	+ØˆÝ!×4Ò4Ø”M :¨t¬|ñ=ô =ð =õ ŒH�ZÑ Ô Ð ÝŒM˜$œ/Ñ*Ô*Ð*Ð*Ð*øõ ŒH�ZÑ Ô Ð ÝŒM˜$œ/Ñ*Ô*Ð*Ð*øøøs   Â+(D Ä/D1c              #   óÒ  ‡K  — t           j                             | j        ¦  «        sdV — dS t	          ¦   «         t          ¦   «         z   Šˆfd„|                      ¦   «         D ¦   «         }t          j        ¦   «         }t          j        | j        ¦  «         |D ]¹}t           j         	                    |¦  «        d         t	          ¦   «         v rg| j
        rt          d|z  ¦  «         t          || j
        | j        ¦  «        5 }|                     ¦   «         E d{V —† ddd¦  «         n# 1 swxY w Y   Œœ| j
        rt          d|z  ¦  «         |V — Œºt          j        |¦  «         dS )zH
        Generator for UsdAssets respecting nested usdz assets.
        Nc                 ób   •— g | ]+}t           j                             |¦  «        d          ‰v ¯)|‘Œ,S )é   )r   r"   r$   )rF   rJ   ÚallowedExtensionss     €r
   rK   z/UsdzAssetIterator.UsdAssets.<locals>.<listcomp>¿   sC   ø€ ð =ð =ð = Ý”× Ò  Ñ#Ô# AÔ&Ð*;Ð;Ð;ð Ø;Ð;Ð;r   rg   úIterating nested usdz asset: %súIterating usd asset: %s)r   r"   r/   r7   r   r   rN   r^   r_   r$   r*   r   r<   Ú	UsdAssets)r?   ÚextractedFilesrc   ÚextractedFileÚ
nestedUsdzrh   s        @r
   rk   zUsdzAssetIterator.UsdAssets¶   sÅ  øè è € õ Œw�~Š~˜dœoÑ.Ô.ð 	ØˆEˆEˆEØˆFå2Ñ4Ô4Õ7LÑ7NÔ7NÑNÐð=ð =ð =ð = T×%9Ò%9Ñ%;Ô%;ð =ñ =ô =ˆå”Y‘[”[ˆ
Ý
Œ�”Ñ!Ô!Ð!Ø+ð 	$ð 	$ˆMÝŒw×Ò Ñ.Ô.¨qÔ1Õ5KÑ5MÔ5MÐMÐMØ”<ð MÝÐ<¸mÑKÑLÔLÐLå& }°d´lØœñ)ô )ð :Ø,6Ø#-×#7Ò#7Ñ#9Ô#9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :øð ”<ð EÝÐ4°mÑCÑDÔDÐDØ#Ð#Ð#Ð#Ð#Ý
Œ�ÑÔÐÐÐs   ÄD)Ä)D-	Ä0D-	c              #   ó~  K  — t           j                             | j        ¦  «        sdV — dS |                      ¦   «         }t          j        ¦   «         }t          j        | j        ¦  «         |D ]¹}t           j                             |¦  «        d         t          ¦   «         v rg| j	        rt          d|z  ¦  «         t          || j	        | j        ¦  «        5 }|                     ¦   «         E d{V —† ddd¦  «         n# 1 swxY w Y   Œœ| j	        rt          d|z  ¦  «         |V — Œºt          j        |¦  «         dS )zm
        Generator for all assets packed in the usdz package, respecting nested
        usdz assets.
        Nrg   ri   rj   )r   r"   r/   r7   rN   r^   r_   r$   r   r*   r   r<   Ú	AllAssets)r?   rl   rc   rm   rn   s        r
   rp   zUsdzAssetIterator.AllAssetsÑ   sŠ  è è € õ
 Œw�~Š~˜dœoÑ.Ô.ð 	ØˆEˆEˆEØˆFà×-Ò-Ñ/Ô/ˆÝ”Y‘[”[ˆ
Ý
Œ�”Ñ!Ô!Ð!Ø+ð 
	$ð 
	$ˆMÝŒw×Ò Ñ.Ô.¨qÔ1Õ5KÑ5MÔ5MÐMÐMØ”<ð MÝÐ<¸mÑKÑLÔLÐLÝ& }°d´lØœñ)ô )ð >Ø,6Ø'1×';Ò';Ñ'=Ô'=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >øð ”<ð EÝÐ4°mÑCÑDÔDÐDØ#Ð#Ð#Ð#Ð#Ý
Œ�ÑÔÐÐÐs   ÃC?Ã?D	ÄD	r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rB   rN   ÚstaticmethodrZ   r\   rd   rk   rp   r   r   r
   r<   r<   d   s˜   € € € € € ðð ð=ð =ð =ð =ð"$ð $ð $ð ðð ñ „\ðð(ð ð ð+ð +ð +ð.ð ð ð6ð ð ð ð r   r<   )Ú
__future__r   r   r   Úglobr   r1   r3   Ú
contextlibr   r   r   r   r   r:   Úobjectr<   r   r   r
   ú<module>rz      së   ðð8 &Ð %Ð %Ð %Ð %Ð %Ø 
€
€
€
Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð!ð !ð !ðð ð ð&ð &ð &ð1ð 1ð 1ðfDð Dð Dð Dð D˜ñ Dô Dð Dð Dð Dr   