§
    Ÿ²Åj›U  ã                   ó|  — U 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mZmZm	Z	m
Z
mZmZmZmZ d dlZd dlmZ d dlmZmZ ddlmZ erddlmZ g d¢Z ed	¬
¦  «         G d„ de¦  «        ¦   «         Zi Ze	ee
ej                 f         ed<   d„ Z e¦   «         eej        <    G d„ d¦  «        Z ej!        ej"        ej#        ej$        ej%        j&        e j'        ej(         e ¦   «          e)d¦  «        ej*         ej+        d¦  «        dœZ, e-e¦  «        D ]Z. e/ee.¦  «        e,e.<   Œdddefd„Z0dej1        j2        dej        fd„Z3i Z4e	ee5e5f         ej        f         ed<   dej1        j2        dej        fd„Z6 ed	¬
¦  «        deded         de	e5df         fd „¦   «         Z7 ed	¬
¦  «        d1d!ed"e8fd#„¦   «         Z9 ed	¬
¦  «        d$„ ¦   «         Z: ed	¬
¦  «        d%ed&efd'„¦   «         Z; ed	¬
¦  «        	 	 	 	 d2dedee         dee	e5ef                  d(eee                  d)ee	e5ef                  d*e8dee         fd+„¦   «         Z< ed	¬
¦  «        	 	 d3d,ej=        j>        de5dee         dee	e5ef                  d*e8dee         fd-„¦   «         Z?d.ej        deed/f         de	e5ef         d*e8dee         f
d0„Z@dS )4é    N)	ÚAnyÚCallableÚcastÚDictÚListÚ
NamedTupleÚOptionalÚTupleÚTYPE_CHECKING)Úboolean_dispatched)Ú
OpOverloadÚOpOverloadPacketé   )Úcompatibility)ÚArgument)ÚArgsKwargsPairÚcheck_for_mutable_operationÚget_signature_for_torch_opÚcreate_type_hintÚtype_matchesÚnormalize_functionÚnormalize_moduleF)Úis_backward_compatiblec                   óH   — e Zd ZU dZeedf         ed<   eeef         ed<   dS )r   z<
    Simple named tuple for wrapping args/kwargs pairs.
    .ÚargsÚkwargsN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   Ú__annotations__r   Ústr© ó    úJC:\Projects\Historical\venv\Lib\site-packages\torch/fx/operator_schemas.pyr   r   )   sF   € € € € € € ðð ð ��S�Œ/ÐÐÑØ��c�ŒNÐÐÑÐÐr$   r   Ú_manual_overridesc                  óÂ   — g } d„ }|                       t          j        |¦  «        ¦  «         dt          fd„}|                       t          j        |¦  «        ¦  «         | S )Nc                 ó   — d S ©Nr#   )Úselfs    r%   Únonzeroz!_nonzero_schemas.<locals>.nonzero9   ó   € Øˆr$   Úas_tuplec                ó   — d S r)   r#   )r*   r-   s     r%   r+   z!_nonzero_schemas.<locals>.nonzero>   r,   r$   )ÚappendÚinspectÚ	signatureÚbool)Ú
