§
    ŠŠtjÊ^  ã                  ó"  — U d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
Z
ddlmZmZ erddlmZmZ ddlmZ g d¢Zd	ZdZdad
ed<    ej        ¦   «         Zd*d„Z G d„ de¦  «        Zd+d„Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z  G d„ d ¦  «        Z!eez  e"z  dz  Z#d!ed"<   e#ez  Z$d!ed#<   e$ez  e z  e!z  Z%d!ed$<   e%e&e%         z  e'e(e%f         z  Z)d!ed%<    G d&„ d'¦  «        Z* G d(„ d)¦  «        Z+dS ),zxSpec types for controlling what is dynamic in compiled/exported code.
Currently only supports unbacked dynamic shapes.

é    )ÚannotationsN)ÚAnyÚcastÚTYPE_CHECKINGÚ	TypeAlias)ÚSymBoolÚSymInt)ÚIteratorÚSequence©ÚShapeEnv)ÚShapeVarÚIntVarÚSTATICÚ
TensorSpecÚ
ObjectSpecÚDictSpecÚSeqSpecÚ
ParamsSpecÚ
ShapesSpecÚLeafSpecÚLeafIntSpecÚIntermediateSpecz  zShapeEnv | NoneÚ_SPEC_SHAPE_ENVÚreturnr   c                 óÞ   — t           �t           S t          5  t           �t           cddd¦  «         S ddlm}   G d„ d| ¦  «        } |¦   «         a t           cddd¦  «         S # 1 swxY w Y   dS )z7Lazily build the singleton spec ShapeEnv (thread-safe).Nr   r   c                  óV   ‡ — e Zd ZU dZ eh d£¦  «        Zded<   dˆ fd„Zdˆ fd„Zˆ xZ	S )ú*_get_spec_shape_env.<locals>._SpecShapeEnvuâ  Special ShapeEnv used only at spec-definition time.

            Attribute access is blocked by default via ``__getattribute__``;
            only private (``_``-prefix) names and the explicit allowlist in
            ``_ALLOWED_PUBLIC`` pass through. SymInt arithmetic paths read
            a handful of public fields transparently (via the
            ``@record_shapeenv_event`` decorator and FX-cache machinery),
            so those are allowlisted. Everything else â€” evaluation, guard
            recording, deferred asserts, etc. â€” is blocked.

            During ``ShapeEnv.__init__`` itself, access is unrestricted
            because the base class touches its own public fields while
            bootstrapping.
            >   Úbound_sympyÚis_recordingÚvar_to_rangeÚfx_node_cacheÚshould_record_eventszfrozenset[str]Ú_ALLOWED_PUBLICr   ÚNonec                ó¸   •— t                                | dd¦  «         t          ¦   «                              ¦   «          t                                | dd¦  «         d S )NÚ
_init_doneFT)ÚobjectÚ__setattr__ÚsuperÚ__init__)ÚselfÚ	__class__s    €ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/fx/experimental/dynamic_spec.pyr+   z3_get_spec_shape_env.<locals>._SpecShapeEnv.__init__m   sO   ø€ å×"Ò" 4¨°uÑ=Ô=Ð=Ý‘”× Ò Ñ"Ô"Ð"Ý×"Ò" 4¨°tÑ<Ô<Ð<Ð<Ð<ó    ÚnameÚstrr   c                óˆ  •— |                      d¦  «        r!t          ¦   «                              |¦  «        S t          ¦   «                              d¦  «        s!t          ¦   «                              |¦  «        S |t          | ¦  «        j        v r!t          ¦   «                              |¦  «        S t          d|› d�¦  «        ‚)NÚ_r'   z_SpecShapeEnv: 'zd' is not allowed at spec-definition time. Use IntVar / ShapeVar only inside TensorSpec / ShapesSpec.)Ú
startswithr*   Ú__getattribute__Útyper$   Ú	TypeError)r,   r0   r-   s     €r.   r5   z;_get_spec_shape_env.<locals>._SpecShapeEnv.__getattribute__s   sµ   ø€ Ø—?’? 3Ñ'Ô'ð :Ý ™7œ7×3Ò3°DÑ9Ô9Ð9Ý‘w”w×/Ò/°Ñ=Ô=ð :Ý ™7œ7×3Ò3°DÑ9Ô9Ð9Ø�4 ™:œ:Ô5Ð5Ð5Ý ™7œ7×3Ò3°DÑ9Ô9Ð9Ýð7 tð 7ð 7ð 7ñô ð r/   )r   r%   )r0   r1   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	frozensetr$   Ú__annotations__r+   r5   Ú__classcell__©r-   s   @r.   Ú_SpecShapeEnvr   M   s�   ø€ € € € € € ðð ð" /8¨ið
ð 
ð 
ñ/ô /ˆOð ð ð ñ ð=ð =ð =ð =ð =ð =ðð ð ð ð ð ð ð ð ð r/   r@   )r   Ú_SPEC_SHAPE_ENV_LOCKÚ%torch.fx.experimental.symbolic_shapesr   )r   r@   s     r.   Ú_get_spec_shape_envrC   C   sü   € õ Ð"ÝÐÝ	ð 9ð 9ÝÐ&Ý"ð9ð 9ð 9ð 9ñ 9ô 9ð 9ð 9ð 	CÐBÐBÐBÐBÐBð1	ð 1	ð 1	ð 1	ð 1	˜Hñ 1	ô 1	ð 1	ðf (˜-™/œ/ˆÝðs9ð 9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð 9ð 9s   –A"±$A"Á"A&Á)A&c                  óh   ‡ — e Zd ZdZ ej        ¦   «         Z	 dddddœdˆ fd„Zdd„Zdd„Z	dd„Z
ˆ xZS )r   a¬  Indicates that a scalar integer argument is dynamic (no implicit range).

    Unbacked dynamic shapes will represent the underlying value in the
    compiled graph.

    IntVar is a ``SymInt`` subclass backed by ``_SpecShapeEnv``,
    so arithmetic and comparisons compose naturally::

        A = IntVar("a")
        B = IntVar("b")
        A + 1  # SymInt expr=a#0 + 1
        A * B + 1  # SymInt expr=a#0*b#1 + 1
        A > 0  # SymBool

    Such derived ``SymInt`` values may be used directly as leaf specs in
    ``TensorSpec`` / ``ParamsSpec``

    Repr always includes a per-instance uid so two IntVars with the same name
    (or two anonymous ones) are distinguishable in logs::

        IntVar()           -> "IntVar(anon#0)"
        IntVar("offset")   -> "IntVar(offset#1)"

    Example::

        IntVar("num_heads")
        IntVar("offset", min=-100, max=100)
        IntVar("size", min=1, max=2048, optimization_hint=512)
    N©ÚminÚmaxÚoptimization_hintr0   ú
