Ë
    g^(h’,  ã            	       ó   — 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 dlm	Z	m
Z
mZmZ d dlmZ d dlZd dlZd dlmc mZ d dlmZ d dlmZmZ d dlmZ d dlmZ d	d
lmZmZm Z m!Z!  ejD                  e#«      Z$ G d„ d«      Z% G d„ d«      Z&de'de(e'   de'de'fd„Z)dedee(e'   e*e'e(e'   f   f   defd„Z+ G d„ d«      Z,	 ddede'de-de,fd„Z.y)é    N)ÚPath)ÚAnyÚIOÚOptionalÚUnion)ÚSelf)Úconfig)ÚBuildOptionsBaseÚ
CppBuilder)Úreorder_kwargs)ÚFileLikeé   )ÚAOTINDUCTOR_DIRÚARCHIVE_VERSIONÚCONSTANTS_DIRÚCUSTOM_OBJ_FILENAME_PREFIXc                   ób   — e Zd Zdeddfd„Zdefd„Zdd„Zdede	e
ef   ddfd	„Zded
eddfd„Zy)ÚPT2ArchiveWriterÚarchive_pathÚreturnNc                 ó    — || _         d | _        y ©N©r   Úarchive_file©Úselfr   s     ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_inductor/package/package.pyÚ__init__zPT2ArchiveWriter.__init__   s   € Ø&2ˆÔØ7;ˆÕó    c                 óî   — | j                   �J ‚t        j                  | j                  dt        j                  ¬«      | _         | j                  dt        t        «      «       | j                  dd«       | S )NÚw©ÚcompressionÚversionÚarchive_formatÚpt2)r   ÚzipfileÚZipFiler   Ú
ZIP_STOREDÚwritestrÚstrr   ©r   s    r   Ú	__enter__zPT2ArchiveWriter.__enter__#   sa   € Ø× Ñ Ð(Ð(Ð(Ü#ŸO™OØ×Ñ˜s´×0BÑ0Bô
ˆÔð 	�‰�i¤¤_Ó!5Ô6Ø�‰Ð&¨Ô.Øˆr   c                 ób   — | j                   €J ‚| j                   j                  «        d | _         y r   ©r   Úclose©r   Úargss     r   Ú__exit__zPT2ArchiveWriter.__exit__,   s1   € Ø× Ñ Ð,Ð,Ð,Ø×Ñ×ÑÔ!Ø ˆÔØr   ÚnameÚdatac                 óX   — | j                   €J ‚| j                   j                  ||«       y r   )r   r*   )r   r4   r5   s      r   r*   zPT2ArchiveWriter.writestr2   s*   € Ø× Ñ Ð,Ð,Ð,Ø×Ñ×"Ñ" 4¨Õ.r   Ú	file_pathc                 ó    — t        |«      j                  «       s
J |› d�«       ‚| j                  €J ‚| j                  j                  ||¬«       y)z’
        Copy a file into the archive.
        name: The destination file inside the archive.
        file_path: The source file on disk.
        z is not a valid file pathN)Úarcname)r   Úis_filer   Úwrite)r   r4   r7   s      r   Ú