signaturesr+   s     r%   Ú_nonzero_schemasr4   6   sy   € Ø€Jðð ð ð ×Ò•gÔ'¨Ñ0Ô0Ñ1Ô1Ð1ð¥4ð ð ð ð ð ×Ò•gÔ'¨Ñ0Ô0Ñ1Ô1Ð1àÐr$   c                   ó   — e Zd Zd„ ZdS )Ú_FakeGlobalNamespacec                 ó:   — |dk    rt           S t          d¦  «        ‚)NÚtorchz!Expected a torch namespace lookup)r8   ÚRuntimeError)r*   Únames     r%   Ú__getattr__z _FakeGlobalNamespace.__getattr__J   s   € Ø�7Š?ˆ?ÝˆLÝÐ>Ñ?Ô?Ð?r$   N)r   r   r   r;   r#   r$   r%   r6   r6   I   s(   € € € € € ð@ð @ð @ð @ð @r$   r6   Út)ÚTensorÚDeviceÚLayoutÚnumberÚFutureÚAnyEnumTypeÚQSchemeÚ	__torch__ÚNoneTypeÚStorager<   Úts_typeztorch._C.JitTypeÚreturnc                 ó6   — t          | j        t          ¦  «        S )zç
    Convert a TorchScript type to a Python type (including subtypes) via
    eval'ing the annotation_str. _type_eval_globals sets up expressions
    like "List" and "Future" to map to actual types (typing.List and jit.Future)
    )ÚevalÚannotation_strÚ_type_eval_globals)rG   s    r%   Ú _torchscript_type_to_python_typerM   a   s   € õ �Ô&Õ(:Ñ;Ô;Ð;r$   Ú	ts_schemac           	      óÆ  — ddl m} g }| j        D ]ê}t          |j        ¦  «        }|                     ¦   «         r|j        n|j        }|j        dk    r|j        nd}|j	        r|j
        n|j        }|dk    ra||j        k    sJ ‚|j        }t          |¦  «        D ]=\  }}	|	j        |j        k    sJ ‚ ||	j        |j        |	j        |	j        ¬¦  «        ||<   Œ>|                      |||||¬¦  «        ¦  «         Œëd„ | j        D ¦   «         }
t'          |
¦  «        dk    rd }n+t'          |
¦  «        dk    r	|
d         }nt)          |
¦  «        }t          j        ||¬	¦  «        S )
Nr   )Ú	Parameterr*   ÚinputÚfrom)r:   ÚkindÚdefaultÚ
annotationc                 ó6   — g | ]}t          |j        ¦  «        ‘ŒS r#   )rM   Útype)Ú.0Úrets     r%   ú
<listcomp>z9_torchscript_schema_to_signature_impl.<locals>.<listcomp>�   s0   € ð ð ð Ø7:Õ(¨¬Ñ2Ô2ðð ð r$   r   )Úreturn_annotation)r0   rP   Ú	argumentsrM   rW   Úhas_default_valueÚdefault_valueÚemptyr:   Ú
kwarg_onlyÚKEYWORD_ONLYÚPOSITIONAL_OR_KEYWORDÚPOSITIONAL_ONLYÚ	enumeraterS   rT   rU   r/   ÚreturnsÚlenÚtupleÚ	Signature)rN   rP   Ú
parametersÚargÚarg_typerT   r:   rS   ÚidxÚpÚreturn_typesÚreturn_types               r%   Ú%_torchscript_schema_to_signature_implrp   j   sÒ  € ð "Ð!Ð!Ð!Ð!Ð!à"$€JØÔ"ð 
ð 
ˆÝ3°C´HÑ=Ô=ˆØ'*×'<Ò'<Ñ'>Ô'>ÐS�#Ô#Ð#ÀIÄOˆð œ8 vÒ-Ð-ˆsŒxˆx°7ˆð Œ~ð1ˆIÔ"Ð"àÔ0ð 	ð �6Š>ˆ>Ø˜9Ô:Ò:Ð:Ð:Ð:ð Ô,ˆDå# JÑ/Ô/ð ð ‘��QØ”v Ô!@Ò@Ð@Ð@Ð@Ø"+ )ØœØ"Ô2ØœIØ œ|ð	#ñ #ô #�
˜3‘�ð 	×ÒØˆI˜4 d°GÈÐQÑQÔQñ	
ô 	
ð 	
ð 	
ðð Ø>GÔ>Oðñ ô €Lõ ˆ<ÑÔ˜AÒÐØˆˆÝ	ˆ\Ñ	Ô	˜aÒ	Ð	Ø" 1”oˆˆå˜LÑ)Ô)ˆåÔ˜Z¸;ÐGÑGÔGÐGr$   Ú_SCHEMA_TO_SIGNATURE_CACHEc                 ó�   — | j         | j        f}t                               |¦  «        }|�|S t	          | ¦  «        }|t          |<   |S r)   )r:   Úoverload_namerq   Úgetrp   )rN   Ú	cache_keyÚ	cache_valÚress       r%   Ú _torchscript_schema_to_signaturerx       sO   € ð ” 	Ô 7Ð7€IÝ*×.Ò.¨yÑ9Ô9€IØÐØÐå
/°	Ñ
:Ô
:€CØ,/Õ˜yÑ)Ø€Jr$   Útargetr   )r   .r   r   c                 ó^  — t          | d¬¦  «        \  }}|r”|r”g }t          ||¦  «        D ]:\  }}	  |j        |i |¤Ž |                     ||f¦  «         Œ+# t          $ r Y Œ7w xY wd„ }t          |¦  «        dk    rd S t          |¦  «        dk    r|d         \  }	}
 ||