str | NonerF   ú
int | NonerG   rH   r   r%   c               óÐ  •— ddl m}m} ddlm} ddlm} |�|nd| _        t          t          j
        ¦  «        | _        || _        || _        || _        t          j        | j        › d| j        › �¦  «        | _        t%          ¦   «         }	 || j        |	t&          |¬¦  «        }
t)          ¦   «                              |
¦  «          ||�|n| |�|n|¦  «        |	j        | j        <   d S )Nr   )Ú_NO_HINTÚSymNode)Úint_oo)ÚValueRangesÚanonú#)Ú	shape_envÚpytypeÚhint)Útorch.fx.experimental.sym_noderL   rM   Útorch.utils._sympy.numbersrN   Útorch.utils._sympy.value_rangesrO   r0   Únextr   Ú_uid_counterÚ_uidrF   rG   rH   ÚsympyÚSymbolÚ	sympy_symrC   Úintr*   r+   r!   )r,   r0   rF   rG   rH   rL   rM   rN   rO   ÚenvÚnoder-   s              €r.   r+   zIntVar.__init__¥   s!  ø€ ð 	EÐDÐDÐDÐDÐDÐDÐDØ5Ð5Ð5Ð5Ð5Ð5Ø?Ð?Ð?Ð?Ð?Ð?à Ð,�D�D°&ˆŒ	Ý�Ô,Ñ-Ô-ˆŒ	ØˆŒØˆŒØ!2ˆÔÝœ¨¬Ð&@Ð&@°T´YÐ&@Ð&@ÑAÔAˆŒÝ!Ñ#Ô#ˆØˆwØŒNØÝØð	
ñ 
ô 
ˆõ 	‰Œ×Ò˜ÑÔÐð ,7¨;Ø�?ˆCˆC¨¨Ø�?ˆCˆC¨ñ,
ô ,
ˆÔ˜œÑ(Ð(Ð(r/   r1   c                óX  — | j         › d| j        › �g}| j        �|                     d| j        › �¦  «         | j        �|                     d| j        › �¦  «         | j        �|                     d| j        › �¦  «         t          | ¦  «        j        › dd                     |¦  «        › d�S )NrQ   zmin=zmax=zoptimization_hint=ú(z, ú))	r0   rZ   rF   ÚappendrG   rH   r6   r8   Újoin)r,   Úpartss     r.   Ú__repr__zIntVar.__repr__Æ   s»   € ð ”IÐ+Ð+ ¤	Ð+Ð+Ð,ˆØŒ8ÐØ�LŠLÐ* ¤Ð*Ð*Ñ+Ô+Ð+ØŒ8ÐØ�LŠLÐ* ¤Ð*Ð*Ñ+Ô+Ð+ØÔ!Ð-Ø�LŠLÐF¨dÔ.DÐFÐFÑGÔGÐGÝ�t‘*”*Ô%Ð;Ð;¨¯	ª	°%Ñ(8Ô(8Ð;Ð;Ð;Ð;r/   r^   c                ó    — t          | ¦  «        S ©N)Úid©r,   s    r.   Ú__hash__zIntVar.__hash__Ô   s   € Ý�$‰xŒxˆr/   údict[str, Any]c                ó^   — t          | ¦  «        j        | j        | j        | j        | j        dœS )N)r6   r0   rF   rG   rH   )r6   r8   r0   rF   rG   rH   rk   s    r.   Úto_jsonablezIntVar.to_jsonable×   s2   € å˜‘J”JÔ'Ø”IØ”8Ø”8Ø!%Ô!7ð
ð 
ð 	
r/   ri   )
r0   rI   rF   rJ   rG   rJ   rH   rJ   r   r%   ©r   r1   ©r   r^   ©r   rm   )r8   r9   r:   r;   Ú	itertoolsÚcountrY   r+   rg   rl   ro   r>   r?   s   @r.   r   r   „   s´   ø€ € € € € ðð ð< #�9”?Ñ$Ô$€Lð  ð
ð ØØ(,ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðB
<ð 
<ð 
<ð 
<ðð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r/   r   Úvr   Úwherer1   r%   c               óÎ   — t          | t          ¦  «        rd}nt          | t          ¦  «        rd}ndS | j        j        t          ¦   «         urt          |› d|› d| ›d�¦  «        ‚dS )zXIf ``v`` is a SymInt or SymBool, validate it originates from the
    spec ShapeEnv.
    r	   r   Nú: z= spec values must originate from spec IntVar / ShapeVar; got z  backed by a different ShapeEnv.)Ú