write_filezPT2ArchiveWriter.write_file6   sR   € ô �I‹×&Ñ&Ô(ÐQ¨Y¨KÐ7PÐ*QÓQÐ(Ø× Ñ Ð,Ð,Ð,Ø×Ñ×Ñ 	°4ÐÕ8r   ©r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r-   r3   r+   r   Úbytesr*   r<   © r   r   r   r      sc   „ ð< Xð <°$ó <ð˜4ó óð/˜Sð /¨¨e°S¨jÑ(9ð /¸dó /ð9˜sð 9¨sð 9°tô 9r   r   c                   óv   — e Zd Zdeddfd„Zdefd„Zdd„Zdedefd„Z	d	ed
edefd„Z
d
eddfd„Zdee   fd„Zy)ÚPT2ArchiveReaderr   r   Nc                 ó    — || _         d | _        y r   r   r   s     r   r   zPT2ArchiveReader.__init__B   s   € Ø!-ˆÔØ7;ˆÕr   c                 óp   — t        j                  | j                  dt         j                  ¬«      | _        | S )NÚrr"   )r'   r(   r   r)   r   r,   s    r   r-   zPT2ArchiveReader.__enter__F   s-   € Ü#ŸO™OØ×Ñ˜s´×0BÑ0Bô
ˆÔð ˆr   c                 óP   — | j                   �| j                   j                  «        y r   r/   r1   s     r   r3   zPT2ArchiveReader.__exit__L   s#   € Ø×ÑÐ(Ø×Ñ×#Ñ#Ô%Ør   r4   c                 óT   — | j                   €J ‚| j                   j                  |«      S r   )r   Úread)r   r4   s     r   rJ   zPT2ArchiveReader.readQ   s+   € Ø× Ñ Ð,Ð,Ð,Ø× Ñ ×%Ñ% dÓ+Ð+r   ÚmemberÚpathc                 óV   — | j                   €J ‚| j                   j                  ||«      S r   )r   Úextract)r   rK   rL   s      r   Úextract_to_pathz PT2ArchiveReader.extract_to_pathU   s-   € Ø× Ñ Ð,Ð,Ð,Ø× Ñ ×(Ñ(¨°Ó6Ð6r   c                 óV   — | j                   €J ‚| j                   j                  |«       y r   )r   Ú
extractall)r   rL   s     r   rQ   zPT2ArchiveReader.extractallY   s(   € Ø× Ñ Ð,Ð,Ð,Ø×Ñ×$Ñ$ TÕ*r   c                 óR   — | j                   €J ‚| j                   j                  «       S r   )r   Únamelistr,   s    r   Úget_file_nameszPT2ArchiveReader.get_file_names]   s)   € Ø× Ñ Ð,Ð,Ð,Ø× Ñ ×)Ñ)Ó+Ð+r   r=   )r>   r?   r@   r+   r   r   r-   r3   rA   rJ   rO   rQ   ÚlistrT   rB   r   r   rD   rD   A   sv   „ ð< Sð <¨Tó <ð˜4ó óð
,˜ð , ó ,ð7 cð 7°ð 7¸ó 7ð+˜sð + tó +ð,  S¡	ô ,r   rD   Úaoti_dirÚ
aoti_filesÚso_pathr   c                 ó   ‡— dt         dt         fˆfd„}t        j                  j                  |  |d«      «      }t        j                  j                  |  |d«      «      }t        j                  j	                  |«      d   }t        |dz   «      5 }t        j                  |«      }d d d «       t        di ¤dt        j                  «       i¤Ž}	t        |||	¬	«      }
|
j                  «       }|
j                  «        t        |d
z   «      5 }t        j                  |«      }d d d «       t        di ¤dt        j                  «       i¤Ž}t        t        j                  j                  |«      d   ||g||¬«      }|j                  «       }|j                  «        |dz   }|‰v rwt        |d«      5 }|j                  «       }d d d «       t        |d«      5 }|j!                  «       }|j#                  dd|dz  z
  z  «       |j#                  «       d d d «       |S |S # 1 sw Y   �ŒyxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒwxY w# 1 sw Y   |S xY w)NÚsuffixr   c                 óX   •— ‰D ]  }|j                  | «      sŒ|c S  t        d| › �«      ‚)Nz Unable to find file with suffix )ÚendswithÚRuntimeError)rZ   ÚfilerW   s     €r   Úget_aoti_file_with_suffixz-compile_so.<locals>.get_aoti_file_with_suffixc   s8   ø€ Øò 	ˆDØ�}‰}˜VÕ$Ø’ð	ô Ð=¸f¸XÐFÓGÐGr   ú.cppz.or   z_compile_flags.jsonÚuse_relative_path)r4   ÚsourcesÚBuildOptionz_linker_flags.jsonéÿÿÿÿ)r4   rb   rc   Ú
output_dirz_serialized_weights.binÚrbza+bó    i @  rB   )r+   ÚosrL   ÚjoinÚsplitextÚopenÚjsonÚloadr
   r	   Ú	is_fbcoder   Úget_target_file_pathÚbuildÚsplitrJ   Útellr;   )rV   rW   rX   r_   Úcpp_fileÚconsts_oÚ	file_nameÚfÚcompile_flagsÚcompile_optionsÚobject_builderÚoutput_oÚlinker_flagsÚlinker_optionsÚ