¦  «         d S d S d S d S )NT)Úreturn_schemasc                 ó:   — | j         rt          d| › d�¦  «        ‚d S )Nz!Tried to trace mutable operation z|. FX only supports functional code, so operations that mutate operands in-place (e.g. via `out` arguments) are not supported)Ú
is_mutabler9   )Úschemas    r%   Úthrow_if_mutablez5check_for_mutable_operation.<locals>.throw_if_mutableÁ   s?   € ØÔ ð Ý"ð)¸ð )ð )ð )ñô ð ðð r$   r   r   )r   ÚzipÚbindr/   Ú	TypeErrorrf   )ry   r   r   r3   ÚschemasÚmatched_schemasÚcandidate_signaturer~   r   Ú_Úschema_to_checks              r%   r   r   ®   s(  € õ 5°VÈDÐQÑQÔQÑ€J�àð �gð Øˆõ
 ,/¨z¸7Ñ+CÔ+Cð 	ð 	Ñ'Ð ðØ(Ð#Ô(¨$Ð9°&Ð9Ð9Ð9Ø×&Ò&Ð(;¸VÐ'DÑEÔEÐEÐEøÝð ð ð Ø�ðøøøð	ð 	ð 	õ ˆÑÔ 1Ò$Ð$àˆDÝ�Ñ!Ô! QÒ&Ð&à!0°Ô!3ÑˆAˆØÐ˜_Ñ-Ô-Ð-Ð-Ð-ð ˆDð?ð ð ð s   ±$AÁ
A#Á"A#Úopr{   c                 ó²  ‡ — t          ‰ t          ¦  «        r	‰ j        g}n¥t          ‰ t          ¦  «        r!ˆ fd„‰                      ¦   «         D ¦   «         }not
                               ‰ ¦  «        }|r|r|dfndS t          j        j	         
                    ‰ ¦  «        }|€|rdndS t          j                             |¦  «        }d„ |D ¦   «         }|r||fn|S )a„  
    Given an operator on the `torch` namespace, return a list of `inspect.Signature`
    objects corresponding to the overloads of that op.. May return `None` if a signature
    could not be retrieved.

    Args:
        op (Callable): An operator on the `torch` namespace to look up a signature for

    Returns:
        Optional[List[inspect.Signature]]: A list of signatures for the overloads of this
            operator, or None if the operator signatures could not be retrieved. If
            return_schemas=True, returns a tuple containing the optional Python signatures
            and the optional TorchScript Function signature
    c                 ó:   •— g | ]}t          ‰|¦  «        j        ‘ŒS r#   )ÚgetattrÚ_schema)rX   Úoverloadrˆ   s     €r%   rZ   z.get_signature_for_torch_op.<locals>.<listcomp>é   s&   ø€ ÐPÐPÐP°X•7˜2˜xÑ(Ô(Ô0ÐPÐPÐPr$   N)NNc                 ó,   — g | ]}t          |¦  «        ‘ŒS r#   )rx   ©rX   r~   s     r%   rZ   z.get_signature_for_torch_op.<locals>.<listcomp>õ   s!   € ÐQÐQÐQ¸vÕ2°6Ñ:Ô:ÐQÐQÐQr$   )Ú