isinstancer	   r   r`   rR   rC   r7   )ru   rv   Úkinds      r.   Ú_validate_spec_symr{   á   sž   € õ �!•VÑÔð ØˆˆÝ	�A•wÑ	Ô	ð ØˆˆàˆØ„vÔÕ2Ñ4Ô4Ð4Ð4ÝØð Cð C˜ð Cð CØðCð Cð Cñ
ô 
ð 	
ð 5Ð4r/   c                  ó2   ‡ — e Zd ZdZ	 dddddœdˆ fd„Zˆ xZS )r   zõIndicates that a dimension size is dynamic and is >= 0.

    Subclass of `IntVar` with ``min=0`` by default.

    Example::

        ShapeVar("batch")
        ShapeVar("batch", max=64)
        ShapeVar("batch", max=64, optimization_hint=32)
    Nr   rE   r0   rI   rF   r^   rG   rJ   rH   r   r%   c               ó„   •— |dk     rt          d|› d�¦  «        ‚t          ¦   «                              ||||¬¦  «         d S )Nr   zBShapeVar requires min >= 0 (a shape dim is non-negative); got min=z+. Use IntVar(...) for unrestricted scalars.rE   )Ú
ValueErrorr*   r+   )r,   r0   rF   rG   rH   r-   s        €r.   r+   zShapeVar.__init__þ   se   ø€ ð �Š7ˆ7ÝðLØðLð Lð Lñô ð õ 	‰Œ×Ò˜ 3¨CÐCTÐÑUÔUÐUÐUÐUr/   ri   )
r0   rI   rF   r^   rG   rJ   rH   rJ   r   r%   )r8   r9   r:   r;   r+   r>   r?   s   @r.   r   r   ò   ss   ø€ € € € € ð	ð 	ð  ðVð ØØ(,ðVð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vr/   r   c                  óB   — e Zd ZdZdd„Zdd
„Zdd„Zdd„Zdd„Zdd„Z	dS )r   a~  Per-dimension shape specification for a tensor.

    A list-like container of ``LeafIntSpec`` with length
    equal to the tensor's dim.

    Example::

        B = ShapeVar("batch")
        TensorSpec([B, None])  # rank 2, dim 0 dynamic
        TensorSpec([B, 10])  # rank 2, dim 0 dynamic, dim 1 static=10
        TensorSpec([B * 2 + 1, None])  # rank 2, dim 0 derived from B
    ÚdimsúSequence[LeafIntSpec]r   r%   c           	     ó  — t          |¦  «        D ]a\  }}|�Ft          |t          t          f¦  «        s*t	          d|› dt          |¦  «        j        › d|›�¦  «        ‚t          |d|› �¬¦  «         Œbt          |¦  «        | _	        d S )NzTensorSpec dim z: expected LeafIntSpec, got rx   ©rv   )
Ú	enumeratery   r^   r	   r7   r6   r8   r{   ÚlistÚ_specs)r,   r€   ÚiÚds       r.   r+   zTensorSpec.__init__  sª   € Ý˜d‘O”Oð 	?ð 	?‰DˆAˆqØˆ}¥Z°µC½°=Ñ%AÔ%Aˆ}Ýð1 að 1ð 1Ý˜A‘w”wÔ'ð1ð 1Ø+,ð1ð 1ñô ð õ ˜qÐ(=¸!Ð(=Ð(=Ð>Ñ>Ô>Ð>Ð>Ý)-¨d©¬ˆŒˆˆr/   Úindexr^   r   c                ó   — | j         |         S ri   ©r†   )r,   r‰   s     r.   Ú__getitem__zTensorSpec.__getitem__&  s   € ØŒ{˜5Ô!Ð!r/   c                ó*   — t          | j        ¦  «        S ri   )Úlenr†   rk   s    r.   Ú__len__zTensorSpec.__len__)  s   € Ý�4”;ÑÔÐr/   úIterator[LeafIntSpec]c                ó*   — t          | j        ¦  «        S ri   )Úiterr†   rk   s    r.   Ú__iter__zTensorSpec.__iter__,  s   € Ý�D”KÑ Ô Ð r/   r1   c                ó¨   — dg}t          | j        ¦  «        D ]&\  }}|                     t          › |› d|›�¦  «         Œ'd                     |¦  «        S )NzTensor:rx   ú
)r„   r†   rd   Ú_INDENTre   )r,   Úlinesr‡   Úspecs       r.   rg   zTensorSpec.__repr__/  s`   € Ø�ˆÝ  ¤Ñ-Ô-ð 	4ð 	4‰GˆAˆtØ�LŠL�GÐ2 QÐ2Ð2¨$Ð2Ð2Ñ3Ô3Ð3Ð3Ø�yŠy˜ÑÔÐr/   rm   c                ó*   — dd„ | j         D ¦   «         dœS )Nr   c                óZ   — g | ](}t          |d ¦  «        r|                     ¦   «         n|‘Œ)S ©ro   ©Úhasattrro   ©Ú.0r˜   s     r.   ú
<listcomp>z*TensorSpec.to_jsonable.<locals>.<listcomp>8  sH   € ð ð ð àõ '.¨d°MÑ&BÔ&BÐL�× Ò Ñ"Ô"Ð"Èðð ð r/   )r6   r€   r‹   rk   s    r.   ro   zTensorSpec.to_jsonable5  s2   € à ðð à œKðñ ô ð
ð 
ð 	
r/   N)r€   r�   r   r%   )r‰   r^   r   r   rq   )r   r�   rp   rr   )
r8   r9   r:   r;   r+   rŒ   r�   r“   rg   ro   © r/   r.   r   r     s–   € € € € € ðð ð4ð 4ð 4ð 4ð"ð "ð "ð "ð ð  ð  ð  ð!ð !ð !ð !ð ð  ð  ð  ð
ð 
ð 
ð 
ð 
ð 
r/   r   c                  óL   — e Zd ZdZddd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )r   a’  Spec for any Python object's attributes.

    Constructor::

        ObjectSpec({name: IntermediateSpec, ...})

    Values may be leaves (``TensorSpec`` / ``IntVar`` / ``int`` /
    ``None``) or another ``ObjectSpec`` for recursion.

    Example::

        ObjectSpec({"weight": TensorSpec([ShapeVar("h"), None])})
        ObjectSpec({"inner": ObjectSpec({"weight": TensorSpec([ShapeVar("h")])})})
    NÚfieldsú"dict[str, IntermediateSpec] | Noner   r%   c                ó6   — |rt          |¦  «        ni | _        d S ri   )ÚdictÚ_fields)r,   r£   s     r.   r+   zObjectSpec.__init__O  s   € ØDJÐ4RµD¸±L´L°LÐPRˆŒˆˆr/   r0   r(   Úboolc                ó   — || j         v S ri   )r§   )r,   r0   s     r.   Ú__contains__zObjectSpec.__contains__R  s   € Ø�t”|Ð#Ð#r/   úIterator[str]c                ó*   — t          | j        ¦  «        S ri   )r’   r§   rk   s    r.   r“   zObjectSpec.__iter__U  s   € Ý�D”LÑ!Ô!Ð!r/   r^   c                ó*   — t          | j        ¦  «        S ri   )rŽ   r§   rk   s    r.   r�   zObjectSpec.__len__X  s   € Ý�4”<Ñ Ô Ð r/   r   c                ó4   — | j                              ¦   «         S ri   ©r§   Úitemsrk   s    r.   r°   zObjectSpec.items[  s   € ØŒ|×!Ò!Ñ#Ô#Ð#r/   r1   c                óŠ  — dg}| j                              ¦   «         D ]’\  }}t          |¦  «        }d|v rX|                     t          › d|› d�¦  «         |                     ¦   «         D ]"}|                     t          dz  |z   ¦  «         Œ#Œp|                     t          › d|› d|› �¦  «         Œ“d                     |¦  «        S )Nzobject_spec:r•   ú.ú:é   rx   )r§   r°   Úreprrd   r–   Ú