so_builderÚ	output_soÚserialized_weights_filenameÚ	f_weightsÚserialized_weightsÚf_soÚso_sizes    `                   r   Ú
compile_sor„   b   sA  ø€ ðH¬#ð H´#õ Hô �w‰w�|‰|˜HÑ&?ÀÓ&GÓH€HÜ�w‰w�|‰|˜HÑ&?ÀÓ&EÓF€Hä—‘× Ñ  Ó*¨1Ñ-€Iô 
ˆiÐ/Ñ/Ó	0ð %°AÜŸ	™	 !›ˆ÷%ô 'ñ Ø
ñÜ+1×+;Ñ+;Ó+=ò€Oô  ØØØ#ô€Nð
 ×2Ñ2Ó4€HØ×ÑÔô 
ˆiÐ.Ñ.Ó	/ð $°1Ü—y‘y “|ˆ÷$ô &ñ Ø
ñÜ*0×*:Ñ*:Ó*<ò€Nô Ü�W‰W�]‰]˜7Ó# BÑ'Ø˜8Ð$Ø"Øô	€Jð ×/Ñ/Ó1€IØ×ÑÔð #,Ð.GÑ"GÐØ" jÑ0ÜÐ-¨tÓ4ð 	2¸	Ø!*§¡Ó!1Ð÷	2ô �)˜UÓ#ð 	+ tØ—i‘i“kˆGà�J‰J�t˜u w°¡Ñ6Ñ7Ô8Ø�J‰JÐ)Ô*÷		+ð Ðˆ9Ð÷U%ñ %ú÷$ñ $ú÷$	2ð 	2ú÷	+ð Ðús0   ÂHÄH*Æ0H7Ç<IÈH'È*H4È7I ÉIr   c                 ó~  — t        |t        «      rd|i}t        |t        «      sJ d«       ‚t        | t        j                  t
        f«      r | j                  «       r| j                  «       sNt        | t        t        j                  f«      r$t        j                  | «      j                  d«      s
J d| › �«       ‚t        | «      5 }|j                  «       D �]  \  }}d}d}|D �]  }|dk(  rŒ
|j                  d«      r|dz  }|dkD  rt        d	|› d
�«      ‚|j                  d«      r|dz  }|dkD  rt        d|› d
�«      ‚t        j                   j#                  |«      }|j%                  t&        «      r%t        j                   j)                  t*        |«      }	n%t        j                   j)                  t,        ||«      }	t.        j1                  d||	«       |j3                  t        |	«      |«       �Œ �Œ  	 ddd«       t        | t        j                  t
        f«      r| j5                  d«       | S # 1 sw Y   Œ<xY w)a_  
    Saves the AOTInductor generated files to the PT2Archive format.

    Args:
        archive_file: The file name to save the package to.
        aoti_files: This can either be a singular path to a directory containing
        the AOTInductor files, or a dictionary mapping the model name to the
        path to its AOTInductor generated files.
    ÚmodelzûPlease pass a list of AOTI generated files to be packaged or a dictionary mapping model names to their list of AOTI generated files. You can get this list of files through calling `torch._inductor.aot_compile(..., options={aot_inductor.package=True})`ú.pt2zMExpect archive file to be a file ending in .pt2, or is a buffer. Instead got r   Ú z.sor   zMultiple .so files found in zQ. You might need to clear your cache directory before calling aoti_compile again.r`   zMultiple .cpp files found in z.Saving AOTI generated file %s to archive in %sN)Ú
isinstancerU   ÚdictÚioÚIOBaser   ÚwritableÚseekabler+   rh   ÚPathLikeÚfspathr\   r   Úitemsr]   rL   ÚbasenameÚ
startswithr   ri   r   r   ÚlogÚdebugr<   Úseek)
r   rW   Úarchive_writerÚ
model_nameÚfilesÚnum_so_filesÚnum_cpp_filesr^   ÚfilenameÚnew_filepaths
             r   Úpackage_aotirž   �   s1  € ô �*œdÔ#Ø˜zÐ*ˆ