isinstancer   rŒ   r   Ú	overloadsr&   rt   r8   ÚjitÚ	_builtinsÚ_find_builtinÚ_CÚ_jit_get_schemas_for_operator)rˆ   r{   rƒ   ÚoverrideÚaten_fnr3   s   `     r%   r   r   Ö   sô   ø€ õ  �"•jÑ!Ô!ð BØ”:�,ˆˆÝ	�BÕ(Ñ	)Ô	)ð BØPÐPÐPÐPÀÇÂÁÄÐPÑPÔPˆˆå$×(Ò(¨Ñ,Ô,ˆØð 	@Ø'5Ð?�H˜dÐ#Ð#¸4Ð?å”)Ô%×3Ò3°BÑ7Ô7ˆàˆ?Ø#1Ð;�<�<°tÐ;Ý”(×8Ò8¸ÑAÔAˆàQÐQÈÐQÑQÔQ€JØ$2ÐBˆJ˜Ð Ð ¸
ÐBr$   c                 ó¨  — 	 t          | t          t          f¦  «        rŒt          | t          ¦  «        rd„ }nd„ }t          | ¦  «        dk    r |t          ¦  «        S | d         }| D ]7}t          ||¦  «        rŒt          ||¦  «        r|}Œ& |t          ¦  «        c S  ||¦  «        S n'# t          $ r t          j        d| › �¦  «         Y nw xY w| S )aË  
    Produces a type hint for the given argument.

    The :func:`create_type_hint` looks for a type hint compatible with the input argument `x`.

    If `x` is a `list` or `tuple`, it looks for an object in the list whose type is a superclass
    of the rest, and uses that as `base_type` for the `List` or `Tuple` to be returned.
    If no such object is found, it defaults to `List[Any]`.

    If `x` is neither a `list` nor a `tuple`, it returns `x`.
    c                 ó   — t           |          S r)   )r   ©Úxs    r%   Úret_typez"create_type_hint.<locals>.ret_type  s   € Ý œ7�Nr$   c                 ó    — t           | df         S )N.)r
   r›   s    r%   r�   z"create_type_hint.<locals>.ret_type  s   € Ý   C œ=Ð(r$   r   z@We were not able to successfully create type hint from the type )	r�   Úlistrg   rf   r   Ú
issubclassÚ	ExceptionÚwarningsÚwarn)rœ   r�   Ú	base_typer<   s       r%   r   r   ù   s-  € ð
Ý�a�$¥˜Ñ'Ô'ð 	'å˜!�TÑ"Ô"ð )ð#ð #ð #ð #ð
)ð )ð )õ �1‰vŒv˜Š{ˆ{Ø�x¥‘}”}Ð$Ø˜!œˆIØð )ð )�Ý˜a Ñ+Ô+ð )ØÝ 	¨1Ñ-Ô-ð )Ø !�I�Ià#˜8¥C™=œ=Ð(Ð(Ð(Ø�8˜IÑ&Ô&Ð&ð-	'øõ. ð 
ð 
ð 
åŒØRÈqÐRÐRñ	
ô 	
ð 	
ð 	
ð 	
ð
øøøð
 €Hs   ‚AB+ ÁAB+ Â
B+ Â+!CÃCÚsignature_typeÚargument_typec                 ó  ‡‡— t          | d| ¦  «        }| ‰u rdS |t          j        u r(| ‰k    r"| j        }t	          ˆfd„|D ¦   «         ¦  «        S | t
          t                   u r‰t          u rdS t          | dd ¦  «        t          t
          hv r…| j        d         Št          j	        ‰¦  «        st          j        d| › d�¦  «         dS t          ‰dd ¦  «        t          t
          hv rt          ‰j        d         ‰¦  «        S ˆfd„} |‰¦  «        S | t          u r‰t          j        u rdS | t          j        u r‰t          t"          hv rdS t          j	        ‰¦  «        r$t          j	        | ¦  «        rt          ‰| ¦  «        S dS )	NÚ
__origin__Tc              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S r)   )r   )rX   Úcr¦   s     €r%   ú	<genexpr>ztype_matches.<locals>.<genexpr>1  s-   øè è € ÐIÐI°a•<  =Ñ1Ô1ÐIÐIÐIÐIÐIÐIr$   r   z.Does not support nested parametric types, got z. Please file a bug.Fc                 ó¤   •— t          | dd ¦  «        t          t          hvrdS | j        }| j        dk    rdS t	          ˆfd„|D ¦   «         ¦  «        S )Nr¨   F)r#   Tc              3   óJ   •K  — | ]}|t           u pt          |‰¦  «        V — Œd S r)   )ÚEllipsisr    )rX   rª   Úsig_el_types     €r%   r«   z=type_matches.<locals>.is_homogeneous_tuple.<locals>.<genexpr>G  s6   øè è € ÐXÐXÈ˜�X˜ÐD­*°Q¸Ñ*DÔ*DÐXÐXÐXÐXÐXÐXr$   )r‹   rg   r
   Ú__args__Úall)r<   Ú	containedr¯   s     €r%   Úis_homogeneous_tuplez*type_matches.<locals>.is_homogeneous_tupleA  s_   ø€ Ý�q˜,¨Ñ-Ô-µe½U°^ÐCÐCØ�uØœ
ˆIØŒz˜UÒ"Ð"Ø�tÝÐXÐXÐXÐXÈiÐXÑXÔXÑXÔXÐXr$   )r‹   ÚtypingÚUnionr°   Úanyr   ÚintrŸ   r0   Úisclassr¢   r£   r    r8   ÚdtypeÚnumbersÚNumberÚfloat)r¥   r¦   Úsig_origin_typeÚsig_containedr³   r¯   s    `   @r%   r   r   &  sÄ  øø€ å˜n¨l¸NÑKÔK€Oà˜Ð&Ð&Øˆtð �&œ,Ð&Ð&¨>¸]Ò+JÐ+JØ&Ô/ˆÝÐIÐIÐIÐI¸=ÐIÑIÔIÑIÔIÐIà��cœÐ"Ð" }½Ð';Ð';àˆtåˆ~˜|¨TÑ2Ô2µt½T°lÐBÐBØ$Ô-¨aÔ0ˆÝŒ˜{Ñ+Ô+ð 	ÝŒMØeÀÐeÐeÐeñô ð ð �5Ý�= ,°Ñ5Ô5½$Å¸ÐEÐEÝ˜mÔ4°QÔ7¸ÑEÔEÐEð	Yð 	Yð 	Yð 	Yð 	Yð $Ð# MÑ2Ô2Ð2ð �ÐÐ µ%´+Ð!=Ð!=Øˆtà�œÐ'Ð'¨M½cÅ5¸\Ð,IÐ,IØˆtÝ„�}Ñ%Ô%ð 9­'¬/¸.Ñ*IÔ*Ið 9Ý˜-¨Ñ8Ô8Ð8àˆ5r$   Ú	arg_typesÚkwarg_typesÚnormalize_to_only_use_kwargsc                 ó*  — |€i }d}t          | t          j        ¦  «        sÞt          | t          t          f¦  «        sÂ| }| t
          v rlt          | t          ¦  «        rJ ‚t
          |          }|d         |d         }
}	t          j        |	¦  «        j	        t          j        |
¦  «        j	        k    rdS |	}t          |¦  «        sJ ‚t          j        t          j        |¦  «        ¦  «        }t          ||||¦  «        }�n”t          | ¦  «        sJ ‚t          | ¦  «        }g }|�ro|D ]5}	  |j        |i |¤Ž |                     |¦  «         Œ&# t           $ r Y Œ2w xY wt#          |¦  «        dk    r�n"t#          |¦  «        dk    rt          |d         |||¦  «        }nö|€|�¬|r|nt%          t&          t(                   d¦  «        }|r|ni }|D ]~}d}	  |j        |i |¤Ž}|j                             ¦   «         D ])\  }}|j	        |         }|ot/          |j        |¦  «        }Œ*n# t           $ r d}Y nw xY w|rt          ||||¦  «        } nŒnFd	                     d
„ |D ¦   «         ¦  «        }t5          dt7          j        | ¦  «        › d|› �¦  «        ‚|S )að  
    Returns normalized arguments to PyTorch functions. This means that
    `args/kwargs` will be matched up to the functional's
    signature and return exclusively kwargs in positional order if
    `normalize_to_only_use_kwargs` is True.
    Also populates default values. Does not support positional-only
    parameters or varargs parameters (*args, **kwargs). Does not support modules.

    May require `arg_types` and `kwarg_types` in order to disambiguate overloads.

    Args:
        target (Callable): Function that we are normalizing
        args (Tuple[Any]): Tuple of args to the function
        kwargs (Optional[Dict[str, Any]]): Dict of kwargs to the function
        arg_types (Optional[Tuple[Any]]): Tuple of arg types for the args
        kwarg_types (Optional[Dict[str, Any]]): Dict of arg types for the kwargs
        normalize_to_only_use_kwargs (bool): Whether to normalize to only use kwargs.

    Returns:

        Returns normalized_args_and_kwargs, or `None` if not successful.
    NÚif_trueÚif_falser   r   r#   TFú
