
    i/                       d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	 ddl
mZ erddlmZ g dZ e	d	      Z eej                   d
      dd       Z eej"                  d
      dd       Z eej$                  d
      ddd       Z eej&                  d
      ddd       Z G d d      Z G d d      ZefdZy)z
Python polyfills for builtins
    )annotationsN)CallableTYPE_CHECKINGTypeVar   )substitute_in_graph)Iterable)allany	enumeratesum_TT)can_constant_fold_throughc                   | D ]  }|r y y)NFT iterableelems     Z/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_dynamo/polyfills/builtins.pyr
   r
      s          c                   | D ]  }|s y y)NTFr   r   s     r   r   r   &   s      r   )is_embedded_typec              #     K   t        |t              s!t        t        |      j                  d      | D ]  }||f |dz  } y w)Nz+ object cannot be interpreted as an integer   )
isinstanceint	TypeErrortype__name__)r   startxs      r   r   r   .   sV     eS!E{##&&QR
 	
  Qh
s   AAc               L    t        j                  t        j                  | |      S N)	functoolsreduceoperatoradd)r   r    s     r   r   r   :   s    HLL(E::r   c                      e Zd Zd Zd Zd Zy)_CallableIteratorc                     || _         || _        y r#   )fnsentinel)selfr+   r,   s      r   __init__z_CallableIterator.__init__@   s     r   c                    | S r#   r   )r-   s    r   __iter__z_CallableIterator.__iter__D   s    r   c                P    | j                         }|| j                  k(  rt        |S r#   )r+   r,   StopIteration)r-   rs     r   __next__z_CallableIterator.__next__G   s*     GGI  r   N)r   
__module____qualname__r.   r0   r4   r   r   r   r)   r)   ?   s    !
r   r)   c                      e Zd Zy)_SENTINEL_MISSINGN)r   r5   r6   r   r   r   r8   r8   T   s    r   r8   c               J   |t         u rs| }t        |d      r6|j                         }t        |d      r|S t        dt	        |       d      t        |d      rd } ||      S t        dt	        |       d      | }t        |t              st        d      t        ||      S )Nr0   r4   'z' object is not iterable__getitem__c              3  b   K   d}	 	 | j                  |       |dz  }# t        $ r Y y w xY ww)Nr   r   )r;   
IndexError)r   is     r   sequence_protocolz iter_.<locals>.sequence_protocolg   sE     &22155Q  & s   /  /	,/,/z iter(v, w): v must be a callable)r8   hasattrr0   r   r   r   r   r)   )fn_or_iterabler,   r   iteratorr?   r+   s         r   iter_rC   Y   s     $$!8Z(((*Hx,!DN#33K LMM8]+ %X..!DN++CDEE "h'>?? X..r   )r   zIterable[object]returnbool)r   )r   Iterable[_T]r    r   rD   zIterable[tuple[int, _T]])r    r   r   rF   rD   r   )__doc__
__future__r   builtinsr$   r&   typingr   r   r   
decoratorsr   collections.abcr	   __all__r   r
   r   r   r   r)   r8   rC   r   r   r   <module>rN      s    #    3 3 , ( T] X\\TB C X\\TB C X''$? @ X\\TB; C; *	 	
 $5 !/r   