ä�j¤$Ô'ð ð	RóÐ'ô 	�<¤"§)¡)¬R Ô1Ø×!Ñ!Ô#Ø×!Ñ!Ô#ä�<¤#¤r§{¡{Ð!3Ô4Ü�I‰I�lÓ#×,Ñ,¨VÔ4ð	ð XÐXdÐWeÐfó	ð ô 
˜,Ó	'ð %¨>Ø!+×!1Ñ!1Ó!3ó $	ÑˆJ˜ØˆLØˆMàó  �Ø˜2’:Øà—=‘= Ô'Ø  AÑ%�LØ# aÒ'Ü*Ø:¸5¸'ð BKð Kóð ð
 —=‘= Ô(Ø! QÑ&�MØ# aÒ'Ü*Ø;¸E¸7ð CKð Kóð ô Ÿ7™7×+Ñ+¨DÓ1�Ø×&Ñ&Ô'AÔBÜ#%§7¡7§<¡<´¸xÓ#H‘Lä#%§7¡7§<¡<´ÀÈXÓ#V�LÜ—	‘	ØDÀdÈLôð ×)Ñ)Ü˜Ó%Øöò; ñ	$	÷%ôN �,¤§¡¬B Ô0Ø×Ñ˜!ÔØÐ÷S%ð %ús   ÃD2H3È3H<c                   óÜ   — e Zd ZdZdej
                  j                  j                  ddfd„Zd„ Z	de
eef   fd„Zde
eej                  f   d	eddfd
„Zdee   fd„Zdee
eef      dd fd„Zy)ÚAOTICompiledModelz8
    Callable AOT Inductor loaded model from a .pt2
    Úloaderr   Nc                 ó   — || _         y r   )r¡   )r   r¡   s     r   r   zAOTICompiledModel.__init__ò   s	   € Øˆ�r   c                 óž  — | j                   j                  «       }t        j                  |d   «      }t        j                  |d   «      }t        j                  |t        ||«      f«      d   }|D �cg c]  }t        |t        j                  «      sŒ|‘Œ! }}| j                   j                  |«      }t        j                  ||«      S c c}w )Nr   r   )r¡   Úget_call_specÚpytreeÚtreespec_loadsÚtree_flattenr   r‰   ÚtorchÚTensorÚ	boxed_runÚtree_unflatten)	r   r2   ÚkwargsÚ	call_specÚin_specÚout_specÚflat_inputsÚxÚflat_outputss	            r   Ú__call__zAOTICompiledModel.__call__õ   s«   € Ø—K‘K×-Ñ-Ó/ˆ	Ü×'Ñ'¨	°!©Ó5ˆÜ×(Ñ(¨°1©Ó6ˆÜ×)Ñ)¨4´ÀÈÓ1PÐ*QÓRÐSTÑUˆØ"-ÖM˜Q´¸A¼u¿|¹|Õ1L’qÐMˆÐMØ—{‘{×,Ñ,¨[Ó9ˆÜ×$Ñ$ \°8Ó<Ð<ùò Ns   Á3C
ÂC
c                 ó6   — | j                   j                  «       S r   )r¡   Úget_metadatar,   s    r   rµ   zAOTICompiledModel.get_metadataþ   s   € Ø�{‰{×'Ñ'Ó)Ð)r   Úconstants_mapÚcheck_full_updatec                ó>   — | j                   j                  |d|«       y)a¥  
        Given a mapping of constant fqns to tensors, load the constants into the model.
        You can use ``get_constant_fqns`` to get the list of constant fqns that
        are needed in the compiled model.

        Args:
            constants_map: A mapping of constant fqns to tensors.
            check_full_update: Whether to add check to see if all the constants
            are updated and have values.
        FN)r¡   Úload_constants)r   r¶   r·   s      r   r¹   z AOTICompiledModel.load_constants  s   € ð  	�‰×"Ñ" =°%Ð9JÕKr   c                 ó6   — | j                   j                  «       S r   )r¡   Úget_constant_fqnsr,   s    r   r»   z#AOTICompiledModel.get_constant_fqns  s   € Ø�{‰{×,Ñ,Ó.Ð.r   Úmemoc                 óV   — t         j                  d«       t        | j                  «      S )NzOAOTICompiledModel deepcopy warning: AOTICompiledModel.loader is not deepcopied.)r”   Úwarningr    r¡   )r   r¼   s     r   Ú__deepcopy__zAOTICompiledModel.__deepcopy__  s"   € Ü�‰Ø]ô	