c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r)   )r"   r�   s     r%   r«   z%normalize_function.<locals>.<genexpr>Ç  s9   è è € ð 1ð 1Ø(.�˜F™œð1ð 1ð 1ð 1ð 1ð 1r$   z Tried to normalize arguments to zy but the schema match was ambiguous! Please provide argument types to the normalize_arguments() call. Available schemas:
)r�   ÚtypesÚBuiltinFunctionTyper   r   r   r"   r0   r1   ri   ÚcallableÚunwrapÚ&_args_kwargs_to_normalized_args_kwargsr   r�   r/   r‚   rf   r   r
   r   r\   Úitemsr   rU   Újoinr9   r8   Útypename)ry   r   r   r¿   rÀ   rÁ   Únew_args_and_kwargsÚtarget_for_analysisÚ
dispatchedrÃ   rÄ   ÚsigÚtorch_op_schemasr„   r…   Úsig_matchesÚbound_typesÚarg_namerk   ÚparamÚschema_printoutss                        r%   r   r   X  s•  € ð> €~ØˆØÐÝ�f�eÔ7Ñ8Ô8ð TÝ�6Õ,­jÐ9Ñ:Ô:ðTð %ÐØÕ'Ð'Ð'õ
 " &­#Ñ.Ô.Ð.Ð.Ð.Ý+¨FÔ3ˆJØ *¨9Ô 5°zÀ*Ô7M�XˆGåÔ! 'Ñ*Ô*Ô5ÝÔ$ XÑ.Ô.Ô9ò:ð :ð �tØ")ÐåÐ+Ñ,Ô,Ð,Ð,Ð,ÝÔ¥¤Ð/BÑ CÔ CÑDÔDˆÝDØ��vÐ;ñ
