
    9j                     N   U d dl Z d dlmZ d dlmZ d dlmZ eZi ae	e
eegdf   f   ed<   i ae	e
e j                  e   f   ed<   g aee   ed<   defd	Zd
edefdZd Zde
deddfdZde
defdZdeddfdZddZdedee
egdf   de
fdZdedede
fdZd dlmZ  ee       y)    N)Callable)Any)Sourceindex_to_bytecode_constructor index_to_external_object_weakref
keep_alivereturnc                       t        t              S N)boolr        c/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_dynamo/graph_bytecode_inputs.pyhas_user_objectsr      s    -..r   objc                 0    t         j                  |        | S r   )r   append)r   s    r   stash_graph_created_objectr      s    cJr   indexvaluec                 f    t         j                  |       t        j                  |      t        | <   y)z;Update an entry in the external object registry at runtime.N)r   r   weakrefrefr   )r   r   s     r   set_external_object_by_indexr   $   s$    e.5kk%.@$U+r   c                 f    | t         v sJ d       t        |           }|J d       t        |           S )Nz4Index not registered in index_to_user_object_weakrefzUser object is no longer alive)r   )r   r   s     r   get_external_object_by_indexr   *   sH    44 >4 +5
1
3C?<<<?+E244r   argsc            
          t         j                          t         j                  t        |       D ci c]  \  }}|t	        j
                  |       c}}       y c c}}w r   )r   clearupdate	enumerater   r   )r   iargs      r   store_user_object_weakrefsr$   3   sC    $**,$+++4T?;CGKK	;;s    A
c                  |    t         j                          t        j                          t        j                          y r   )r   r   r   r   r   r   r   reset_user_object_trackingr&   ;   s&    !'')$**,r   example_valueconstruct_fnc                     t         j                  |        t        t              fdt        <   	 t	        j
                  |       t        <   S # t        $ r!}ddlm	}  |dd|  dg |       Y d }~S d }~ww xY w)Nc                      |       S r   r   )cgr(   r   s    r   <lambda>z/register_graph_created_object.<locals>.<lambda>H   s    l5"6M r      unimplementedz7Failed to make weakref to graph-created external objectuser_object: 0Object does not allow us to make a weakref to itgb_typecontextexplanationhintsfrom_exc)
r   r   lenr   r   r   r   	TypeErrorexcr/   )r'   r(   er/   r   s    `  @r   register_graph_created_objectr<   A   s    
 m$-.E+M!%(
29++m2L(/ L  	
&M#M?3J	
 	
 L	
s   A 	A=A88A=sourcec                     t        t              }fdt        |<   	 t        j                  |       t        |<   |S # t
        $ r!}ddlm}  |dd|  dg |       Y d }~|S d }~ww xY w)Nc                      |       S r   r   )r+   r=   s    r   r,   z&register_user_object.<locals>.<lambda>\   s    bj r   r-   r.   z%Failed to make weakref to User Objectr0   r1   r2   )r8   r   r   r   r   r9   r:   r/   )r   r=   r   r;   r/   s    `   r   register_user_objectr@   Y   sx    -.E+@!%(
29++e2D(/ L  	
&;#E7+J	
 	
 L	
s   < 	A&A!!A&)"set_leaf_function_module_retriever)r	   N)r   collections.abcr   typingr   torch._dynamo.sourcer   	PyCodegenr   dictint__annotations__r   ReferenceTyper   listr   r   r   CURRENT_STREAM_INDEXr   r   r$   r&   r<   r@   ,torch._higher_order_ops.invoke_leaf_functionrA   r   r   r   <module>rM      s1    $  ' 	 IK tC9+t2C)D$DE JJL  $sG,A,A#,F'F"G L
DI /$ /C C 
  A AC AD A5 5 5c d &.Y/?/E&F0 V  ,
 ##? @r   