ó
    Eñi¢k  ã                   ó,  • S SK r S SKJrJr  S SKJrJr  S SKJrJ	r	  S SK
Jr  S SKJrJr  S SKJr  \(       a
  S SKrS SKJr  / S	Qr\ R*                   " S
 S5      5       r\ R*                   " S S5      5       r\ R*                   " S S5      5       r\ R*                   " S S5      5       r\ R*                   " S S5      5       r\ R*                   " S S5      5       r\ R*                   " S S5      5       r\	\\\\\\\4   r " S S\5      r\ R*                   " S S5      5       r " S S\5      r \ R*                   " S S5      5       r!\ R*                   " S  S!5      5       r"\ R*                   " S" S#5      5       r#S$ r$S%\4S& jr%S'S(S)S*S+\&\'   S%S#4S, jr(g)-é    N)Ú
CollectionÚMapping)ÚautoÚEnum)ÚTYPE_CHECKINGÚUnion©ÚFakeScriptObject)Úget_opaque_type_nameÚis_opaque_type)Úis_fake)ÚGraphSignature)ÚConstantArgumentÚCustomObjArgumentÚExportBackwardSignatureÚExportGraphSignatureÚ	InputKindÚ	InputSpecÚ
OutputKindÚ
OutputSpecÚSymIntArgumentÚSymFloatArgumentÚSymBoolArgumentÚTensorArgumentc                   ó    • \ rS rSr% \\S'   Srg)r   é    Úname© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚstrÚ__annotations__Ú__static_attributes__r   ó    ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/export/graph_signature.pyr   r       ó   ‡ à
†Ir'   r   c                   ó    • \ rS rSr% \\S'   Srg)ÚTokenArgumenté%   r   r   Nr   r   r'   r(   r+   r+   %   r)   r'   r+   c                   ó    • \ rS rSr% \\S'   Srg)r   é*   r   r   Nr   r   r'   r(   r   r   *   r)   r'   r   c                   ó    • \ rS rSr% \\S'   Srg)r   é/   r   r   Nr   r   r'   r(   r   r   /   r)   r'   r   c                   ó    • \ rS rSr% \\S'   Srg)r   é4   r   r   Nr   r   r'   r(   r   r   4   r)   r'   r   c                   ó>   • \ rS rSr% \\S'   \\S'   Sr\S-  \S'   Srg)r   é9   r   Ú	class_fqnNÚfake_valr   )	r    r!   r"   r#   r$   r%   r6   r
   r&   r   r'   r(   r   r   9   s   ‡ à