ô 
ÐÑõ ˜ÑÔÐÐÐÝ5°fÑ=Ô=ÐØˆØñ 8	ð (8ð ð Ð#ðØ,Ð'Ô,¨dÐ=°fÐ=Ð=Ð=Ø#×*Ò*Ð+>Ñ?Ô?Ð?Ð?øÝ ð ð ð Ø�Hðøøøõ �?Ñ#Ô# qÒ(Ð(áÝ�_Ñ%Ô%¨Ò*Ð*å&LØ# AÔ&¨¨fÐ6Rñ'ô 'Ð#Ð#ð Ð(¨KÐ,CØ-6Ð P 	 	½DÅÅsÄÈRÑ<PÔ<P�IØ1<Ð"D + +À"�KØ/?ð "ð "Ð+Ø&*˜ð
0Ø*BÐ*=Ô*BØ!*ð+Ø.9ð+ð +˜Kð 7BÔ6K×6QÒ6QÑ6SÔ6Sð "ð "Ñ 2 ¨(Ø(;Ô(FÀxÔ(P Ø.9ð /"½lØ$)Ô$4°hñ?"ô ?"  ð"øõ
  )ð 0ð 0ð 0Ø*/˜K˜K˜Kð0øøøà&ð 	"å FØ$7Ø$(Ø$*Ø$@ñ	!"ô !"ð 0ð "˜Eð	"øð (,§y¢yð 1ð 1Ø2Að1ñ 1ô 1ñ (ô (Ð$õ 'ðb½5¼>È&Ñ;QÔ;Qð bð bàO_ðbð bñô ð ð Ðs%   Ä)"EÅ
EÅEÇAH#È#H2È1H2Úrootc                 ó�  — 	 |                       |¦  «        }n&# t          $ r}t          d|› d�¦  «        |‚d}~ww xY wt          |j        d¦  «        rs|j        j        }t          t          j        |d¦  «        |j        k    rCt          j
        t          j        |j        ¦  «        ¦  «        }|€i }t          ||||¦  «        }	|	S dS )a(  
    Returns normalized arguments to PyTorch modules. This means that
    `args/kwargs` will be matched up to the functional's
    signature and return exclusively kwargs in positional order if
    `normalize_to_only_use_kwargs` is True.
    Also populates default values. Does not support positional-only
    parameters or varargs parameters (*args, **kwargs).

    Args:
        root (nn.Module): root module upon which we query modules
        target (Callable): Function that we are normalizing
        args (Tuple[Any]): Tuple of args to the function
        kwargs (Optional[Dict[str, Any]]): Dict of kwargs to the function
        normalize_to_only_use_kwargs (bool): Whether to normalize to only use kwargs.

    Returns:

        Returns normalized_args_and_kwargs, or `None` if not successful.
    z$Tried to normalize node with target z# but root did not have that target!Nr   )Úget_submoduleÚAttributeErrorr9   ÚhasattrÚ	__class__r   r‹   r8   Únnr0   r1   rÊ   ÚforwardrË   )
rÙ   ry   r   r   rÁ   ÚsubmodÚeÚ	classnamerÒ   rÏ   s
             r%   r   r   Ó  só   € ð6Ø×#Ò# FÑ+Ô+ˆˆøÝð ð ð Ýð!°6ð !ð !ð !ñ
ô 
ð ð	øøøøðøøøõ
 ˆvÔ Ñ,Ô,ð 	'ØÔ$Ô-ˆ	Ý•5”8˜Y¨Ñ-Ô-°Ô1AÒAÐAÝÔ#¥G¤N°6´>Ñ$BÔ$BÑCÔCˆCØˆ~Ø�Ý"HØ�T˜6Ð#?ñ#ô #Ðð 'Ð&Øˆ4s   ‚ ˜
;¢6¶;rÒ   .c                 óL  ‡	— t           j        j        t           j        j        hŠ	t	          ˆ	fd„| j                             ¦   «         D ¦   «         ¦  «        r.t          | j                             ¦   «         ¦  «        g d¢k    rdS  | j	        |i |¤Ž}| 
                    ¦   «          i }g }t          | j        ¦  «        D ]K\  }}|s4|t          |¦  «        k     r!|                     |j        |         ¦  «         Œ;|j        |         ||<   ŒLt          t!          |¦  «        |¦  «        S )a…  
    Given a call target, args, and kwargs, return the arguments normalized into
    an ArgsKwargsPair, or None if the type signature is not supported by
    this normalization.

    Args:

        sig (inspect.Signature): Signature object for the target
        args (Tuple): Arguments that appear at the callsite for `target`
        kwargs (Dict): Keyword arguments that appear at the callsite for `target`
        normalize_to_only_use_kwargs (bool): Whether to normalize to only use kwargs.

    Returns:

        Optional[ArgsKwargsPair]: Normalized args and kwargs for `target`, or `None` if
            this target is not supported.
    c              3   ó*   •K  — | ]}|j         ‰vV — Œd S r)   )rS   )rX   rm   Úsupported_parameter_typess     €r%   r«   z9_args_kwargs_to_normalized_args_kwargs.<locals>.<genexpr>   s+   øè è € Ð
