
    ^j                       d Z ddlmZ ddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
 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d dZ G d d      Zd dZd Z eej4                  d      d!d       Zy)"z
Python polyfills for builtins
    )annotationsN)Callable)TYPE_CHECKINGTypeVar   )substitute_in_graph)Iterable)allanycast	enumeratesum_TT)can_constant_fold_throughc                   | D ]  }|r y y)NFT iterableelems     k/var/www/ramen.bs-engineer-server.com/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   1   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                .    || _         || _        d| _        y )NF)fnsentinel	exhausted)selfr,   r-   s      r   __init__z_CallableIterator.__init__E   s     r   c                    | S r$   r   r/   s    r   __iter__z_CallableIterator.__iter__J       r   c                    | j                   rt        | j                         }|| j                  k(  rd| _         t        |S )NT)r.   StopIterationr,   r-   )r/   rs     r   __next__z_CallableIterator.__next__M   s>    >> GGI !DN r   Nr    
__module____qualname__r0   r3   r8   r   r   r   r*   r*   D   s    
r   r*   c                  $    e Zd ZddZddZddZy)_SequenceIteratorc                .    || _         d| _        d| _        y )Nr   F)r   indexr.   )r/   r   s     r   r0   z_SequenceIterator.__init___   s     
r   c                    | S r$   r   r2   s    r   r3   z_SequenceIterator.__iter__d   r4   r   c                    | j                   rt        	 | j                  j                  | j                        }| xj                  dz  c_        |S # t
        t        f$ r d| _         t        d w xY w)Nr   T)r.   r6   r   __getitem__r?   
IndexErrorr/   results     r   r8   z_SequenceIterator.__next__g   sa    >>	*]]..tzz:FJJ!OJMM* 	*!DNT)	*s   ;A A.NreturnNone)rG   r=   rG   objectr9   r   r   r   r=   r=   ^   s    

*r   r=   c                `    t        | d      rt        |       S t        dt        |        d      )NrB   'z' object is not iterable)hasattrr=   r   r   )r   s    r   sequence_iteratorrN   t   s1    x' **
aX''?@
AAr   c                  $    e Zd ZddZddZddZy)_ReversedSequenceIteratorc                8    || _         t        |      dz
  | _        y )Nr   )seqlenr?   )r/   rR   s     r   r0   z"_ReversedSequenceIterator.__init__}   s    X\
r   c                    | S r$   r   r2   s    r   r3   z"_ReversedSequenceIterator.__iter__   r4   r   c                    | j                   dk  rt        	 | j                  | j                      }| xj                   dz  c_         |S # t        t        f$ r d| _         t        d w xY w)Nr   r   )r?   r6   rR   rC   rD   s     r   r8   z"_ReversedSequenceIterator.__next__   sc    ::>	*XXdjj)F 	

a
	 M* 	*DJT)	*s   A A%NrF   )rG   rP   rI   r9   r   r   r   rP   rP   z   s    "	r   rP   c                    t        |       S r$   )rP   )rR   s    r   reversed_sequence_iteratorrX      s    $S))r   c               P    t        | t              st        d      t        | |      S )Nz iter(v, w): v must be a callable)r   r   r   r*   )r,   r-   s     r   callable_iteratorrZ      s'     b(#:;;R**r   c                    |S r$   r   )typvals     r   r   r      s    Jr   )r   Iterable[object]rG   bool)r   )r   Iterable[_T]r!   r   rG   zIterable[tuple[int, _T]])r!   r   r   r`   rG   r   )rG   r^   )r\   r   r]   r   rG   r   )__doc__
__future__r   builtinsr%   r'   typingcollections.abcr   r   r   
decoratorsr   r	   __all__r   r
   r   r   r   r*   r=   rN   rP   rX   rZ   r   r   r   r   <module>rh      s   #     $ ) , ( T] X\\TB C X\\TB C X''$? @ X\\TB; C; 4* *,B ,*+ V[[DA Br   