
    ;;i                        U d dl mZ d dlZd dlZd dlmZ  e       Zded<    e       Z	ded<   dZ
ej                  dkD  rej                  Zd	ed
<   dZnej                  ZdZ G d d      Zy)    )annotationsN)Anyobject	NOT_FOUNDNULL2   l        z+type[ctypes.c_int32] | type[ctypes.c_int64]	WORD_TYPE      c                      e Zd Ze	 	 	 	 	 	 dd       Ze	 d	 	 	 	 	 	 	 	 	 d	d       Ze	 	 d
	 	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 d
	 	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 dd       Z	y)DeduperReloaderPatchingMixinc                   t        | |t              }|t        u ryt        j                  j	                  t        j
                  |             j                  }t        j                  j	                  t        j
                  |            j                  }||yd}t        dt              D ]U  }t        j                  |t        |z  z   t        j                  t                    j                  j                  |k(  sR|} |S  |S )N   )getattrr   ctypesc_void_pfrom_buffer	py_objectvaluerange_MAX_FIELD_SEARCH_OFFSETcastWORD_N_BYTESPOINTERr	   contents)objfieldfield_valueobj_addr
field_addrretoffsets          t/home/rose/Desktop/poly/venv/lib/python3.12/site-packages/IPython/extensions/deduperreload/deduperreload_patching.pyinfer_field_offsetz/DeduperReloaderPatchingMixin.infer_field_offset   s    
 c5)4)#??..v/?/?/DEKK__001A1A+1NOUU
z1A78F|f44fnnY6O(55
 
 9 
    Nc                   t        ||t              }|t        u ry || j                  ||      }|dk(  ry t        j                  j                  t        j                  |            j                  }|t        u rd}n<t        j                  j                  t        j                  |            j                  }||y |2t        j                  j                  t        j                  |             |d t        fvr2t        j                  j                  t        j                  |             |t        j                  |t        |z  z   t        j                  t                    j                   _        y )Nr   r   )r   r   r%   r   r   r   r   r   r   	pythonapi	Py_DecRef	Py_IncRefr   r   r   r	   r   )clsr   r   	new_valuer#   
prev_valuer    new_value_addrs           r$   try_write_readonly_attrz4DeduperReloaderPatchingMixin.try_write_readonly_attr+   s,    S%3
">++C7FR<??..v/?/?/DEKK)*N#__88  +e  ~5!&&v'7'7
'CDT4L(&&v'7'7	'BC * 	|f,,fnnY.G	

(5r&   c                   t        ||t              }|r|nt        ||t              }|t        u s|t        u ry ||u ry ||dk  r| j                  ||      }n|dk  r|rJ |J | j                  ||      }| j                  ||||       y )Nr   )r#   )r   r   r%   r/   )r+   oldnewr   new_is_valuer#   	old_valuer,   s           r$   try_patch_readonly_attrz4DeduperReloaderPatchingMixin.try_patch_readonly_attrK   s     C	2	'CWS%-K		!Y)%;)#"vz++C7FaZ###(((++C7F##C	&#Ir&   c                    	 t        |||r|       y t        ||             y # t        t        t        f$ r | j                  |||||       Y y w xY wN)setattrr   AttributeError	TypeError
ValueErrorr5   )r+   r1   r2   r   r3   r#   s         r$   try_patch_attrz+DeduperReloaderPatchingMixin.try_patch_attrb   sP    	OC|Me9LM	:6 	O''S%vN	Os   # # )AAc                   g }t        |j                  j                  xs g |j                  xs g       D ]  \  }}t	        |j
                        rZ||j                  j                  v rB|j                  |j                  |j                  j                  j                  |                u|j                  |        | j                  ||d       d}|j                  |j                  | j                  |d      }|j                  |j                  '| j                  |t        |      xs t        dd|       dD ]  }| j                  |||        |r| j                  ||d       y y )N__code__r   __closure__T)r3   r#   )__defaults____kwdefaults____doc____dict____self__)zipr>   co_freevarsr?   callablecell_contentsappendindexr<   r%   r5   tupler   )	r+   to_patch_toto_patch_from	is_methodnew_closurefreevarclosure_valr#   attrs	            r$   patch_functionz+DeduperReloaderPatchingMixin.patch_functionp   sh    $'""..4"m6O6O6USU%
 G[ 223{33???""++#,,88>>wG "";/%
 	;zB""*}/H/H/T++M=IF"".-2K2K2W''k"*d! (  ND{M4@ N'']JO r&   )r   r   r   strreturnintr7   )
r   r   r   rT   r,   r   r#   z
int | NonerU   None)Fr   )r1   r   r2   r   r   rT   r3   boolr#   rV   rU   rW   )rL   r   rM   r   rN   rX   rU   rW   )
__name__
__module____qualname__staticmethodr%   classmethodr/   r5   r<   rS    r&   r$   r   r      sm    
 .  "** * 	*
 * 
* *>  #JJ J 	J
 J J 
J J,  #OO O 	O
 O O 
O O "P"P.1"P>B"P	"P "Pr&   r   )
__future__r   r   systypingr   r   r   __annotations__r   r   maxsizec_int64r	   r   c_int32r   r^   r&   r$   <module>rf      sk    "  
 H	6 xf  ;;=C^^I:KLILAP APr&   