TÐ
T°qˆ1Œ6Ð2Ð2Ð
TÐ
TÐ
TÐ
TÐ
TÐ
Tr$   )rQ   rR   ÚtoÚ	generatorN)r0   rP   rb   ra   r¶   ri   ÚvaluesrŸ   Úkeysr�   Úapply_defaultsrd   rf   r/   r\   r   rg   )
rÒ   r   r   rÁ   Ú
bound_argsÚ
new_kwargsÚnew_argsÚir×   ræ   s
            @r%   rË   rË     s0  ø€ õ6 	ÔÔ/ÝÔÔ&ð!Ðõ Ð
TÐ
TÐ
TÐ
T¸C¼N×<QÒ<QÑ<SÔ<SÐ
TÑ
TÔ
TÑTÔTð õ
 �”×#Ò#Ñ%Ô%Ñ&Ô&Ð*NÐ*NÐ*NÒNÐNØ�4à�”˜4Ð* 6Ð*Ð*€JØ×ÒÑÔÐà!#€JØ€HÝ˜cœnÑ-Ô-ð <ð <‰ˆˆ5Ø+ð 	<°µC¸±I´I²°Ø�OŠO˜JÔ0°Ô7Ñ8Ô8Ð8Ð8à *Ô 4°UÔ ;ˆJ�uÑÐå�% ™/œ/¨:Ñ6Ô6Ð6r$   )F)NNNF)NF)AÚenumr0   rº   rÇ   r´   r¢   r   r   r   r   r   r   r	   r
   r   r8   Útorch._jit_internalr   Ú