splitlinesre   )r,   r—   r0   r˜   Ú	spec_reprÚlines         r.   rg   zObjectSpec.__repr__^  sá   € ØÐ ˆØœ,×,Ò,Ñ.Ô.ð 	?ð 	?‰JˆD�$Ý˜T™
œ
ˆIØ�yÐ Ð Ø—’¥Ð1Ð1¨$Ð1Ð1Ð1Ñ2Ô2Ð2Ø%×0Ò0Ñ2Ô2ð 5ð 5�DØ—L’L¥¨1¡¨tÑ!3Ñ4Ô4Ð4Ð4ð5ð —’¥Ð=Ð=¨$Ð=Ð=°)Ð=Ð=Ñ>Ô>Ð>Ð>Ø�yŠy˜ÑÔÐr/   rm   c                óN   — dd„ | j                              ¦   «         D ¦   «         dœS )Nr   c                ób   — i | ],\  }}|t          |d ¦  «        r|                     ¦   «         n|“Œ-S r›   rœ   )rŸ   r0   r˜   s      r.   ú
<dictcomp>z*ObjectSpec.to_jsonable.<locals>.<dictcomp>m  sN   € ð ð ð á�D˜$ð ­G°D¸-Ñ,HÔ,HÐR�d×&Ò&Ñ(Ô(Ð(Èdðð ð r/   )r6   r£   r¯   rk   s    r.   ro   zObjectSpec.to_jsonablej  s>   € à ðð à"&¤,×"4Ò"4Ñ"6Ô"6ðñ ô ð
ð 
ð 	
r/   ri   )r£   r¤   r   r%   )r0   r(   r   r¨   )r   r«   rq   ©r   r   rp   rr   ©r8   r9   r:   r;   r+   rª   r“   r�   r°   rg   ro   r¡   r/   r.   r   r   ?  s´   € € € € € ðð ðSð Sð Sð Sð Sð$ð $ð $ð $ð"ð "ð "ð "ð!ð !ð !ð !ð$ð $ð $ð $ð
 ð 
 ð 
 ð 
 ð
ð 
ð 
ð 
ð 
ð 
r/   r   c                  óN   — e Zd ZdZ	 ddd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )r   aT  Spec for a Python ``dict``-typed value.

    Constructor::

        DictSpec({key: IntermediateSpec, ...})

    Keys may be ``str`` or ``int``.

    Example::

        DictSpec({"x": TensorSpec([ShapeVar("h"), None])})
        DictSpec({"config": DictSpec({"batch": IntVar()})})
        DictSpec({0: TensorSpec([ShapeVar("h"), None])})
    NÚentriesú(dict[str | int, IntermediateSpec] | Noner   r%   c                óÐ   — |rt          |¦  «        ni | _        | j        D ]E}t          |t          t          f¦  «        s't          dt          |¦  «        j        › d|›�¦  «        ‚ŒFd S )Nz0DictSpec entries must have str or int keys, got rx   )r¦   Ú_entriesry   r1   r^   r7   r6   r8   )r,   r¿   Úks      r.   r+   zDictSpec.__init__„  s„   € ð %Ð,�D�‰MŒMˆM¨"ð 	Œð ”ð 	ð 	ˆAÝ˜a¥#¥s Ñ,Ô,ð ÝØ`ÅtÈAÁwÄwÔGWÐ`Ð`Ð[\Ð`Ð`ñô ð ðð	ð 	r/   Úkeyr(   r¨   c                ó   — || j         v S ri   ©rÂ   )r,   rÄ   s     r.   rª   zDictSpec.__contains__�  s   € Ø�d”mÐ#Ð#r/   úIterator[str | int]c                ó*   — t          | j        ¦  «        S ri   )r’   rÂ   rk   s    r.   r“   zDictSpec.__iter__“  s   € Ý�D”MÑ"Ô"Ð"r/   r^   c                ó*   — t          | j        ¦  «        S ri   ©rŽ   rÂ   rk   s    r.   r�   zDictSpec.__len__–  ó   € Ý�4”=Ñ!Ô!Ð!r/   r   c                ó4   — | j                              ¦   «         S ri   ©rÂ   r°   rk   s    r.   r°   zDictSpec.items™  s   € ØŒ}×"Ò"Ñ$Ô$Ð$r/   r1   c                óŠ  — dg}| j                              ¦   «         D ]’\  }}t          |¦  «        }d|v rX|                     t          › d|›d�¦  «         |                     ¦   «         D ]"}|                     t          dz  |z   ¦  «         Œ#Œp|                     t          › d|›d|› �¦  «         Œ“d                     |¦  «        S )Nz