ô ! §¡Ó-Ð-r   )r>   r?   r@   Ú__doc__r¨   Ú_CÚ_aotiÚAOTIModelPackageLoaderr   r³   rŠ   r+   rµ   r©   Úboolr¹   rU   r»   r   r   r¿   rB   r   r   r    r    í   s¥   „ ñð˜uŸx™xŸ~™~×DÑDð Èó ò=ð*˜d 3¨ 8™nó *ðLà˜C §¡Ð-Ñ.ðLð  ð	Lð
 
óLð$/ 4¨¡9ó /ð. ¨$¨s°C¨x©.Ñ!9ð .Ð>Qô .r   r    rL   r˜   Úrun_single_threadedc                 ól  — t        | t        j                  t        f«      r | j	                  «       r| j                  «       sNt        | t        t        j                  f«      r$t        j                  | «      j                  d«      s
J d| › �«       ‚t        | t        j                  t        f«      r°t        j                  d¬«      5 }|j                  | j                  «       «       | j                  d«       t         j#                  d|j$                  «       t&        j(                  j*                  j-                  |j$                  ||«      }t/        |«      cd d d «       S t        j                  | «      } t&        j(                  j*                  j-                  | ||«      }t/        |«      S # 1 sw Y   ŒTxY w)Nr‡   zTUnable to load package. Path must be a buffer or a file ending in .pt2. Instead got )rZ   r   z)Writing buffer to tmp file located at %s.)r‰   r‹   rŒ   r   ÚreadablerŽ   r+   rh   r�   r�   r\   ÚtempfileÚNamedTemporaryFiler;   rJ   r–   r”   r•   r4   r¨   rÁ   rÂ   rÃ   r    )rL   r˜   rÅ   rv   r¡   s        r   Úload_packagerÊ     sG  € ô 	�4œ"Ÿ)™)¤R˜Ô)¨d¯m©m¬oÀ$Ç-Á-Ä/Ü
�TœC¤§¡Ð-Ô
.´2·9±9¸T³?×3KÑ3KÈFÔ3Sðð _Ð_cÐ^dÐeóð Uô �$œŸ™¤B˜Ô(Ü×(Ñ(°Ô7ð 		-¸1ð �G‰G�D—I‘I“KÔ Ø�I‰I�aŒLÜ�I‰IÐAÀ1Ç6Á6ÔJÜ—X‘X—^‘^×:Ñ:Ø—‘˜
Ð$7óˆFô % VÓ,÷		-ñ 		-ô �9‰9�T‹?€DÜ�X‰X�^‰^×2Ñ2ØˆjÐ-ó€Fô ˜VÓ$Ð$÷		-ð 		-ús   ÃBF*Æ*F3)r†   F)/r‹   rl   Úloggingrh   rÈ   r'   Úpathlibr   Útypingr   r   r   r   Útyping_extensionsr   r¨   Útorch._inductorÚtorch.utils._pytreeÚutilsÚ_pytreer¥   r	   Útorch._inductor.cpp_builderr
   r   Útorch.export._tree_utilsr   Útorch.typesr   Úpt2_archive_constantsr   r   r   r   Ú	getLoggerr>   r”   r   rD   r+   rU   r„   rŠ   rž   r    rÄ   rÊ   rB   r   r   ú<module>rØ      s  ðÛ 	Û Û Û 	Û Û Ý ß +Ó +Ý "ã Û ß $Ð $Ý "ß DÝ 3Ý  ÷ó ð €g×Ñ˜Ó!€÷ 9ñ  9÷F,ñ ,ðB8˜ð 8¨$¨s©)ð 8¸cð 8Àcó 8ðvMØðMà�d˜3‘i  c¨4°©9 nÑ!5Ð5Ñ6ðMð óM÷`-.ñ -.ðb LQñ%Ø
ð%Ø #ð%ØDHð%àô%r   