torch._opsr   r   Ú_compatibilityr   Únoder   Ú__all__r   r&   rh   r!   r4   r+   r6   r=   ÚdeviceÚlayoutr»   r’   rA   ÚEnumÚqschemerW   ÚUntypedStorageÚTypeVarrL   ÚdirÚkr‹   rM   r•   ÚFunctionSchemarp   rq   r"   rx   r   r2   r   r   r   r   rß   ÚModuler   rË   r#   r$   r%   ú<module>r      sÓ  ðà €€€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à )Ð )Ð )Ð )Ð )Ð )ð ð ØÐÐÐÐÐðð ð €ð € eÐ,Ñ,Ô,ðð ð ð ð �Zñ ô ñ -Ô,ðð >@Ð �4˜ $ wÔ'8Ô"9Ð9Ô:Ð ?Ð ?Ñ ?ðð ð ð  $4Ð#3Ñ#5Ô#5Ð �%”-Ñ  ð@ð @ð @ð @ð @ñ @ô @ð @ð ŒlØŒlØŒlØŒnØŒiÔØ”9ØŒ}Ø%Ð%Ñ'Ô'Ø��T‘
”
ØÔ#Ø	ˆŒ˜Ñ	Ô	ðð Ð ð 
ˆˆV‰Œð /ð /€AØ#˜G F¨AÑ.Ô.Ð�qÑÐð<Ð.@ð <ÀSð <ð <ð <ð <ð0HØŒxÔ&ð0HàÔð0Hð 0Hð 0Hð 0Hðf HJÐ ˜D  s¨C x¤°'Ô2CÐ!CÔDÐ IÐ IÑ IðØŒxÔ&ðàÔðð ð ð ð € eÐ,Ñ,Ô,ð$Øð$Ø! /Ô2ð$Ø<@ÀÀjÀÔ<Qð$ð $ð $ñ -Ô,ð$ðN € eÐ,Ñ,Ô,ðCð C 8ð C¸Tð Cð Cð Cñ -Ô,ðCðD € eÐ,Ñ,Ô,ð)ð )ñ -Ô,ð)ðX € eÐ,Ñ,Ô,ð. ð .°Sð .ð .ð .ñ -Ô,ð.ðb € eÐ,Ñ,Ô,ð (,Ø&*Ø,0Ø).ðwð wØðwà
�Œ*ðwð �T˜#˜s˜(”^Ô$ðwð ˜˜cœ
Ô#ð	wð
 ˜$˜s C˜xœ.Ô)ðwð #'ðwð ˆnÔðwð wð wñ -Ô,ðwðt € eÐ,Ñ,Ô,ð
 (,Ø).ð+ð +Ø
Œ(Œ/ð+àð+ð �Œ*ð+ð �T˜#˜s˜(”^Ô$ð	+ð
 #'ð+ð ˆnÔð+ð +ð +ñ -Ô,ð+ð\17Ø	Ô	ð17à
��S�Œ/ð17ð ��c�ŒNð17ð #'ð	17ð
 ˆnÔð17ð 17ð 17ð 17ð 17ð 17r$   