dict_spec:r•   ú[ú]:r´   ú]: )rÂ   r°   rµ   rd   r–   r¶   re   )r,   r—   rÄ   r˜   r·   r¸   s         r.   rg   zDictSpec.__repr__œ  sâ   € Ø�ˆØœ×,Ò,Ñ.Ô.ð 	Að 	A‰IˆC�Ý˜T™
œ
ˆIØ�yÐ Ð Ø—’¥Ð3Ð3¨#Ð3Ð3Ð3Ñ4Ô4Ð4Ø%×0Ò0Ñ2Ô2ð 5ð 5�DØ—L’L¥¨1¡¨tÑ!3Ñ4Ô4Ð4Ð4ð5ð —’¥Ð?Ð?¨#Ð?Ð?°IÐ?Ð?Ñ@Ô@Ð@Ð@Ø�yŠy˜ÑÔÐr/   rm   c                óN   — dd„ | j                              ¦   «         D ¦   «         dœS )Nr   c                ó|   — i | ]9\  }}t          |¦  «        t          |d ¦  «        r|                     ¦   «         n|“Œ:S r›   )r1   r�   ro   )rŸ   rÄ   r˜   s      r.   r»   z(DictSpec.to_jsonable.<locals>.<dictcomp>«  sU   € ð ð ð á�C˜õ �C‘”µ¸¸mÑ0LÔ0LÐV˜$×*Ò*Ñ,Ô,Ð,ÐRVðð ð r/   ©r6   r¿   rÍ   rk   s    r.   ro   zDictSpec.to_jsonable¨  s>   € àðð à!%¤×!4Ò!4Ñ!6Ô!6ðñ ô ð
ð 
ð 	
r/   ri   )r¿   rÀ   r   r%   )rÄ   r(   r   r¨   )r   rÇ   rq   r¼   rp   rr   r½   r¡   r/   r.   r   r   t  s¶   € € € € € ðð ð  CGð
ð 
ð 
ð 
ð 
ð$ð $ð $ð $ð#ð #ð #ð #ð"ð "ð "ð "ð%ð %ð %ð %ð
 ð 
 ð 
 ð 
 ð
ð 
ð 
ð 
ð 
ð 
r/   r   c                  ó2   — e Zd ZdZdd„Zdd„Zdd
„Zdd„ZdS )r   aÅ  Spec for a Python ``list``- or ``tuple``-typed value.

    Per-position. The spec list may be shorter than the runtime sequence;
    any positions beyond ``len(self)`` are treated as fully static (i.e.
    equivalent to an unspecified slot).

    Constructor::

        SeqSpec([IntermediateSpec, ...])

    Example::

        SeqSpec([TensorSpec([ShapeVar("h"), 10]), 1])
        SeqSpec((TensorSpec([ShapeVar("a")]), TensorSpec([ShapeVar("b")])))
    r¿   úSequence[IntermediateSpec]r   r%   c                ó.   — t          |¦  «        | _        d S ri   )r…   rÂ   )r,   r¿   s     r.   r+   zSeqSpec.__init__Ã  s   € Ý04°W±´ˆŒˆˆr/   r^   c                ó*   — t          | j        ¦  «        S ri   rÊ   rk   s    r.   r�   zSeqSpec.__len__Æ  rË   r/   r1   c                ó€  — dg}t          | j        ¦  «        D ]’\  }}t          |¦  «        }d|v rX|                     t          › d|› d�¦  «         |                     ¦   «         D ]"}|                     t          dz  |z   ¦  «         Œ#Œp|                     t          › d|› d|› �¦  «         Œ“d                     |¦  «        S )Nz	seq_spec:r•   rÏ   rÐ   r´   rÑ   )r„   rÂ   rµ   rd   r–   r¶   re   )r,   r—   r‡   r˜   r·   r¸   s         r.   rg   zSeqSpec.__repr__É  sÜ   € Ø�ˆÝ  ¤Ñ/Ô/ð 	=ð 	=‰GˆAˆtÝ˜T™
œ
ˆIØ�yÐ Ð Ø—’¥Ð/Ð/¨!Ð/Ð/Ð/Ñ0Ô0Ð0Ø%×0Ò0Ñ2Ô2ð 5ð 5�DØ—L’L¥¨1¡¨tÑ!3Ñ4Ô4Ð4Ð4ð5ð —’¥Ð;Ð;¨!Ð;Ð;°	Ð;Ð;Ñ<Ô<Ð<Ð<Ø�yŠy˜ÑÔÐr/   rm   c                ó*   — dd„ | j         D ¦   «         dœS )Nr   c                óZ   — g | ](}t          |d ¦  «        r|                     ¦   «         n|‘Œ)S r›   rœ   rž   s     r.   r    z'SeqSpec.to_jsonable.<locals>.<listcomp>Ø  sH   € ð ð ð àõ '.¨d°MÑ&BÔ&BÐL�× Ò Ñ"Ô"Ð"Èðð ð r/   rÔ   rÆ   rk   s    r.   ro   zSeqSpec.to_jsonableÕ  s2   € àðð à œMðñ ô ð
ð 
ð 	
r/   N)r¿   rÖ   r   r%   rq   rp   rr   )r8   r9   r:   r;   r+   r�   rg   ro   r¡   r/   r.   r   r   ²  sn   € € € € € ðð ð >ð >ð >ð >ð"ð "ð "ð "ð
 ð 
 ð 
 ð 
 ð
