
     TiQ                    8   S r SSKJr  SSKrSSKJrJrJr  SSKJ	r	J
r
  SSKJrJr  SSKJr  \
" S5      r\" S	5      r\" S
5      r\" S5      r\S.       SS jjr          SS jr          SS jr            SS jrSS jrSS jrSS jrg)a  Wrappers for IR classes to enable journaling.

This module provides wrapper functions that enable journaling for ONNX IR classes.
The wrappers are applied when a Journal context is active, and they record operations
to the journal for debugging and analysis purposes.
    )annotationsN)AnyCallableTypeVar)Concatenate	ParamSpec)_core_graph_containers)_journaling_P_T_SelfT_ValueTdetails_funcc               R   ^ ^^ [         R                  " T5      SUU U4S jj5       nU$ )zGeneric wrapper factory for __init__ methods.

Args:
    journal: The journal to record to.
    original_init: The original __init__ method.
    details_func: A function that takes self and returns details string.
c                L   > T" U /UQ70 UD6  TR                  U ST" U 5      S9  g )Ninitdetailsrecord)selfargskwargsr   journaloriginal_inits      [/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx_ir/journaling/_wrappers.pywrapper_init_wrapper.<locals>.wrapper.   s,    d,T,V,tV\$-?@    )r   r   r   _P.argsr   	_P.kwargsreturnNone	functoolswraps)r   r   r   r   s   ``` r   _init_wrapperr)       s/     __]#A A $A Nr!   c                V   ^ ^^^ [         R                  " T5      SU UUU4S jj5       nU$ )a  Generic wrapper factory for property setters.

Args:
    journal: The journal to record to.
    original_setter: The original setter method.
    property_name: The private attribute name (e.g., "_name").
    operation: The operation name for the journal (e.g., "set_name").
c                ^   > [        U T5      nTR                  U TU< SU< 3S9  T" X5        g )N -> r   getattrr   )r   value	old_valuer   	operationoriginal_setterproperty_names      r   r    _setter_wrapper.<locals>.wrapperE   s4    D-0	tY9-tE90MN$r!   )r   r   r/   r   r$   r%   r&   )r   r2   r3   r1   r   s   ```` r   _setter_wrapperr5   6   s,     ___%% % &%
 Nr!   c               V   ^ ^^^ [         R                  " T5      SUU UU4S jj5       nU$ )a  Generic wrapper factory for methods.

Args:
    journal: The journal to record to.
    original_method: The original method.
    operation: The operation name for the journal.
    details_func: A function that takes (self, *args, **kwargs) and returns details.
c           	     R   > TR                  U TT" U /UQ70 UD6S9  T" U /UQ70 UD6$ Nr   r   )r   r   r   r   r   r1   original_methods      r   r    _method_wrapper.<locals>.wrapper^   s9    tYT0SD0SF0STt5d5f55r!   r   r   r   r"   r   r#   r$   r   r&   )r   r9   r1   r   r   s   ```` r   _method_wrapperr<   N   s,      ___%6 6 &6 Nr!   c               Z   ^ ^^^^ [         R                  " T5      SUU UUU4S jj5       nU$ )a  Generic wrapper factory for container methods that record on a parent object.

Args:
    journal: The journal to record to.
    original_method: The original method.
    operation: The operation name for the journal.
    target_attr: The attribute name to get the target object from self (e.g., "_graph").
    details_func: A function that takes (self, *args, **kwargs) and returns details.
c           	     j   > [        U T5      nTR                  UTT" U /UQ70 UD6S9  T" U /UQ70 UD6$ r8   r-   )	r   r   r   targetr   r   r1   r9   target_attrs	       r   r   *_container_method_wrapper.<locals>.wrapperx   sE    {+vy,t2Ud2Uf2UVt5d5f55r!   r;   r&   )r   r9   r1   r@   r   r   s   ````` r   _container_method_wrapperrB   f   s,    $ ___%6 6 &6
 Nr!   c                 
   0 S[         R                  R                  _S[         R                  R                  _S[         R                  R                  R
                  _S[         R                  R                  R
                  _S[         R                  R                  R
                  _S[         R                  R                  R
                  _S[         R                  R                  R
                  _S[         R                  R                  _S	[         R                  R                  _S
[         R                  R                  _S[         R                  R                  _S[         R                  R                  R
                  _S[         R                  R                  _S[         R                  R                  R
                  _S[         R                  R                   R
                  _S[         R                  R"                  R
                  _S[         R                  R$                  R
                  _0 S[         R                  R&                  _S[         R                  R(                  _S[         R*                  R                  _S[         R*                  R,                  _S[         R*                  R                  _S[         R*                  R.                  _S[         R*                  R0                  _S[         R*                  R2                  _S[         R*                  R4                  _S[         R*                  R6                  _S[         R8                  R                  _S[         R:                  R                  _S[         R:                  R                  R
                  _S[         R:                  R                  R
                  _S [         R:                  R                  R
                  _S![         R<                  R                  _S"[>        R@                  R                  _E[>        R@                  R.                  [>        R@                  RB                  [>        R@                  RD                  [>        R@                  R0                  [>        R@                  RF                  [>        R@                  RH                  [>        RJ                  RH                  [>        RJ                  RL                  [>        RN                  RH                  S#.	En U $ )$zObtain original methods for later restoration.

Returns:
    A dictionary mapping method names to their original implementations.
TensorBase.__init__Node.__init__Node.name.fsetNode.domain.fsetNode.version.fsetNode.op_type.fsetNode.overload.fsetNode.resize_inputsNode.prependNode.appendNode.resize_outputsNode.graph.fsetValue.__init__Value.name.fsetValue.type.fsetValue.shape.fsetValue.const_value.fsetValue.replace_all_uses_withValue.merge_shapesGraph.__init__Graph.register_initializerGraph.appendGraph.extendGraph.removeGraph.insert_afterGraph.insert_before
Graph.sortModel.__init__Function.__init__Function.name.fsetFunction.domain.fsetFunction.overload.fsetAttr.__init___GraphIO.append)	_GraphIO.extend_GraphIO.insert_GraphIO.pop_GraphIO.remove_GraphIO.clear_GraphIO.__setitem__GraphInitializers.__setitem__GraphInitializers.__delitem__Attributes.__setitem__)(r	   
TensorBase__init__Nodenamefsetdomainversionop_typeoverloadresize_inputsprependappendresize_outputsgraphValuetypeshapeconst_valuereplace_all_uses_withmerge_shapesGraphregister_initializerextendremoveinsert_afterinsert_beforesortModelFunctionAttrr
   _GraphIOinsertpopclear__setitem__GraphInitializers__delitem__
Attributesoriginal_methodss    r   get_original_methodsr      s   6u//886 	,,	6
 	%**//..6 	EJJ--226 	UZZ//446 	UZZ//446 	ejj11666 	ejj666 	

**6 	uzz((6 	uzz886 	5::++006  	%++..!6" 	5;;++00#6$ 	5;;++00%6& 	EKK--22'6( 	!%++"9"9">">)6* 	&u{{'H'H+6, 	ekk66-60 	%++..162 	%ekk&F&F364 	**566 	**768 	**96: 	ekk66;6< 	u{{88=6> 	ekk&&?6B 	%++..C6F 	U^^44G6H 	enn1166I6J 	 5 5 : :K6L 	!%.."9"9">">M6P 	,,Q6T 	,55<<U6V -55<<,55<<)2266,55<<+44:: 1 : : F F):)L)L)X)X):)L)L)X)X"3">">"J"Jk6p r!   c           
     Z   [        5       n[        XS   S S9[        R                  l        [        XS   5      [        R
                  l        [        [        R
                  R                  R                  [        XS   SS5      5      [        R
                  l        [        [        R
                  R                  R                  [        XS   S	S
5      5      [        R
                  l
        [        [        R
                  R                  R                  [        XS   SS5      5      [        R
                  l        [        [        R
                  R                  R                  [        XS   SS5      5      [        R
                  l        [        [        R
                  R                  R                  [        XS   SS5      5      [        R
                  l        [        U US   SS S9[        R
                  l        [        U US   SS S9[        R
                  l        [        U US   SS S9[        R
                  l        [        U US   SS S9[        R
                  l        [        [        R
                  R&                  R                  [        U US    S!S" S95      [        R
                  l        [        XS#   5      [        R(                  l        [        [        R(                  R                  R                  [        XS$   SS5      5      [        R(                  l        [        [        R(                  R*                  R                  [        XS%   S&S'5      5      [        R(                  l        [        [        R(                  R,                  R                  [        XS(   S)S*5      5      [        R(                  l        [        [        R(                  R.                  R                  [        U US+   S,S-5      5      [        R(                  l        [        U US.   S/SqS0 jS9[        R(                  l        [        U US1   S2S3 S9[        R(                  l        [        XS4   S5 S9[        R4                  l        [        U US6   S7S8 S9[        R4                  l        [        U US9   SS: S9[        R4                  l        [        U US;   S<S= S9[        R4                  l        [        U US>   S?SqS@ jS9[        R4                  l        [        U USA   SBSC S9[        R4                  l        [        U USD   SESF S9[        R4                  l        [        U USG   SHSI S9[        R4                  l         [        XSJ   5      [        RB                  l        [        XSK   5      [        RD                  l        [        [        RD                  R                  R                  [        XSL   SS5      5      [        RD                  l        [        [        RD                  R                  R                  [        XSM   S	S
5      5      [        RD                  l
        [        [        RD                  R                  R                  [        XSN   SS5      5      [        RD                  l        [        XSO   5      [        RF                  l        [I        U USP   SQSRSS ST9[J        RL                  l        [I        U USU   SVSRSW ST9[J        RL                  l        [I        U USX   SYSRSZ ST9[J        RL                  l'        [I        U US[   S\SRSrS] jST9[J        RL                  l(        [I        U US^   S_SRS` ST9[J        RL                  l        [I        U USa   SbSRSc ST9[J        RL                  l)        [I        U USd   SeSRSf ST9[J        RL                  l*        [I        U USg   ShSRSi ST9[J        RV                  l*        [I        U USj   SkSRSl ST9[J        RV                  l,        [I        U USm   SnSoSp ST9[J        RZ                  l*        U$ )szWrap IR classes with journaling-enabled versions.

This function replaces methods on IR classes with wrapped versions that
record operations to the active journal.
rD   c                    g N r   s    r   <lambda>!wrap_ir_classes.<locals>.<lambda>   s    TXr!   r   rE   rF   _nameset_namerG   _domain
set_domainrH   _versionset_versionrI   _op_typeset_op_typerJ   	_overloadset_overloadrK   rx   c                6    [        U R                  5       SU 3$ Nr,   )len_inputsr   new_sizes     r   r   r      s    s4<</@.AhZ,Pr!   rL   ry   c                    [        U5      $ r   reprr   nodess     r   r   r          er!   rM   rz   c                    [        U5      $ r   r   r   s     r   r   r     r   r!   rN   r{   c                6    [        U R                  5       SU 3$ r   )r   _outputsr   s     r   r   r     s    s4==/A.B$xj,Qr!   rO   	set_graphc                d    [        U[        R                  5      (       a  UR                  < $ U< $ r   )
isinstancer	   r   rr   r   r/   s     r   r   r     s'    ",UEKK"@"@EJJOPeOPr!   rP   rQ   rR   _typeset_typerS   _shape	set_shaperT   _const_valueset_const_valuerU   r   c                    SU< SU 3$ )Nzreplacement=z, replace_graph_outputs=r   )r   replacementreplace_graph_outputss      r   r   r   1  s    ;/)ABWAXYr!   rV   r   c                *    SU R                   < SU< 3$ )Nz	original=z, other=)r   r   others     r   r   r   9  s    9T[[O8E9)Ur!   rW   c                ,    [        U R                  5      $ r   )strrr   r   s    r   r   r   >  s    sSWS\S\~r!   rX   r   c                    [        U5      $ r   r   r   s     r   r   r   D  r   r!   rY   c                    [        U5      $ r   r   )r   nodes     r   r   r   J  s    T
r!   rZ   r   c                    [        U5      $ r   r   r   s     r   r   r   P  r   r!   r[   r   c                    SU< SU 3$ )Nznodes=z, safe=r   )r   r   safes      r   r   r   V  s    veYgdV5Tr!   r\   r   c                    SU< SU< 3$ Nznode=z, new_nodes=r   r   r   	new_nodess      r   r   r   \      U4(,ym3\r!   r]   r   c                    SU< SU< 3$ r   r   r   s      r   r   r   b  r   r!   r^   r   c                    g r   r   r   s    r   r   r   h  s    $r!   r_   r`   ra   rb   rc   rd   re   	append_io_graphc                <    SU R                   R                   SU< 3$ N[z] 	__class____name__r   items     r   r   r         !DNN,C,C+DBth(Or!   )r@   r   rf   	extend_ioc                <    SU R                   R                   SU< 3$ r   r   r   s     r   r   r     s    1T^^-D-D,ERy)Qr!   rg   	insert_ioc                <    SU R                   R                   SU< 3$ r   r   r   ir   s      r   r   r     s    Qt~~/F/F.Gr$+Rr!   rh   pop_ioc                :    SU R                   R                   SU 3$ )Nr   ] index=r   )r   r   s     r   r   r     s    !DNN,C,C+DHQC(Pr!   ri   	remove_ioc                <    SU R                   R                   SU< 3$ r   r   r   s     r   r   r     r   r!   rj   clear_ioc                6    SU R                   R                   S3$ )Nr   ]r   r   s    r   r   r     s    Adnn&=&=%>a"@r!   rk   set_ioc                B    SU R                   R                   SU SU< 3$ )Nr   r   z, item=r   r   s      r   r   r     s#    ''(74(Cr!   rl   set_initializerc                    SU< SU< 3$ Nkey=z, value=r   r   keyr/   s      r   r   r         SG8E9.Mr!   rm   delete_initializerc                    SU< 3$ )Nr   r   )r   r   s     r   r   r     s
    cW~r!   rn   set_attribute_ownerc                    SU< SU< 3$ r   r   r   s      r   r   r     r   r!   )F)).r   r)   r	   ro   rp   rq   propertyrr   fgetr5   rt   ru   rv   rw   r<   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   r
   r   r   r   r   r   r   r   r   )r   r   s     r   wrap_ir_classesr     sZ    ,- !."78GX!E
 (/1RSEJJ

2B!CWjYEJJO !

&899l	
EJJ "

&9:J	
EJJ "

&9:J	
EJJ #

  &:;[.	
EJJ  /-.P	 EJJ )(4	EJJ ('4	EJJ !0./Q	!EJJ  

./		

EJJ )CS2TUEKK2C!DgzZEKK  2C!DgzZEKK !2D!ExQ\]EKK '$$56		
EKK )867
	)EKK%  /-.U	 EKK )"23B]EKK (7564	(EKK$ )(2	EKK )(4	EKK )(T	EKK  /-.\	 EKK !0./\	!EKK '&&	EKK )CS2TUEKK ,GFY5Z[ENN"  2F!GR\]ENN %""&<=y,	
ENN '$$&>?n	
ENN (/1RSEJJ )B*+O)% )B*+Q)% )B*+R)% &?(P&" )B*+O)% (A)*@($ .G/0
.* 7P89M7''3 7P8957''3 0I12M0  , r!   c                   U S   [         R                  l        U S   [         R                  l        [	        [         R                  R
                  R                  U S   5      [         R                  l        [	        [         R                  R                  R                  U S   5      [         R                  l        [	        [         R                  R                  R                  U S   5      [         R                  l        [	        [         R                  R                  R                  U S   5      [         R                  l	        [	        [         R                  R                  R                  U S   5      [         R                  l
        U S   [         R                  l        U S	   [         R                  l        U S
   [         R                  l        U S   [         R                  l        [	        [         R                  R                  R                  U S   5      [         R                  l        U S   [         R                   l        [	        [         R                   R
                  R                  U S   5      [         R                   l        [	        [         R                   R"                  R                  U S   5      [         R                   l        [	        [         R                   R$                  R                  U S   5      [         R                   l        [	        [         R                   R&                  R                  U S   5      [         R                   l        U S   [         R                   l        U S   [         R                   l        U S   [         R,                  l        U S   [         R,                  l        U S   [         R,                  l        U S   [         R,                  l        U S   [         R,                  l        U S   [         R,                  l        U S   [         R,                  l        U S   [         R,                  l        U S   [         R:                  l        U S   [         R<                  l        [	        [         R<                  R
                  R                  U S   5      [         R<                  l        [	        [         R<                  R                  R                  U S   5      [         R<                  l        [	        [         R<                  R                  R                  U S    5      [         R<                  l
        U S!   [         R>                  l        U S"   [@        RB                  l        U S#   [@        RB                  l        U S$   [@        RB                  l"        U S%   [@        RB                  l#        U S&   [@        RB                  l        U S'   [@        RB                  l$        U S(   [@        RB                  l%        U S)   [@        RL                  l%        U S*   [@        RL                  l'        U S+   [@        RP                  l%        g,)-ztRestore IR classes to their original implementations.

This function undoes the wrapping done by wrap_ir_classes().
rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   N))r	   ro   rp   rq   r   rr   r   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   s    r   restore_ir_classesr    s    !11F GE +?;EJJ

)*EJJO !

+,EJJ "

,-EJJ "

,-EJJ #

  -.EJJ  00DEEJJ).9EJJ(7EJJ 01F GEJJ

*+EJJ ,,<=EKK*+EKK  *+EKK !+,EKK '$$12EKK )99V(WEKK%/0DEEKK ,,<=EKK'78T'UEKK$).9EKK).9EKK).9EKK/0DEEKK 01F GEKK'5EKK ,,<=EKK //BCENN"  -.ENN %""/0ENN '$$12ENN +?;EJJ )99J(K%(89J(K%(89J(K%%5n%E"(89J(K%'78H'I$-=>T-U* 7G'7''3 7G'7''3
 0@@X/Y  ,r!   )r   _journaling.Journalr   'Callable[Concatenate[_SelfT, _P], None]r   zCallable[[_SelfT], str | None]r$   r  )
r   r  r2   !Callable[[_SelfT, _ValueT], None]r3   r   r1   r   r$   r  )
r   r  r9   %Callable[Concatenate[_SelfT, _P], _T]r1   r   r   -Callable[Concatenate[_SelfT, _P], str | None]r$   r  )r   r  r9   r  r1   r   r@   r   r   r  r$   r  )r$   dict[str, Any])r   r  r$   r	  )r   r	  r$   r%   )__doc__
__future__r   r'   typingr   r   r   typing_extensionsr   r   onnx_irr	   r
   onnx_ir.journalingr   r   r   r   r   r   r)   r5   r<   rB   r   r  r  r   r!   r   <module>r     s/   #  ) ) 4 , *t_T]		
)
 48	 : 1	
 -, 6  	
 '0 : 
 @ +0 : 
  @ +@>BK\mZr!   