ƒIØƒNØ(,€HÐ Ñ%Ö,r'   r   c                   óB   • \ rS rSr% \\S'   \\-  \-  \-  S-  \S'   Sr	g)r   é@   r   NÚvaluer   )
r    r!   r"   r#   r$   r%   ÚintÚfloatÚboolr&   r   r'   r(   r   r   @   s    ‡ à
ƒIØ�‰;˜Ñ Ñ# dÑ*Ö*r'   r   c                   óh   • \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
Srg)r   éQ   r   N)r    r!   r"   r#   r   Ú
USER_INPUTÚ	PARAMETERÚBUFFERÚCONSTANT_TENSORÚ
CUSTOM_OBJÚTOKENr&   r   r'   r(   r   r   Q   s,   † Ù“€JÙ“€IÙ‹V€FÙ“f€OÙ“€JÙ‹FƒEr'   r   c                   óZ   • \ rS rSr% \\S'   \\S'   \S-  \S'   Sr\	S-  \S'   S r
S rS	rg)
r   éZ   ÚkindÚargNÚtargetÚ
persistentc           
      ó.  • U R                   [        R                  :X  a  U R                  c  [	        S5      e[        U R                  [        [        [        [        [        [        [        45      (       d!  [	        S[        U R                  5       35      eg )Nz,Failed to specify persistent flag on BUFFER.úexpected valid arg type, got )rG   r   rA   rJ   ÚAssertionErrorÚ
isinstancerH   r   r   r   r   r   r   r+   Útype©Úselfs    r(   Ú__post_init__ÚInputSpec.__post_init__a   s{   € Ø�9‰9œ	×(Ñ(Ó(Ø�‰Ñ&Ü$Ð%SÓTÐTÜØ�H‰HäÜÜ ÜÜ Ü!Üð÷
ñ 
ô !Ð#@ÄÀdÇhÁhÃÐ@PÐ!QÓRÐRð
r'   c                 ó  • U R                   c  SOSU R                    S3nU R                  c  SOSU R                   3n[        U R                  R                  5       S[        U R
                  R                  5       U U 3$ )NÚ ú	 target='Ú'z persistent=ú: )rI   rJ   r$   rH   r   rG   )rQ   rI   rJ   s      r(   Ú__str__ÚInputSpec.__str__s   sp   € Ø—{‘{Ñ*‘°)¸D¿K¹K¸=ÈÐ0JˆØŸ?™?Ñ2‘R¸,ÀtÇÁÐFWÐ8Xˆ
Ü�d—h‘h—m‘mÓ$Ð% R¬¨D¯I©I¯N©NÓ(;Ð'<¸V¸HÀZÀLÐQÐQr'   r   )r    r!   r"   r#   r   r%   ÚArgumentSpecr$   rJ   r<   rR   rY   r&   r   r'   r(   r   r   Z   s1   ‡ à
ƒOØ	ÓØ�$‰JÓØ"€J��t‘Ó"òSõ$Rr'   r   c                   ó„   • \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       rSrg)r   éy   r   N)r    r!   r"   r#   r   ÚUSER_OUTPUTÚLOSS_OUTPUTÚBUFFER_MUTATIONÚPARAMETER_MUTATIONÚGRADIENT_TO_PARAMETERÚGRADIENT_TO_USER_INPUTÚUSER_INPUT_MUTATIONrD   r&   r   r'   r(   r   r   y   s>   † Ù“&€KÙ“&€KÙ“f€OÙ›ÐÙ ›FÐÙ!›VÐÙ›&ÐÙ‹FƒEr'   r   c                   óF   • \ rS rSr% \\S'   \\S'   \S-  \S'   S rS r	Sr
g)	r   é„   rG   rH   NrI   c           
      ó°   • [        U R                  [        [        [        [
        [        [        [        45      (       d  [        SU R                   35      eg )NrL   )
rN   rH   r   r   r   r   r   r+   r   rM   rP   s    r(   rR   ÚOutputSpec.__post_init__Š   sN   € ÜØ�H‰HäÜÜ ÜÜ ÜÜ!ð÷
ñ 
ô !Ð#@ÀÇÁÀ
Ð!KÓLÐLð
r'   c                 óÆ   • U R                   c  SOSU R                    S3n[        U R                  R                  5       S[        U R                  R                  5       U 3$ )NrU   rV   rW   rX   )rI   r$   rH   r   rG   )rQ   rI   s     r(   rY   ÚOutputSpec.__str__™   sP   € Ø—{‘{Ñ*‘°)¸D¿K¹K¸=ÈÐ0JˆÜ�d—h‘h—m‘mÓ$Ð% R¬¨D¯I©I¯N©NÓ(;Ð'<¸V¸HÐEÐEr'   r   )r    r!   r"   r#   r   r%   r[   r$   rR   rY   r&   r   r'   r(   r   r   „   s$   ‡ à
ÓØ	ÓØ�$‰JÓòMõFr'   r   c                   óH   • \ rS rSr% \\\4   \S'   \\\4   \S'   \\S'   Srg)r   éž   Úgradients_to_parametersÚgradients_to_user_inputsÚloss_outputr   N)r    r!   r"   r#   Údictr$   r%   r&   r   r'   r(   r   r   ž   s$   ‡ à! # s (™^Ó+Ø" 3¨ 8™nÓ,ØÖr'   r   c                   óØ  • \ rS rSr% Sr\\   \S'   \\   \S'   \	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S j5       r\	S\
\   4S	 j5       r\	S\
\   4S
 j5       r\	S\
\\-  \-  \-  S-     4S j5       r\	S\
\\-  \-  \-  S-     4S j5       r\	S\\\4   4S j5       r\	S\\\4   4S j5       r\	S\\\4   4S j5       r\	S\\\4   4S j5       r\	S\\\4   4S j5       r\	S\\\4   4S j5       r\	S\\\4   4S j5       r\	S\S-  4S j5       r\	S\\\4   S-  4S j5       r \	S\
\   4S j5       r!\	S\
\   4S j5       r"S S jr#S\S\4S jr$S!S jr%S r&Sr'g)"r   é¥   aî  
:class:`ExportGraphSignature` models the input/output signature of Export Graph,
which is a fx.Graph with stronger invariants guarantees.

Export Graph is functional and does not access "states" like parameters
or buffers within the graph via ``getattr`` nodes. Instead, :func:`export`
guarantees that parameters, buffers, and constant tensors are lifted out of
the graph as inputs.  Similarly, any mutations to buffers are not included
in the graph either, instead the updated values of mutated buffers are
modeled as additional outputs of Export Graph.

The ordering of all inputs and outputs are::

    Inputs = [*parameters_buffers_constant_tensors, *flattened_user_inputs]
    Outputs = [*mutated_inputs, *flattened_user_outputs]

e.g. If following module is exported::

    class CustomModule(nn.Module):
        def __init__(self) -> None:
            super(CustomModule, self).__init__()

            # Define a parameter
            self.my_parameter = nn.Parameter(torch.tensor(2.0))

            # Define two buffers
            self.register_buffer("my_buffer1", torch.tensor(3.0))
            self.register_buffer("my_buffer2", torch.tensor(4.0))

        def forward(self, x1, x2):
            # Use the parameter, buffers, and both inputs in the forward method
            output = (
                x1 + self.my_parameter
            ) * self.my_buffer1 + x2 * self.my_buffer2

            # Mutate one of the buffers (e.g., increment it by 1)
            self.my_buffer2.add_(1.0)  # In-place addition

            return output


    mod = CustomModule()
    ep = torch.export.export(mod, (torch.tensor(1.0), torch.tensor(2.0)))

Resulting Graph is non-functional::

    graph():
        %p_my_parameter : [num_users=1] = placeholder[target=p_my_parameter]
        %b_my_buffer1 : [num_users=1] = placeholder[target=b_my_buffer1]
        %b_my_buffer2 : [num_users=2] = placeholder[target=b_my_buffer2]
        %x1 : [num_users=1] = placeholder[target=x1]
        %x2 : [num_users=1] = placeholder[target=x2]
        %add : [num_users=1] = call_function[target=torch.ops.aten.add.Tensor](args = (%x1, %p_my_parameter), kwargs = {})
        %mul : [num_users=1] = call_function[target=torch.ops.aten.mul.Tensor](args = (%add, %b_my_buffer1), kwargs = {})
        %mul_1 : [num_users=1] = call_function[target=torch.ops.aten.mul.Tensor](args = (%x2, %b_my_buffer2), kwargs = {})
        %add_1 : [num_users=1] = call_function[target=torch.ops.aten.add.Tensor](args = (%mul, %mul_1), kwargs = {})
        %add_ : [num_users=0] = call_function[target=torch.ops.aten.add_.Tensor](args = (%b_my_buffer2, 1.0), kwargs = {})
        return (add_1,)

Resulting ExportGraphSignature of the non-functional Graph would be::

    # inputs
    p_my_parameter: PARAMETER target='my_parameter'
    b_my_buffer1: BUFFER target='my_buffer1' persistent=True
    b_my_buffer2: BUFFER target='my_buffer2' persistent=True
    x1: USER_INPUT
    x2: USER_INPUT

    # outputs
    add_1: USER_OUTPUT

To get a functional Graph, you can use :func:`run_decompositions`::

    mod = CustomModule()
    ep = torch.export.export(mod, (torch.tensor(1.0), torch.tensor(2.0)))
    ep = ep.run_decompositions()

Resulting Graph is functional::

    graph():
        %p_my_parameter : [num_users=1] = placeholder[target=p_my_parameter]
        %b_my_buffer1 : [num_users=1] = placeholder[target=b_my_buffer1]
        %b_my_buffer2 : [num_users=2] = placeholder[target=b_my_buffer2]
        %x1 : [num_users=1] = placeholder[target=x1]
        %x2 : [num_users=1] = placeholder[target=x2]
        %add : [num_users=1] = call_function[target=torch.ops.aten.add.Tensor](args = (%x1, %p_my_parameter), kwargs = {})
        %mul : [num_users=1] = call_function[target=torch.ops.aten.mul.Tensor](args = (%add, %b_my_buffer1), kwargs = {})
        %mul_1 : [num_users=1] = call_function[target=torch.ops.aten.mul.Tensor](args = (%x2, %b_my_buffer2), kwargs = {})
        %add_1 : [num_users=1] = call_function[target=torch.ops.aten.add.Tensor](args = (%mul, %mul_1), kwargs = {})
        %add_2 : [num_users=1] = call_function[target=torch.ops.aten.add.Tensor](args = (%b_my_buffer2, 1.0), kwargs = {})
        return (add_2, add_1)

Resulting ExportGraphSignature of the functional Graph would be::

    # inputs
    p_my_parameter: PARAMETER target='my_parameter'
    b_my_buffer1: BUFFER target='my_buffer1' persistent=True
    b_my_buffer2: BUFFER target='my_buffer2' persistent=True
    x1: USER_INPUT
    x2: USER_INPUT

    # outputs
    add_2: BUFFER_MUTATION target='my_buffer2'
    add_1: USER_OUTPUT

Úinput_specsÚoutput_specsÚreturnc                 ó:   • [        S U R                   5       5      $ )Nc              3   ó¼   #   • U  HR  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  UR                  v •  MT     g 7f©N)rG   r   r@   rN   rI   r$   ©Ú.0Úss     r(   Ú	<genexpr>Ú2ExportGraphSignature.parameters.<locals>.<genexpr>  sD   é € ð 
â%�Ø�v‰vœ×,Ñ,Ñ,ó ô ˜!Ÿ(™(¤C×(ó ˆA�HŽHÚ%ùó   ‚"A¨AÁ	A©Útuplers   rP   s    r(   Ú
parametersÚExportGraphSignature.parameters  ó"   € äñ 
à×%Ò%ó
ó 
ð 	
r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó¼   #   • U  HR  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  UR                  v •  MT     g 7frx   )rG   r   rA   rN   rI   r$   ry   s     r(   r|   Ú/ExportGraphSignature.buffers.<locals>.<genexpr>"  sD   é € ð 
â%�Ø�v‰vœ×)Ñ)Ñ)ó ô ˜!Ÿ(™(¤C×(ó ˆA�HŽHÚ%ùr~   r   rP   s    r(   ÚbuffersÚExportGraphSignature.buffers   rƒ   r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   óÞ   #   • U  Hc  nUR                   [        R                  :X  d  M#  UR                  S L d  M4  [	        UR
                  [        5      (       d  MU  UR
                  v •  Me     g7f)FN)rG   r   rA   rJ   rN   rI   r$   ry   s     r(   r|   Ú>ExportGraphSignature.non_persistent_buffers.<locals>.<genexpr>+  sW   é € ð 
â%�Ø�v‰vœ×)Ñ)Ñ)ó ð �|‰|˜uÐ$ó ô ˜!Ÿ(™(¤C×(ó	 ˆA�HŽHÚ%ùs   ‚"A-¨A-¹A-ÁA-r   rP   s    r(   Únon_persistent_buffersÚ+ExportGraphSignature.non_persistent_buffers)  s"   € äñ 
à×%Ò%ó
ó 
ð 	
r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó¼   #   • U  HR  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  UR                  v •  MT     g 7frx   )rG   r   rB   rN   rI   r$   ry   s     r(   r|   Ú?ExportGraphSignature.lifted_tensor_constants.<locals>.<genexpr>6  sD   é € ð 
â%�Ø�v‰vœ×2Ñ2Ñ2ó ô ˜!Ÿ(™(¤C×(ó ˆA�HŽHÚ%ùr~   r   rP   s    r(   Úlifted_tensor_constantsÚ,ExportGraphSignature.lifted_tensor_constants4  rƒ   r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó¼   #   • U  HR  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  UR                  v •  MT     g 7frx   )rG   r   rC   rN   rI   r$   ry   s     r(   r|   Ú:ExportGraphSignature.lifted_custom_objs.<locals>.<genexpr>?  sD   é € ð 
â%�Ø�v‰vœ×-Ñ-Ñ-ó ô ˜!Ÿ(™(¤C×(ó ˆA�HŽHÚ%ùr~   r   rP   s    r(   Úlifted_custom_objsÚ'ExportGraphSignature.lifted_custom_objs=  rƒ   r'   Nc           	      óð  • / nU R                    HÚ  nUR                  [        R                  :w  a  M#  [	        UR
                  [        [        [        [        [        45      (       a'  UR                  UR
                  R                  5        M~  [	        UR
                  [        5      (       a'  UR                  UR
                  R                  5        MÄ  [        UR
                   S35      e   [!        U5      $ )Nz is not a valid user inputs)rs   rG   r   r?   rN   rH   r   r   r   r   r   Úappendr   r   r9   ÚRuntimeErrorr€   )rQ   Úuser_inputsr{   s      r(   r›   Ú ExportGraphSignature.user_inputsG  s¸   € à=?ˆØ×!Ô!ˆAØ�v‰vœ×-Ñ-Ó-ÙäØ—‘ä"Ü"Ü$Ü#Ü%ð÷	ñ 	ð ×"Ñ" 1§5¡5§:¡:Ö.Ü˜AŸE™EÔ#3×4Ñ4Ø×"Ñ" 1§5¡5§;¡;Ö/ä" a§e¡e WÐ,GÐ#HÓIÐIñ% "ô& �[Ó!Ð!r'   c                 ó–  • / nU R                    GH,  nUR                  [        R                  [        R                  4;  a  M4  [        UR                  [        [        [        [        45      (       a'  UR                  UR                  R                  5        MŠ  [        UR                  [        5      (       a'  UR                  UR                  R                  5        MÐ  [        UR                  [        5      (       a(  UR                  UR                  R                  5        GM  [!        UR                   S35      e   [#        U5      $ )Nz is not a valid user output)rt   rG   r   r^   r_   rN   rH   r   r   r   r   r™   r   r   r9   r   rš   r€   )rQ   Úuser_outputsr{   s      r(   rž   Ú!ExportGraphSignature.user_outputsa  sì   € à>@ˆØ×"Õ"ˆAØ�v‰vÜ×&Ñ&Ü×&Ñ&ðó ñ äØ—‘Ü¤Ô1AÄ?ÐS÷ñ ð ×#Ñ# A§E¡E§J¡JÖ/Ü˜AŸE™EÔ#3×4Ñ4Ø×#Ñ# A§E¡E§K¡KÖ0Ü˜AŸE™EÔ#4×5Ñ5Ø×#Ñ# A§E¡E§J¡J×/ä" a§e¡e WÐ,GÐ#HÓIÐIñ# #ô$ �\Ó"Ð"r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó*  #   • U  H‰  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  [        UR                  [        5      (       d  Me  UR                  R                  UR                  4v •  M‹     g 7frx   )	rG   r   r@   rN   rH   r   rI   r$   r   ry   s     r(   r|   Ú<ExportGraphSignature.inputs_to_parameters.<locals>.<genexpr>|  sf   é € ð 
â%�Ø�v‰vœ×,Ñ,Ñ,ó #ô ˜1Ÿ5™5¤.×1ó #ô ˜1Ÿ8™8¤S×)ó	 #ˆQ�U‰U�Z‰Z˜Ÿ™Õ"Ú%ùó   ‚"B¨BÁ	BÁ*)B©Ú_immutable_dictrs   rP   s    r(   Úinputs_to_parametersÚ)ExportGraphSignature.inputs_to_parametersz  ó"   € äñ 
à×%Ò%ó
ó 
ð 	
r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó*  #   • U  H‰  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  [        UR                  [        5      (       d  Me  UR                  R                  UR                  4v •  M‹     g 7frx   )	rG   r   rA   rN   rH   r   rI   r$   r   ry   s     r(   r|   Ú9ExportGraphSignature.inputs_to_buffers.<locals>.<genexpr>ˆ  sf   é € ð 
â%�Ø�v‰vœ×)Ñ)Ñ)ó #ô ˜1Ÿ5™5¤.×1ó #ô ˜1Ÿ8™8¤S×)ó	 #ˆQ�U‰U�Z‰Z˜Ÿ™Õ"Ú%ùr£   r¤   rP   s    r(   Úinputs_to_buffersÚ&ExportGraphSignature.inputs_to_buffers†  r¨   r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó*  #   • U  H‰  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  [        UR                  [        5      (       d  Me  UR                  R                  UR                  4v •  M‹     g 7frx   )	rG   r   r`   rN   rH   r   rI   r$   r   ry   s     r(   r|   Ú9ExportGraphSignature.buffers_to_mutate.<locals>.<genexpr>”  sf   é € ð 
â&�Ø�v‰vœ×3Ñ3Ñ3ó #ô ˜1Ÿ5™5¤.×1ó #ô ˜1Ÿ8™8¤S×)ó	 #ˆQ�U‰U�Z‰Z˜Ÿ™Õ"Ú&ùr£   ©r¥   rt   rP   s    r(   Úbuffers_to_mutateÚ&ExportGraphSignature.buffers_to_mutate’  ó"   € äñ 
à×&Ò&ó
ó 
ð 	
r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó*  #   • U  H‰  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  [        UR                  [        5      (       d  Me  UR                  R                  UR                  4v •  M‹     g 7frx   )	rG   r   ra   rN   rH   r   rI   r$   r   ry   s     r(   r|   Ú<ExportGraphSignature.parameters_to_mutate.<locals>.<genexpr>ž  sf   é € ð 
â&�Ø�v‰vœ×6Ñ6Ñ6ó #ô ˜1Ÿ5™5¤.×1ó #ô ˜1Ÿ8™8¤S×)ó	 #ˆQ�U‰U�Z‰Z˜Ÿ™Õ"Ú&ùr£   r±   rP   s    r(   Úparameters_to_mutateÚ)ExportGraphSignature.parameters_to_mutateœ  r´   r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó*  #   • U  H‰  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  [        UR                  [        5      (       d  Me  UR                  R                  UR                  4v •  M‹     g 7frx   )	rG   r   rd   rN   rH   r   rI   r$   r   ry   s     r(   r|   Ú=ExportGraphSignature.user_inputs_to_mutate.<locals>.<genexpr>¨  sf   é € ð 
â&�Ø�v‰vœ×7Ñ7Ñ7ó #ô ˜1Ÿ5™5¤.×1ó #ô ˜1Ÿ8™8¤S×)ó	 #ˆQ�U‰U�Z‰Z˜Ÿ™Õ"Ú&ùr£   r±   rP   s    r(   Úuser_inputs_to_mutateÚ*ExportGraphSignature.user_inputs_to_mutate¦  r´   r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó*  #   • U  H‰  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  [        UR                  [        5      (       d  Me  UR                  R                  UR                  4v •  M‹     g 7frx   )	rG   r   rB   rN   rH   r   rI   r$   r   ry   s     r(   r|   ÚIExportGraphSignature.inputs_to_lifted_tensor_constants.<locals>.<genexpr>³  sf   é € ð 
â%�Ø�v‰vœ×2Ñ2Ñ2ó #ô ˜1Ÿ5™5¤.×1ó #ô ˜1Ÿ8™8¤S×)ó	 #ˆQ�U‰U�Z‰Z˜Ÿ™Õ"Ú%ùr£   r¤   rP   s    r(   Ú!inputs_to_lifted_tensor_constantsÚ6ExportGraphSignature.inputs_to_lifted_tensor_constants±  r¨   r'   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó*  #   • U  H‰  nUR                   [        R                  :X  d  M#  [        UR                  [
        5      (       d  MD  [        UR                  [        5      (       d  Me  UR                  R                  UR                  4v •  M‹     g 7frx   )	rG   r   rC   rN   rH   r   rI   r$   r   ry   s     r(   r|   ÚDExportGraphSignature.inputs_to_lifted_custom_objs.<locals>.<genexpr>½  sg   é € ð 
â%�Ø�v‰vœ×-Ñ-Ñ-ó #ô ˜1Ÿ5™5Ô"3×4ó #ô ˜1Ÿ8™8¤S×)ó	 #ˆQ�U‰U�Z‰Z˜Ÿ™Õ"Ú%ùr£   r¤   rP   s    r(   Úinputs_to_lifted_custom_objsÚ1ExportGraphSignature.inputs_to_lifted_custom_objs»  r¨   r'   c                 ój  • S n0 n0 nU R                    GH  nUR                  [        R                  :X  af  Ub  [	        S5      e[        UR                  [        5      (       d!  [	        S[        UR                  5       35      eUR                  R                  nMˆ  UR                  [        R                  :X  a¥  [        UR                  [        5      (       d!  [	        S[        UR                  5       35      e[        UR                  [        5      (       d!  [	        S[        UR                  5       35      eUR                  X$R                  R                  '   GMK  UR                  [        R                  :X  d  GMl  [        UR                  [        5      (       d!  [	        S[        UR                  5       35      e[        UR                  [        5      (       d!  [	        S[        UR                  5       35      eUR                  X4R                  R                  '   GM     Uc  g [        UUUS9$ )Nz multiple LOSS_OUTPUT specs foundz-expected TensorArgument for LOSS_OUTPUT, got z3expected str target for GRADIENT_TO_PARAMETER, got z7expected TensorArgument for GRADIENT_TO_PARAMETER, got z4expected str target for GRADIENT_TO_USER_INPUT, got z8expected TensorArgument for GRADIENT_TO_USER_INPUT, got )ro   rm   rn   )rt   rG   r   r_   rM   rN   rH   r   rO   r   rb   rI   r$   rc   r   )rQ   ro   rm   rn   Úspecs        r(   Úbackward_signatureÚ'ExportGraphSignature.backward_signatureÅ  sÔ  € àˆØ24ÐØ35Ð Ø×%Õ%ˆDØ�y‰yœJ×2Ñ2Ó2ØÑ*Ü(Ð)KÓLÐLÜ! $§(¡(¬N×;Ñ;Ü(ØGÌÈTÏXÉXËÐGWÐXóð ð #Ÿh™hŸm™m’Ø—‘œj×>Ñ>Ó>Ü! $§+¡+¬s×3Ñ3Ü(ØMÌdÐSW×S^ÑS^ÓN_ÐM`Ðaóð ô " $§(¡(¬N×;Ñ;Ü(ØQÔRVÐW[×W_ÑW_ÓR`ÐQaÐbóð ð :>¿¹Ð'¯©¯©Ô6Ø—‘œj×?Ñ?Ö?Ü! $§+¡+¬s×3Ñ3Ü(ØNÌtÐTX×T_ÑT_ÓO`ÐNaÐbóð ô " $§(¡(¬N×;Ñ;Ü(ØRÔSWÐX\×X`ÑX`ÓSaÐRbÐcóð ð ;?¿+¹+Ð(¯©¯©Ô7ñ9 &ð< ÑØä&Ø#Ø$;Ø%=ñ
ð 	
r'   c                 ó   • g rx   r   rP   s    r(   Úassertion_dep_tokenÚ(ExportGraphSignature.assertion_dep_tokenô  s   € àr'   c                 óL  • / nU R                    Hˆ  nUR                  [        R                  :X  d  M#  [	        UR
                  [        5      (       d!  [        S[        UR
                  5       35      eUR                  UR
                  R                  5        MŠ     [        U5      $ ©Nz+expected TokenArgument for TOKEN kind, got )rs   rG   r   rD   rN   rH   r+   rM   rO   r™   r   r€   )rQ   Úinput_tokensr{   s      r(   rÒ   Ú!ExportGraphSignature.input_tokensø  s|   € àˆØ×!Ô!ˆAØ�v‰vœŸ™Õ(Ü! !§%¡%¬×7Ñ7Ü(ØEÄdÈ1Ï5É5ÃkÀ]ÐSóð ð ×#Ñ# A§E¡E§J¡JÖ/ñ "ô �\Ó"Ð"r'   c                 óL  • / nU R                    Hˆ  nUR                  [        R                  :X  d  M#  [	        UR
                  [        5      (       d!  [        S[        UR
                  5       35      eUR                  UR
                  R                  5        MŠ     [        U5      $ rÑ   )rt   rG   r   rD   rN   rH   r+   rM   rO   r™   r   r€   )rQ   Úoutput_tokensr{   s      r(   rÕ   Ú"ExportGraphSignature.output_tokens  s~   € àˆØ×"Ô"ˆAØ�v‰vœ×)Ñ)Õ)Ü! !§%¡%¬×7Ñ7Ü(ØEÄdÈ1Ï5É5ÃkÀ]ÐSóð ð ×$Ñ$ Q§U¡U§Z¡ZÖ0ñ #ô �]Ó#Ð#r'   c                 ó6  • U R                   nUc  g [        U5      S:w  a  [        S[        U5       35      e[        [	        UR                  5       5      5      n[        U R                  5      [        U R                  5      -   nX2:w  a  [        SU SU 35      eg )Né   z,expected exactly 1 assertion_dep_token, got z)expected assertion_dep_token_index to be z, got )rÎ   ÚlenrM   ÚnextÚiterÚkeysrž   r²   )rQ   rÎ   Úassertion_dep_token_indexÚexpected_indexs       r(   rR   Ú"ExportGraphSignature.__post_init__  sª   € Ø"×6Ñ6ÐØÑ&ØÜÐ"Ó# qÓ(Ü Ø>¼sÐCVÓ?WÐ>XÐYóð ô %)¬Ð.A×.FÑ.FÓ.HÓ)IÓ$JÐ!Ü˜T×.Ñ.Ó/´#°d×6LÑ6LÓ2MÑMˆØÓ6Ü Ø;¸NÐ;KÈ6ÐRkÐQlÐmóð ð 7r'   ÚoldÚnewc                 ód  • [        U[        5      (       d  [        S[        U5       35      e[        U[        5      (       d  [        S[        U5       35      e[        [
        [        [        [        [        4nU R                   HL  n[        UR                  U5      (       d  M   UR                  R                  U:X  d  M<  X$R                  l        MN     U R                   HL  n[        UR                  U5      (       d  M   UR                  R                  U:X  d  M<  X%R                  l        MN     g)zB
Replace all uses of the old name with new name in the signature.
zexpected old to be str, got zexpected new to be str, got N)rN   r$   rM   rO   r   r   r   r   r   r+   rt   rH   r   rs   )rQ   rà   rá   Ú	arg_typesÚoÚis         r(   Úreplace_all_usesÚ%ExportGraphSignature.replace_all_uses  sÝ   € ô ˜#œs×#Ñ#Ü Ð#?ÄÀSÃ	¸{Ð!KÓLÐLÜ˜#œs×#Ñ#Ü Ð#?ÄÀSÃ	¸{Ð!KÓLÐLäÜÜÜÜÜð
ˆ	ð ×"Ô"ˆAÜ˜!Ÿ%™% ×+Ó+Ø—5‘5—:‘: Õ$Ø!$—E‘E–Jñ #ð ×!Ô!ˆAÜ˜!Ÿ%™% ×+Ó+Ø—5‘5—:‘: Õ$Ø!$—E‘E–Jò "r'   c                 ó   ^ ^• UU 4S jnU$ )Nc                 óÈ   >• UR                   S:X  a  TR                  U R                  U5        T(       a.  U R                   S:X  a  TR                  U R                  U5        g g g )NÚoutputÚplaceholder)Úopræ   r   )rà   rá   ÚuserÚreplace_inputsrQ   s      €€r(   Ú_Ú0ExportGraphSignature.get_replace_hook.<locals>._9  sL   ø€ Ø�w‰w˜(Ó"Ø×%Ñ% c§h¡h°Ô4Þ #§&¡&¨MÓ"9Ø×%Ñ% c§h¡h°Õ4ð #:ˆ~r'   r   )rQ   rî   rï   s   `` r(   Úget_replace_hookÚ%ExportGraphSignature.get_replace_hook8  s   ù€ ö	5ð ˆr'   c                 óœ   • SR                  S U R                   5       5      nSR                  S U R                   5       5      nSU SU S3$ )NÚ
c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frx   ©r$   ry   s     r(   r|   Ú/ExportGraphSignature.__str__.<locals>.<genexpr>B  s   é € ÐAÒ0@¨1¤ A§ Ò0@ùó   ‚c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frx   rö   ry   s     r(   r|   r÷   C  s   é € Ð CÒ1B¨A¤ Q§ Ò1Bùrø   z

# inputs
z

# outputs
)Újoinrs   rt   )rQ   rs   rt   s      r(   rY   ÚExportGraphSignature.__str__A  sK   € Ø—i‘iÑA°×0@Ò0@ÓAÓAˆØ—y‘yÑ C°×1BÒ1BÓ CÓCˆØ˜k˜]¨/¸,¸ÀrÐJÐJr'   r   )ru   N)F)(r    r!   r"   r#   Ú__doc__Úlistr   r%   r   Úpropertyr   r$   r�   r‡   rŒ   r‘   r–   r:   r;   r<   r›   rž   r   r¦   r¬   r²   r¸   r½   rÂ   rÇ   r   rË   rÎ   rÒ   rÕ   rR   ræ   rñ   rY   r&   r   r'   r(   r   r   ¥   sÉ  ‡ ñiðV �i‘Ó Ø�zÑ"Ó"ð ð
˜J s™Oó 
ó ð
ð ð
˜ C™ó 
ó ð
ð ð
¨
°3©ó 
ó ð
ð ð
¨°C©ó 
ó ð
ð ð
 J¨s¡Oó 
ó ð
ð ð"˜Z¨¨e©°dÑ(:¸SÑ(@À4Ñ(GÑHó "ó ð"ð2 ð#˜j¨¨u©°tÑ);¸cÑ)AÀDÑ)HÑIó #ó ð#ð0 ð
 g¨c°3¨hÑ&7ó 
ó ð
ð ð
 7¨3°¨8Ñ#4ó 
ó ð
ð ð
 7¨3°¨8Ñ#4ó 
ó ð
ð ð
 g¨c°3¨hÑ&7ó 
ó ð
ð ð
 w¨s°C¨xÑ'8ó 
ó ð
ð ð
°7¸3À¸8Ñ3Dó 
ó ð
ð ð
¨g°c¸3°hÑ.?ó 
ó ð
ð ð)
Ð$;¸dÑ$Bó )
ó ð)
ð\ ð W¨S°#¨XÑ%6¸Ñ%=ó ó ðð ð	#˜j¨™oó 	#ó ð	#ð ð	$˜z¨#™ó 	$ó ð	$ôð% Cð %¨cô %ô2õKr'   r   c                 ó0   • SSK Jn  U" [        U 5      5      $ )z�
Creates a mapping where items cannot be added, deleted, or updated.
NOTE: The immutability is shallow (like tuple is an immutable collection).
r   )ÚMappingProxyType)Útypesr   rp   )Úitemsr   s     r(   r¥   r¥   G  s   € õ
 'áœD ›KÓ(Ð(r'   ru   c           
      ód  • SSK JnJnJnJn  SSKJn  [        U [        [        [        [        S 5      [        45      (       a
  [        SU S9$ SU R                  ;  a  [        U  S35      eU R                  S   nU R                   U;   a  [#        U R                   S9$ [%        U5      (       a  ['        U R                   S9$ [        Xu5      (       a  [)        U R                   S9$ [        Xt5      (       a  [+        U R                   S9$ [        Xs5      (       a  [-        U R                   S9$ [        Xr5      (       a0  [/        U R                   UR1                  5       R3                  5       S	9$ [        Xv5      (       a  [/        U R                   UR4                  US
9$ [7        [        U5      5      (       a'  [/        U R                   [9        [        U5      5      US
9$ [        U[        [        [        [        [        S 5      45      (       a  [        U R                   US9$ [        S[        U5       S35      e)Nr   )ÚScriptObjectÚSymBoolÚSymFloatÚSymIntr	   rU   )r   r9   Úvalz8 is not a constant or a node with a 'val' metadata field)r   )r   r5   )r   r5   r6   z*Encountered an unsupported object of type z0 while writing the metadata for exported program)Útorchr  r  r  r  Ú"torch._library.fake_class_registryr
   rN   r:   r<   r;   rO   r$   r   ÚmetarM   r   r+   r   r   r   r   r   r   Ú_typeÚqualified_nameÚscript_class_namer   r   )ÚnodeÚtoken_namesr  r  r  r  r
   r  s           r(   Ú_make_argument_specr  Q  sÃ  € ß=Ó=ÝCä�$œœd¤E¬4°«:´sÐ;×<Ñ<ä R¨tÑ4Ð4à�D—I‘IÓÜØˆfÐLÐMó
ð 	
ð �)‰)�EÑ
€CØ‡y�y�KÓÜ $§)¡)Ñ,Ð,Ü	��‰Ü 4§9¡9Ñ-Ð-Ü	�C×	 Ñ	 Ü 4§9¡9Ñ-Ð-Ü	�C×	"Ñ	"Ü T§Y¡YÑ/Ð/Ü	�C×	!Ñ	!Ü D§I¡IÑ.Ð.Ü	�C×	&Ñ	&Ü  d§i¡i¸3¿9¹9»;×;UÑ;UÓ;WÑXÐXÜ	�C×	*Ñ	*Ü Ø—‘ c×&;Ñ&;Àcñ
ð 	
ô 
œ˜S›	×	"Ñ	"Ü Ø—‘Ô&:¼4À»9Ó&EÐPSñ
ð 	
ô 
�Cœ#œt¤S¬%´°d³Ð<×	=Ñ	=Ü T§Y¡Y°cÑ:Ð:äØ8¼¸c»¸ð D>ð ?ó
ð 	
r'   Úgraph_signaturer   Úgmztorch.fx.GraphModulerŒ   c           	      óf  ^^^^^^^^^^^^• SSK Jn  U R                  S Ln[        U R                  5      mU R
                  mU R                  m[        U R                  5      mU R                  mU R                  mU R                  mU(       a  U R                  R                  O0 mU(       a  U R                  R                  O0 mU(       a  U R                  R                  OS mU R                  nU R                  mUR                   R"                   Vs/ s H   nUR$                  S:X  d  M  ['        Xe5      PM"     nnUR)                  [+        [-        [/        UR                   R"                  5      5      5      R0                  5       Vs/ s H  n['        UT5      PM     nnS[2        S[4        4UUUU4S jjn	S[6        S[2        S[8        4UUUUUUUU4S	 jjn
U Vs/ s H
  o¹" U5      PM     nn[;        U5       VVs/ s H  u  pÞU
" XÞ5      PM     nnn[=        XÏS
9$ s  snf s  snf s  snf s  snnf )Nr   )Ú_pytreerë   Úinpru   c                 óÄ  >• [        U [        5      (       a  [        [        R                  U S S9$ [        U [
        5      (       d  [        [        R                  U S S9$ U R                  nUT;   a  [        [        R                  U S S9$ UT;   a  [        [        R                  U TU   S9$ UT;   a#  [        [        R                  U TU   TU   T;  S9$ [        SU 35      e)N©rG   rH   rI   )rG   rH   rI   rJ   zUnknown tensor input kind: )rN   r+   r   r   rD   r   r?   r   r@   rA   rM   )r  r   r¬   r¦   rŒ   r›   s     €€€€r(   Úto_input_specÚ9_convert_to_export_graph_signature.<locals>.to_input_spec¨  sä   ø€ Ü�cœ=×)Ñ)Ü¤)§/¡/°sÀ4ÑHÐHä˜#œ~×.Ñ.Ü¤)×"6Ñ"6¸CÈÑMÐMØ�x‰xˆØ�;ÓÜ¤)×"6Ñ"6¸CÈÑMÐMØÐ)Ó)ÜÜ×(Ñ(ØØ+¨DÑ1ñð ð
 Ð&Ó&ÜÜ×%Ñ%ØØ(¨Ñ.Ø-¨dÑ3Ð;QÑQñ	ð ô !Ð#>¸t¸fÐ!EÓFÐFr'   Úidxrä   c                 óB  >• [        U[        5      (       a  [        [        R                  US S9$ [        U[
        5      (       d  [        [        R                  US S9$ UR                  nU [        T5      [        T5      -   [        T	5      -   [        T5      -   :  at  UT;   a  [        [        R                  UTU   S9$ UT;   a  [        [        R                  UTU   S9$ UT	;   a  [        [        R                  UT	U   S9$ [        SU 35      eUT
;   a  [        [        R                  US S9$ UT;   a  [        [        R                  UTU   S9$ UT;   a  [        [        R                  UTU   S9$ UT:X  a  [        [        R                  US S9$ [        SU 35      e)Nr  zUnknown tensor mutation kind: zUnknown tensor output kind: )rN   r+   r   r   rD   r   r^   r   rÙ   r`   ra   rd   rM   rb   rc   r_   )r  rä   r   Úbuffer_mutationsÚgrad_paramsÚgrad_user_inputsro   rÕ   Úparameter_mutationsÚuser_input_mutationsrž   s      €€€€€€€€r(   Úto_output_specÚ:_convert_to_export_graph_signature.<locals>.to_output_specÁ  sÇ  ø€ Ü�aœ×'Ñ'Ü¤:×#3Ñ#3¸À4ÑHÐHä˜!œ^×,Ñ,Ü¤:×#9Ñ#9¸qÈÑNÐNØ�v‰vˆØ”Ð%Ó&¬Ð-@Ó)AÑAÄCØ óE
ñ 
ä�Óñó ð Ð'Ó'Ü!Ü#×3Ñ3ØØ+¨DÑ1ñð ð
 Ð,Ó,Ü!Ü#×6Ñ6ØØ.¨tÑ4ñð ð
 Ð-Ó-Ü!Ü#×7Ñ7ØØ/°Ñ5ñð ô %Ð'EÀdÀVÐ%LÓMÐMà�|Ó#Ü!¤z×'=Ñ'=À1ÈTÑRÐRà˜Ó$Ü!Ü#×9Ñ9ØØ& tÑ,ñð ð
 Ð)Ó)Ü!Ü#×:Ñ:ØØ+¨DÑ1ñð ð
 ˜Ó$Ü!¤z×'=Ñ'=À1ÈTÑRÐRô %Ð'CÀDÀ6Ð%JÓKÐKr'   )rs   rt   )Útorch.utilsr  rË   Úsetr›   r¦   r¬   rž   r²   r¸   r½   Úgradients_to_parameterrn   ro   rÒ   rÕ   ÚgraphÚnodesrì   r  Útree_leavesrÚ   rÛ   ÚreversedÚargsr[   r   r:   r   Ú	enumerater   )r  r  rŒ   ÚpytreeÚis_jointrÒ   r  ÚinputsÚoutputsr  r"  r  rs   r  rä   rt   r  r  r  r¬   r¦   ro   rÕ   r   r!  r›   rž   s     `             @@@@@@@@@@@r(   Ú"_convert_to_export_graph_signaturer1  {  s  ÿû€ õ
 .à×1Ñ1¸Ð=€Hô �o×1Ñ1Ó2€KØ*×?Ñ?ÐØ'×9Ñ9ÐÜ�×3Ñ3Ó4€LØ&×8Ñ8ÐØ)×>Ñ>ÐØ*×@Ñ@Ðö ð 	×*Ñ*×AÒAàð ö ð 	×*Ñ*×CÒCàð ö ð 	×*Ñ*×6Ò6àð ð
 #×/Ñ/€LØ#×1Ñ1€Mð —H‘H—N’Nóâ"ˆDØ�7‰7�mÑ#ó 	0Ô˜DÖ/Ù"ð ð ð ×&Ñ&¤t¬D´¸"¿(¹(¿.¹.Ó1IÓ,JÓ'K×'PÑ'PÔQóâQˆDô 	˜D -Ö0ÙQð ð ð
Gœ<ð G¬I÷ Gò Gð22LœCð 2L¤Lð 2L´Z÷ 2Lö 2Lñh 28Ó8²¨#�= Ö%±€KÐ8Ü9BÀ7Ô9KÔLÒ9K©v¨s‘N 3Ö*Ñ9K€LÑLÜ¨KÑSÐSùòsùò
ùòd 9ùÛLs   ÄHÄ,HÆ	H#ÇH(Ç>H-))ÚdataclassesÚcollections.abcr   r   Úenumr   r   Útypingr   r   r
  r
   Útorch._library.opaque_objectr   r   Útorch._subclasses.fake_tensorr   r	  Ú&torch._functorch._aot_autograd.schemasr   Ú__all__Ú	dataclassr   r+   r   r   r   r   r   r[   r   r   r   r   r   r   r¥   r  r%  r$   r1  r   r'   r(   Ú<module>r;     s  ðã ß /ß ß 'å ?ß MÝ 1ö ÛÝEò€ð  ×Ñ÷ð ó ðð ×Ñ÷ð ó ðð ×Ñ÷ð ó ðð ×Ñ÷ð ó ðð ×Ñ÷ð ó ðð ×Ñ÷-ð -ó ð-ð ×Ñ÷+ð +ó ð+ð
 ØØØØØØØðñ€ô�ô ð ×Ñ÷Rð Ró ðRô<�ô ð ×Ñ÷Fð Fó ðFð2 ×Ñ÷ð ó ðð ×Ñ÷^Kð ^Kó ð^KòB)ð'
¨lô '
ðT|TØ%ð|Tàð|Tð   ™Hð|Tð õ	|Tr'   