ð 
ð 
ð 
ð 
ð 
r/   r   r   r   r   r   ÚParamsSpecValuec                  ó6   — e Zd ZdZdZdZ	 ddd	„Zdd„Zdd„ZdS )r   a"  Specification for the arguments of a compiled function.

    Describes the dynamic shape behavior for named arguments, ``*args``,
    and ``**kwargs`` of a ``torch.compile``-wrapped function. Takes a
    single dict keyed by parameter name, with two reserved sentinel keys
    for the variadic slots::

        def func(x, n, *args, **kwargs): ...


        ParamsSpec(
            {
                "x": TensorSpec([ShapeVar("batch"), None]),
                "n": IntVar("seq"),
                "*args": [TensorSpec([ShapeVar("a")]), None],
                "**kwargs": {
                    "foo": TensorSpec([ShapeVar("b"), None]),
                    "bar": TensorSpec([ShapeVar("c"), None]),
                },
            }
        )

    Anything not expressed in ``ParamsSpec`` is STATIC.**
    z*argsz**kwargsNÚparamsú!dict[str, ParamsSpecValue] | Noner   r%   c           
     óˆ  — i | _         d | _        d | _        |€d S |                     ¦   «         D �]’\  }}|| j        k    rƒt          |t          ¦  «        s,t          d| j        ›dt          |¦  «        j	        › �¦  «        ‚t          |¦  «        D ]\  }}t          |d|› d|› d�¬¦  «         Œt          |¦  «        | _        Œ”|| j        k    r‰t          |t          ¦  «        s,t          d| j        ›dt          |¦  «        j	        › �¦  «        ‚|                     ¦   «         D ]\  }}t          |d|› d|›d�¬¦  «         Œt          |¦  «        | _        �Œ(|                     d¦  «        r#t          d	|›d
| j        ›d| j        ›d�¦  «        ‚t          |d|›d�¬¦  «         t          t           |¦  «        | j         |<   �Œ”d S )NzParamsSpec z) value must be a list of leaf specs, got zParamsSpec 'z'[ú]rƒ   z) value must be a dict of leaf specs, got Ú*zUnknown sentinel key z in ParamsSpec; only z and z are reservedzParamsSpec[)Ú_named_argsÚ_varargsÚ_varkwr°   Ú_VARARGS_KEYry   r…   r~   r6   r8   r„   r{   Ú
_VARKW_KEYr¦   r4   r   r   )r,   rÞ   rÄ   Úvaluer‡   ru   rÃ   s          r.   r+   zParamsSpec.__init__  s]  € ð 9;ˆÔØ7;ˆŒØ:>ˆŒØˆ>ØˆFØ Ÿ,š,™.œ.ð 	Fñ 	F‰JˆC�Ø�dÔ'Ò'Ð'Ý! %­Ñ.Ô.ð Ý$ðE dÔ&7ð Eð EÝ.2°5©k¬kÔ.BðEð Eñô ð õ & eÑ,Ô,ð Lð L‘D�A�qÝ& qÐ0J¸sÐ0JÐ0JÀaÐ0JÐ0JÐ0JÐKÑKÔKÐKÐKÝ $ U¡¤�”�Ø˜œÒ'Ð'Ý! %­Ñ.Ô.ð Ý$ðE d¤oð Eð EÝ.2°5©k¬kÔ.BðEð Eñô ð ð "ŸKšK™MœMð Nð N‘D�A�qÝ& qÐ0L¸sÐ0LÐ0LÀaÐ0LÐ0LÐ0LÐMÑMÔMÐMÐMÝ" 5™kœk�”‘Ø—’ Ñ$Ô$ð FÝ ðR¨Cð Rð RØÔ(ðRð RØ15´ðRð Rð Rñô ð õ
 # 5Ð0F¸cÐ0FÐ0FÐ0FÐGÑGÔGÐGÝ(,Õ-=¸uÑ(EÔ(E�Ô  Ñ%Ñ%ð5	Fð 	Fr/   r1   c                ó.  ‡‡— t           fdd„Šdˆfd	„Šˆfd
