
    9j                       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 e       ZefdZ eej0                  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     `/media/conek/DATA/Code/OCR/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                     || _         || _        y r$   )fnsentinel)selfr,   r-   s      r   __init__z_CallableIterator.__init__C   s     r   c                    | S r$   r   )r.   s    r   __iter__z_CallableIterator.__iter__G   s    r   c                P    | j                         }|| j                  k(  rt        |S r$   )r,   r-   StopIteration)r.   rs     r   __next__z_CallableIterator.__next__J   s*     GGI  r   N)r    
__module____qualname__r/   r1   r5   r   r   r   r*   r*   B   s    !
r   r*   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 )Nr1   r5   '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_protocoli   sE     &22155Q  & s   /  /	,/,/z iter(v, w): v must be a callable)_sentinel_missinghasattrr1   r   r   r   r   r*   )fn_or_iterabler-   r   iteratorr>   r,   s         r   iter_rC   [   s     $$!8Z(((*Hx,!DN#33K LMM8]+ %X..!DN++CDEE "h'>?? X..r   c                    |S r$   r   )typvals     r   r   r      s    Jr   )r   zIterable[object]returnbool)r   )r   Iterable[_T]r!   r   rG   zIterable[tuple[int, _T]])r!   r   r   rI   rG   r   )rE   r   rF   r   rG   r   )__doc__
__future__r   builtinsr%   r'   typingcollections.abcr   r   r   
decoratorsr   r	   __all__r   r
   r   r   r   r*   objectr?   rC   r   r   r   r   <module>rR      s    #     $ ) , ( T] X\\TB C X\\TB C X''$? @ X\\TB; C; * H  $5 !/H V[[DA Br   