„| j                             ¦   «         D ¦   «         }| j        �[d                     ˆfd„t          | j        ¦  «        D ¦   «         ¦  «        }|                     | j        › d ‰|¦  «        › �¦  «         | j        �`d                     ˆfd„| j                             ¦   «         D ¦   «         ¦  «        }|                     | j	        › d ‰|¦  «        › �¦  «         d                     |¦  «        S )NÚtextr1   Úprefixr   c                ój   ‡— d                      ˆfd„|                      ¦   «         D ¦   «         ¦  «        S )Nr•   c              3  ó"   •K  — | ]	}‰|z   V — Œ
d S ri   r¡   )rŸ   r¸   rë   s     €r.   ú	<genexpr>z=ParamsSpec.__repr__.<locals>._indent_lines.<locals>.<genexpr>>  s'   øè è € ÐIÐI¨t˜V d™]ÐIÐIÐIÐIÐIÐIr/   )re   r¶   )rê   rë   s    `r.   Ú_indent_linesz*ParamsSpec.__repr__.<locals>._indent_lines=  s4   ø€ Ø—9’9ÐIÐIÐIÐI°t·²Ñ7HÔ7HÐIÑIÔIÑIÔIÐIr/   rÄ   rè   r   c                óX   •— t          |¦  «        }d|v r| › d ‰|¦  «        › �S | › d|› �S )Nr•   ú:
rx   ©rµ   )rÄ   rè   Úv_reprrï   s      €r.   Ú_entry_reprz(ParamsSpec.__repr__.<locals>._entry_repr@  sI   ø€ Ý˜%‘[”[ˆFØ�vˆ~ˆ~ØÐ9Ð9 - -°Ñ"7Ô"7Ð9Ð9Ð9ØÐ%Ð%˜VÐ%Ð%Ð%r/   c                ó.   •— g | ]\  }} ‰||¦  «        ‘ŒS r¡   r¡   ©rŸ   rÃ   ru   rô   s      €r.   r    z'ParamsSpec.__repr__.<locals>.<listcomp>F  s)   ø€ ÐHÐHÐH¡t q¨!��˜Q Ñ"Ô"ÐHÐHÐHr/   r•   c              3  óP   •K  — | ] \  }} ‰t          |¦  «        |¦  «        V — Œ!d S ri   )r1   )rŸ   r‡   ru   rô   s      €r.   rî   z&ParamsSpec.__repr__.<locals>.<genexpr>H  sJ   øè è € ð ð Ù+/¨1¨a���C ™FœF AÑ&Ô&ðð ð ð ð ð r/   rñ   c              3  ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S ri   r¡   rö   s      €r.   rî   z&ParamsSpec.__repr__.<locals>.<genexpr>M  s3   øè è € ÐPÐP±D°A°q˜k˜k¨!¨QÑ/Ô/ÐPÐPÐPÐPÐPÐPr/   )rê   r1   rë   r1   r   r1   )rÄ   r1   rè   r   r   r1   )
r–   rã   r°   rä   re   r„   rd   ræ   rå   rç   )r,   r—   Úinnerrô   rï   s      @@r.   rg   zParamsSpec.__repr__<  sb  øø€ Ý3:ð 	Jð 	Jð 	Jð 	Jð 	Jð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð IÐHÐHÐH¨tÔ/?×/EÒ/EÑ/GÔ/GÐHÑHÔHˆØŒ=Ð$Ø—I’Ið ð ð ð Ý3<¸T¼]Ñ3KÔ3Kðñ ô ñ ô ˆEð �LŠL˜DÔ-ÐHÐH°-°-ÀÑ2FÔ2FÐHÐHÑIÔIÐIØŒ;Ð"Ø—I’IÐPÐPÐPÐP¸D¼K×<MÒ<MÑ<OÔ<OÐPÑPÔPÑPÔPˆEØ�LŠL˜DœOÐFÐF°°¸eÑ0DÔ0DÐFÐFÑGÔGÐGØ�yŠy˜ÑÔÐr/   rm   c                óö   — d„ | j                              ¦   «         D ¦   «         }| j        �d„ | j        D ¦   «         || j        <   | j        �+d„ | j                             ¦   «         D ¦   «         || j        <   d|dœS )Nc                ób   — i | ],\  }}|t          |d ¦  «        r|                     ¦   «         n|“Œ-S r›   rœ   ©rŸ   r0   rè   s      r.   r»   z*ParamsSpec.to_jsonable.<locals>.<dictcomp>R  sN   € ð "
ð "
ð "
á��eð ­°¸Ñ)FÔ)FÐQ�%×#Ò#Ñ%Ô%Ð%ÈEð"
ð "
ð "
r/   c                óZ   — g | ](}t          |d ¦  «        r|                     ¦   «         n|‘Œ)S r›   rœ   )rŸ   ru   s     r.   r    z*ParamsSpec.to_jsonable.<locals>.<listcomp>W  sC   € ð )ð )ð )àõ $+¨1¨mÑ#<Ô#<ÐC�—’‘”�À!ð)ð )ð )r/   c                ób   — i | ],\  }}|t          |d ¦  «        r|                     ¦   «         n|“Œ-S r›   rœ   rü   s      r.   r»   z*ParamsSpec.to_jsonable.<locals>.<dictcomp>\  sO   € ð 'ð 'ð 'á�D˜%ð ­W°U¸MÑ-JÔ-JÐU�e×'Ò'Ñ)Ô)Ð)ÐPUð'ð 'ð 'r/   r   )r6   rÞ   )rã   r°   rä   ræ   rå   rç   )r,   rÞ   s     r.   ro   zParamsSpec.to_jsonableQ  sµ   € ð"
ð "
à#Ô/×5Ò5Ñ7Ô7ð"
ñ "
ô "
ˆð Œ=Ð$ð)ð )àœð)ñ )ô )ˆF�4Ô$Ñ%ð Œ;Ð"ð'ð 'à#'¤;×#4Ò#4Ñ#6Ô#6ð'ñ 'ô 'ˆF�4”?Ñ#ð
 !Øð
ð 
ð 	
r/   ri   )rÞ   rß   r   r%   rp   rr   )	r8   r9   r:   r;   ræ   rç   r+   rg   ro   r¡   r/   r.   r   r   ú  sv   € € € € € ðð ð2 €LØ€Jð 59ð#Fð #Fð #Fð #Fð #FðJ ð  ð  ð  ð*
ð 
ð 
ð 
ð 
ð 
r/   r   c                  óN   — e Zd ZdZ	 ddddœdd„Zedd„¦   «         Zdd„Zdd„ZdS )r   uG  Top-level shape specification for a ``torch.compile`` call.

    ``params`` describes the arguments of the compiled callable â€” for a raw
    function this is the function's parameters, for an ``nn.Module`` this
    is the parameters of ``forward`` (excluding ``self``).

    ``assumptions`` is an optional list of ``SymBool`` expressions built
    from spec ``IntVar`` / ``ShapeVar`` values. Each assumption is wired
    into the shape env at compile time and asserted at runtime via the
    deferred-runtime-assert mechanism::

        A = ShapeVar("a")
        B = ShapeVar("b")
        ShapesSpec(
            params={"x": TensorSpec([A, None]), "y": TensorSpec([B, None])},
            assumptions=[A + B > 10, A * 2 == B],
        )

    ``globals`` is reserved for future use and will raise
    ``NotImplementedError`` if set.
    N)ÚglobalsÚassumptionsrÞ   ú.ParamsSpec | dict[str, ParamsSpecValue] | Noner   r   r  úSequence[SymBool] | Noner   r%   c          	     ó   — d | _         g | _        |�t          d¦  «        ‚t          |t          ¦  «        rt          |¦  «        }n;|�9t          |t
          ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|| _         |�ƒt          |¦  «        D ]u\  }}t          |t          ¦  «        s*t          d|› dt          |¦  «        j        › d|›�¦  «        ‚t          |d|› d�¬¦  «         | j                             |¦  «         Œtd S d S )Nz'ShapesSpec.globals is not supported yetz3shapes_spec must be ParamsSpec, dict, or None, got zShapesSpec.assumptions[z]: expected SymBool, got rx   rá   rƒ   )Ú_paramsÚ_assumptionsÚNotImplementedErrorry   r¦   r   r7   r6   r8   r„   r   r{   rd   )r,   rÞ   r   r  r‡   Úas         r.   r+   zShapesSpec.__init__}  s\  € ð +/ˆŒØ+-ˆÔàÐÝ%Ð&OÑPÔPÐPõ �f�dÑ#Ô#ð 	Ý Ñ'Ô'ˆFˆFØÐ­
°6½:Ñ(FÔ(FÐÝð/Ý˜F‘|”|Ô,ð/ð /ñô ð ð ˆŒàÐ"Ý! +Ñ.Ô.ð ,ð ,‘��1Ý! !¥WÑ-Ô-ð Ý#ð9°!ð 9ð 9Ý# A™wœwÔ/ð9ð 9Ø34ð9ð 9ñô ð õ # 1Ð,JÀaÐ,JÐ,JÐ,JÐKÑKÔKÐKØÔ!×(Ò(¨Ñ+Ô+Ð+Ð+ð #Ð"ð,ð ,r/   úlist[SymBool]c                ó*   — t          | j        ¦  «        S ri   )r…   r  rk   s    r.   r  zShapesSpec.assumptions¡  s   € å�DÔ%Ñ&Ô&Ð&r/   r1   c                óÆ  — dg}| j         �h|                     t          › d�¦  «         t          | j         ¦  «        }|                     ¦   «         D ]"}|                     t          dz  |z   ¦  «         Œ#| j        rT|                     t          › d�¦  «         | j        D ]/}|                     t          dz  t          |¦  «        z   ¦  «         Œ0d                     |¦  «        S )Nzshapes_spec:zparams:r´   zassumptions:r•   )r  rd   r–   rµ   r¶   r  re   )r,   r—   Ú
param_reprr¸   r  s        r.   rg   zShapesSpec.__repr__¥  sã   € ØÐ ˆØŒ<Ð#Ø�LŠL�GÐ,Ð,Ð,Ñ-Ô-Ð-Ý˜dœlÑ+Ô+ˆJØ"×-Ò-Ñ/Ô/ð 1ð 1�Ø—’�W q™[¨4Ñ/Ñ0Ô0Ð0Ð0ØÔð 	4Ø�LŠL�GÐ1Ð1Ð1Ñ2Ô2Ð2ØÔ&ð 4ð 4�Ø—’�W q™[­4°©7¬7Ñ2Ñ3Ô3Ð3Ð3Ø�yŠy˜ÑÔÐr/   rm   c                ól   — d| j         €d n| j                              ¦   «         d„ | j        D ¦   «         dœS )Nr   c                ó,   — g | ]}t          |¦  «        ‘ŒS r¡   rò   )rŸ   r  s     r.   r    z*ShapesSpec.to_jsonable.<locals>.<listcomp>¶  s   € Ð?Ð?Ð?¨�D ™GœGÐ?Ð?Ð?r/   )r6   rÞ   r  )r  ro   r  rk   s    r.   ro   zShapesSpec.to_jsonable²  sD   € à Ø"œlÐ2�d�d¸¼×8PÒ8PÑ8RÔ8RØ?Ð?¨TÔ->Ð?Ñ?Ô?ð
ð 
ð 	
r/   ri   )rÞ   r  r   r   r  r  r   r%   )r   r	  rp   rr   )	r8   r9   r:   r;   r+   Úpropertyr  rg   ro   r¡   r/   r.   r   r   f  s™   € € € € € ðð ð0 BFð",ð Ø04ð",ð ",ð ",ð ",ð ",ð ",ðH ð'ð 'ð 'ñ „Xð'ð ð  ð  ð  ð
ð 
ð 
ð 
ð 
ð 
r/   r   )r   r   )ru   r   rv   r1   r   r%   ),r;   Ú
__future__r   rs   Ú	threadingÚtypingr   r   r   r   r[   Útorchr   r	   Úcollections.abcr
   r   rB   r   Ú__all__r–   r   r   r=   ÚLockrA   rC   r   r{   r   r   r   r   r   r^   r   r   r   r…   r¦   r1   rÜ   r   r   r¡   r/   r.   ú<module>r     s/  ððð ð ð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à €€€à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ð ð ?Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2à>Ð>Ð>Ð>Ð>Ð>ðð ð €ð" €ð 
€ð $(€Ð 'Ð 'Ð 'Ñ 'ð
 &�y”~Ñ'Ô'Ð ð>ð >ð >ð >ðBZ
ð Z
ð Z
ð Z
ð Z
ˆVñ Z
ô Z
ð Z
ðz
ð 
ð 
ð 
ð"Vð Vð Vð Vð Vˆvñ Vô Vð Vð8.
ð .
ð .
ð .
ð .
ñ .
ô .
ð .
ðb2
ð 2
ð 2
ð 2
ð 2
ñ 2
ô 2
ð 2
ðj;
ð ;
ð ;
ð ;
ð ;
ñ ;
ô ;
ð ;
ð|*
ð *
ð *
ð *
ð *
ñ *
ô *
ð *
ðp   &™¨3Ñ.°Ñ5€Ð 5Ð 5Ð 5Ñ 5à! JÑ.€Ð .Ð .Ð .Ñ .ð '¨Ñ3°hÑ>ÀÑHÐ Ð HÐ HÐ HÑ Hð �tÐ,Ô-Ñ-°°SÐ:JÐ5JÔ0KÑKð ð ð ð ñ ð
i
ð i
ð i
ð i
ð i
ñ i
ô i
ð i
ðXQ
ð Q
ð Q
ð Q
ð Q
ñ Q
ô Q
ð Q
ð Q
ð Q
r/   