
    SiŴ                       % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
  S SKrS SKrS SKJr  S SKrS SKrS SKJrJr  S SKJrJrJr  S SKJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$  \(       a  S SKJ%r%J&r&J'r'  S SK(J)r)  \*\+\,\,\,4   \*\+\,\,\,\,4   -  r-\.\-   r/\.\*\+\+4      r0/ S	Qr1S
\2S'   \3\*\+\,4   \,4   r4SAS jr5\5" \15      r6 SB     SCS jjr7    SD                 SES jjr8      SFS jr9    SD                 SGS jjr:SFS jr;     SH                       SIS jjr<SJS jr=SJS jr>      SKS jr?SLS jr@SMS jrASMS jrB SB           SNS jjrC        SOS jrD        SPS jrE          SQS jrF        SRS jrGSSS jrH  ST         SUS jjrI SV       SWS  jjrJSXS! jrKSYS" jrLSZS# jrM SV       S[S$ jjrN  S\           S]S% jjrO SV       S[S& jjrP  S\           S]S' jjrQ    S^S( jrR    S^S) jrS      S_S* jrT S`       SaS+ jjrUSbS, jrV  S\           ScS- jjrW SB     SdS. jjrXSeS/ jrYSfS0 jrZSgS1 jr[ShS2 jr\ Si       SjS3 jjr]\R                  " S45      S`SkS5 jj5       r_SlS6 jr`          SmS7 jraSnS8 jrbSoS9 jrcSpS: jrd\R                  " S5      SpS; j5       rf\R                  " S5      SqS< j5       rgSrS= jrh\R                  R                  5        V Vs0 s H  u  pX_M	     snn rkS>\2S?'   SsS@ jrlgs  snn f )t    )annotationsN)TYPE_CHECKINGAnyTypeVar)_mappingdefs)MapProtoOptionalProtoSequenceProto)AttributeProtoFunctionProto
GraphProto
ModelProto	NodeProtoOperatorSetIdProtoTensorProtoTensorShapeProtoTrainingInfoProto	TypeProtoValueInfoProto)CallableKeysViewSequence)RepeatedCompositeFieldContainer) )z1.0      r   )z1.1r      r   )z1.1.2r      r   )z1.2r      r   )z1.3r      r   )z1.4.1   	   r   )z1.5.0r   
   r   )z1.6.0r         )z1.7.0r      r%   r   )z1.8.0r      r%   r   )z1.8.1r   r'   r%   r   )z1.9.0r      r%   r   )z1.10.0r       r%   r   )z1.10.1r    r)   r%   r   )z1.10.2r    r)   r%   r   )z1.11.0r       r   r   )z1.12.0r       r   r   )z1.13.0r       r   r   )z1.13.1r    r,   r   r   )z1.14.0r"      r   r   )z1.14.1r"   r-   r   r   )z1.15.0r"      r!   r   )z1.16.0r#      r   r   )z1.16.1r#   r/   r   r   )z1.16.2r#   r/   r   r   )z1.17.0r#      r   r   )z1.18.0r$      r   r   )z1.19.0r&      r   r   )z1.19.1r&   r2   r   r   )z1.20.0r'      r   r   )z1.20.1r'   r3   r   r   )z1.21.0r'      r   r   VersionTableTypeVERSION_TABLEc                8   ^ 0 mSU4S jjnU  H  nU" U6   M
     T$ )zOCreate a map from (opset-domain, opset-version) to ir-version from above table.c                t   > A [        / SQUSS9 H%  nUT;  d  M  UTU'   US   S:X  d  M  UTSUS   4'   M'     g )N)ai.onnxz
ai.onnx.mlai.onnx.trainingF)strictr   r:   zai.onnx.preview.trainingr   )zip)release_version
ir_versionargspairresults       J/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/helper.pyprocess._create_op_set_id_version_map.<locals>.processY   sP    94
D 6!)t700BLF5tAw>?
    )r=   strr>   intr?   r   returnNone )tablerC   rowrA   s      @rB   _create_op_set_id_version_maprM   U   s&    FM  MrE   c                Z   ^^^ SmSUU4S jjmU (       a  [        U4S jU  5       5      $ T$ )a!  Given list of opset ids, determine minimum IR version required.

Args:
    opsetidlist: A sequence of OperatorSetIdProto.
    ignore_unknown: If True, ignore unknown domain and return default minimum
        version for that domain.

Returns:
    The minimum IR version required (integer)
r   c                l   > U =(       d    SU4nU[         ;   a	  [         U   $ T(       a  T$ [        S5      e)Nr9   zUnsupported opset-version.)OP_SET_ID_VERSION_MAP
ValueError)domainversionkeydefault_min_versionignore_unknowns      rB   find_min)find_min_ir_version_for.<locals>.find_minz   s;    "G,''(--&&566rE   c              3  ^   >#    U  H"  nT" UR                   UR                  5      v   M$     g 7fN)rR   rS   ).0xrW   s     rB   	<genexpr>*find_min_ir_version_for.<locals>.<genexpr>   s#     F+Q8AHHaii00+s   *-)rR   
str | NonerS   rG   rH   rG   )max)opsetidlistrV   rU   rW   s    `@@rB   find_min_ir_version_forrb   k   s1     7 7 F+FFFrE   c                j   [        5       nXl        UR                  R                  U5        UR                  R                  U5        U(       a  X8l        U(       a  XHl        Ub  XXl        Ub  Xhl        U(       a9  UR                  R                  S [        UR                  5       5       5       5        U$ )a  Construct a NodeProto.

Args:
    op_type (string): The name of the operator to construct
    inputs (list of string): list of input names
    outputs (list of string): list of output names
    name (string, default None): optional unique identifier for NodeProto
    doc_string (string, default None): optional documentation string for NodeProto
    domain (string, default None): optional domain for NodeProto.
        If it's None, we will just use default domain (which is empty)
    overload (string, default None): optional field, used to
        resolve calls to model-local functions
    **kwargs (dict): the attributes of the node.  The acceptable values
        are documented in :func:`make_attribute`.

Returns:
    NodeProto
c              3  F   #    U  H  u  pUc  M
  [        X5      v   M     g 7frZ   )make_attribute)r[   rT   values      rB   r]   make_node.<locals>.<genexpr>   s&      
4
 'N3&&4s   	!!)r   op_typeinputextendoutputname
doc_stringrR   overload	attributesorteditems)	rh   inputsoutputsrl   rm   rR   rn   kwargsnodes	            rB   	make_noderv      s    8 ;DLJJfKKw	$  
$V\\^4
 	

 KrE   c                2    [        5       nXl        Xl        U$ zConstruct an OperatorSetIdProto.

Args:
    domain (string): The domain of the operator set id
    version (integer): Version of operator set id
Returns:
    OperatorSetIdProto
r   rR   rS   )rR   rS   operatorsetids      rB   make_operatorsetidr{      s     '(M!#rE   c                   Uc  / nUc  / nUc  / n[        5       nUR                  R                  U 5        Xl        UR                  R                  U5        UR
                  R                  U5        UR                  R                  U5        UR                  R                  U5        UR                  R                  U5        U(       a  XXl	        U$ )ah  Construct a GraphProto

Args:
    nodes: list of NodeProto
    name (string): graph name
    inputs: list of ValueInfoProto
    outputs: list of ValueInfoProto
    initializer: list of TensorProto
    doc_string (string): graph documentation
    value_info: list of ValueInfoProto
    sparse_initializer: list of onnx.SparseTensorProto
Returns:
    GraphProto
)
r   ru   rj   rl   ri   rk   initializersparse_initializer
value_inform   )	nodesrl   rr   rs   r}   rm   r   r~   graphs	            rB   
make_graphr      s    0 !
LE	JJeJ	KKv	LL 	[)	##$67	J'%LrE   c                2    [        5       nXl        Xl        U$ rx   ry   )rR   rS   opsetids      rB   make_opsetidr      s     !"GNONrE   c                   Uc  / nUc  / nU
c  / n
[        5       nXl        Xl        UR                  R	                  U5        UR
                  R	                  U5        UR                  R	                  U5        UR                  R	                  U5        UR                  R	                  U5        UR                  R	                  U5        U(       a  Xl
        U	b  Xl        UR                  R	                  U
5        U$ rZ   )r   rR   rl   ri   rj   rk   ru   opset_importro   attribute_protorm   rn   r   )rR   fnamerr   rs   r   opset_imports
attributesattribute_protosrm   rn   r   fs               rB   make_functionr     s     

AHFGGNN6HHOOGFFMM%NN-(KKz"-.!
LL
#HrE   c                   [        5       n[        R                  Ul        UR                  R                  U 5        UR                  SS5      nUb  UR                  R                  U5        O4UR                  R                  5       n[        R                  " 5       Ul        UR                  SS5      nUb  UR                  R                  U5        UR                  5        H  u  pg[        X&U5        M     U$ )zConstruct a ModelProto

Args:
    graph (GraphProto): *make_graph* returns
    **kwargs: any attribute to add to the returned instance
Returns:
    ModelProto
r   N	functions)r   onnx
IR_VERSIONr>   r   CopyFrompopr   rj   addr   onnx_opset_versionrS   r   rq   setattr)r   rt   modelr   impr   kvs           rB   
make_modelr   (  s     LE E	KK9?:M  !!-0   $$&--/06

;0MIy)!  LrE   c                j    SnX!;  a!  SnUR                  U/ 5      n[        U5      X'   [        U 40 UD6$ )Nr>   r   )getrb   r   )r   rt   ir_version_fieldopset_imports_fieldimportss        rB   make_model_gen_versionr   M  sB    #%-**0"5#:7#C e&v&&rE   c                    U R                   S S 2	 UR                  5        H+  u  p#U R                   R                  5       nX$l        X4l        M-     g rZ   )metadata_propsrq   r   rT   rf   )proto
dict_valuer   r   entrys        rB   set_metadata_propsr   V  sE     	Q  "$$((*	 #rE   c                    [        X5        g rZ   )r   )r   r   s     rB   set_model_propsr   h  s
    u)rE   c                "   U R                  5       R                  [        R                  5      R	                  5       nU R
                  nUS-  S:H  nU(       a  UR                  US-   /SS9  US-  nUSSS2==   S-  ss'   USSS2   USSS2   -  $ )	z[Convert a numpy array to flatten, packed int4/uint4. Elements must be in the correct range.r%   r   Frefcheckr)   Nr!   r   ravelviewnpuint8copysizeresize)array
array_flatr   	odd_sizeds       rB   _pack_4bitx2r   l  s     ##BHH-224J::DqAI4!8*u5$Jqt!taddjA...rE   c                   U R                  5       R                  [        R                  5      R	                  5       nU R
                  nUS-  nU(       a  UR                  USU-
  -   /SS9  US-  nUSSS2==   S-  ss'   USSS2==   S-  ss'   USSS2==   S-  ss'   US	SS2   USSS2   -  USSS2   -  USSS2   -  $ )
z[Convert a numpy array to flatten, packed int2/uint2. Elements must be in the correct range.r!   Fr   r   r   Nr%   r   r   r   )r   r   r   pad_lens       rB   _pack_2bitx4r   y  s     ##BHH-224J::DQhG41w;/05A$Jqt!tqt!tqt!taddjA..ADqD1AAJqtRStDTTTrE   c                ,   [        5       nXl        Xl        UR                  R	                  U5        U[         R
                  :X  a  U(       a  [        S5      e[        U5      nU(       Ga  U[         R                  [         R                  [         R                  1;   a  SnO3U[         R                  [         R                  1;   a  SnOUR                  nU[        R                  " U5      -  n[        R                   " U5      n[#        U[$        R&                  5      (       a  U[         R                  [         R                  [         R                  1;   a   [(        R*                  R-                  U5      nOCU[         R                  [         R                  1;   a  [(        R*                  R/                  U5      n[(        R*                  R1                  U5      nO0[#        U[2        5      (       a  UnO[        S[5        U5       S35      e[7        U5      U:w  a  [9        SU S[7        U5       S35      eXl        U$ U(       a   S	5       eU[         R
                  :X  aT  [$        R<                  " U5      R?                  5       n[7        U5      S
:w  a   [$        R@                  " [B        5      " U5      nOU[         RD                  [         RF                  [         RH                  [         RJ                  1;   aC  [(        R*                  RM                  [$        RN                  " U5      U5      R?                  5       nOxU[         RP                  :X  aB  [(        R*                  RS                  [$        RN                  " U5      SSS9R?                  5       nO"[$        RN                  " X6S9R?                  5       nU[         RT                  :X  a!  URW                  [$        RX                  5      nGOU[         RZ                  :X  a!  URW                  [$        R\                  5      nGOXU[         R^                  [         R`                  1;   a!  URW                  [$        Rb                  5      nGOU[         RD                  [         RF                  [         RH                  [         RJ                  [         RP                  1;   a   URW                  [$        Rd                  5      nOU[         R                  [         R                  [         R                  1;   a  [-        U5      nOcU[         R                  [         R                  1;   a  [/        U5      nO3U[         Rf                  :X  a  URi                  [$        Rd                  5      n[k        U5      n	[m        XY5      R	                  U5        U$ )a=  Make a TensorProto with specified arguments.  If raw is False, this
function will choose the corresponding proto field to store the
values based on data_type. If raw is True, use "raw_data" proto
field to store the values, and values should be of type bytes in
this case.

Args:
    name: tensor name
    data_type: a value such as onnx.TensorProto.FLOAT
    dims: shape
    vals: values
    raw: if True, vals contains the serialized content of the tensor,
        otherwise, vals should be a list of values of the type defined by ``data_type``.

Returns:
    TensorProto
z*Can not use raw_data to store string type.g      ?g      ?z1Raw data must be bytes or numpy.ndarray, but got .z5Raw data size does not match tensor's size. Expected z bytes, but got z bytes.z'Bug: raw should be False at this point.r   Tup)saturate
round_mode)dtype)7r   	data_typerl   dimsrj   STRING	TypeErrortensor_dtype_to_np_dtypeUINT4INT4
FLOAT4E2M1UINT2INT2itemsizemathprodceil
isinstancer   ndarrayr   numpy_helperr   r   tobytes_little_endianbytestypelenrQ   raw_datar   flatten	vectorize	_to_bytesFLOAT8E4M3FNFLOAT8E4M3FNUZ
FLOAT8E5M2FLOAT8E5M2FNUZsaturate_castasarray
FLOAT8E8M0to_float8e8m0
COMPLEX128r   float64	COMPLEX64float32BFLOAT16FLOAT16uint16r   BOOLastypetensor_dtype_to_fieldgetattr)
rl   r   r   valsrawtensornp_dtypeexpected_size_bytesr   fields
             rB   make_tensorr     s+   0 ]F K
KKtK&&&3DEE'	2H
**K,<,<k>T>TUU"%;,,k.>.>??"&"*"3"3tyy."ii(;<dBJJ''  !!&& 
 ((55d;{00+2B2BCC((55d;((>>tDHe$$HCDJ<qQ  x=//GH[G\\lmpqymzl{  |C  D  #===7K&&&xx~%%'t9><<	*40D	  """"	 
   ..rzz$/?JRRT	k,,	,  ..JJtt / 

') 	 zz$/779K***yy$	k++	+yy$	{++[-@-@A	Ayy#	  """" 
 yy"	{((+*:*:K<R<RS	SD!	{((+*:*:;	;D!	k&&	&{{288$!),EF!!$'MrE   c                    [         R                  " 5       nUR                  R                  U 5        UR                  R                  U5        UR
                  R                  U5        U$ )zConstruct a SparseTensorProto

Args:
    values (TensorProto): the values
    indices (TensorProto): the indices
    dims: the shape

Returns:
    SparseTensorProto
)r   SparseTensorProtovaluesr   indicesr   rj   )r   r   r   sparses       rB   make_sparse_tensorr     sM     ##%F
MM6"
NNG$
KKtMrE   c                   [        5       nXl        Xl        U[         R                  :X  a  U$ SnU[         R                  :X  a  UR
                  nOU[         R                  :X  a  UR                  nOnU[         R                  :X  a  UR                  nOMU[         R                  :X  a  UR                  nO,U[        R                  :X  a  UR                  nO[        S5      eUR!                  U5        U$ )z/Make a Sequence with specified value arguments.Nz8The element type in the input sequence is not supported.)r   rl   	elem_type	UNDEFINEDTENSORtensor_valuesSPARSE_TENSORsparse_tensor_valuesSEQUENCEsequence_valuesMAP
map_valuesr
   OPTIONALoptional_valuesr   rj   )rl   r   r   sequencero   s        rB   make_sequencer
    s     HM"M+++8<IM(((**		m11	111		m,,	,,,		m''	'''		m,,	,,,	RSSVOrE   c                   [        5       n[        R                  [        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  /nXl
        Xl        U[        R                  :X  a  UR                  R                  U5        O X;   a  UR                  R                  U5        UR                   R#                  U5        U$ )zMake a Map with specified key-value pair arguments.

Criteria for conversion:
- Keys and Values must have the same number of elements
- Every key in keys must be of the same type
- Every value in values must be of the same type
)r	   r   INT8INT16INT32INT64UINT8UINT16UINT32UINT64rl   key_typer   string_keysrj   keysr   r   )rl   r  r  r   	map_protovalid_key_int_typess         rB   make_mapr  0  s     
I	 N!;%%%$$T*		(d#f%rE   c                   [        5       nXl        Xl        U[         R                  :X  a  U$ SnU[         R                  :X  a  UR
                  nOU[         R                  :X  a  UR                  nOnU[         R                  :X  a  UR                  nOMU[         R                  :X  a  UR                  nO,U[         R                  :X  a  UR                  nO[        S5      eUc   eUR                  U5        U$ )z0Make an Optional with specified value arguments.Nz8The element type in the input optional is not supported.)r
   rl   r   r   r   tensor_valuer  sparse_tensor_valuer  sequence_valuer  	map_valuer  optional_valuer   r   )rl   r   rf   optionalro   s        rB   make_optionalr!  O  s     HM"M+++8<IM((())		m11	100		m,,	,++		m''	'&&		m,,	,++	RSSuOrE   c                R    [        U [        5      (       a  U R                  S5      $ U $ )z2Coerce a string (or bytes) value into UTF-8 bytes.utf-8)r   rF   encode)rf   s    rB   r   r   n  s#    %||G$$LrE   c                  ^ [        5       nXl        U(       a  X$l        [        U[        R
                  5      (       a'  [        U5      Ul        [         R                  Ul	        GO[        U[        R                  5      (       a'  [        U5      Ul        [         R                  Ul	        GO[        U[        [        45      (       a'  [!        U5      Ul        [         R$                  Ul	        GO[        U[&        5      (       a2  UR(                  R+                  U5        [         R,                  Ul	        GOI[        U[.        R0                  5      (       a2  UR2                  R+                  U5        [         R4                  Ul	        GO[        U[6        5      (       a2  UR8                  R+                  U5        [         R:                  Ul	        GO[        U[<        5      (       a2  UR>                  R+                  U5        [         R@                  Ul	        GOj[        U[B        RD                  RF                  5      (       Ga1  [I        U5      n[K        U5      S:X  a  Uc  [M        SU  S35      eUGc
  U Vs1 s H  n[        U5      iM     nn[        R
                  [         RN                  4[        R                  [         RP                  4[        [        4[         RR                  4[&        [         RT                  4[.        R0                  [         RV                  4[6        [         RX                  4[<        [         RZ                  44 H$  u  mn[]        U4S jU 5       5      (       d  M"  Un  O   Uc  [M        S5      eU[         RN                  :X  a2  UR^                  Ra                  U5        [         RN                  Ul	        GOU[         RP                  :X  a2  URb                  Ra                  U5        [         RP                  Ul	        GOzU[         RR                  :X  a9  URd                  Ra                  S U 5       5        [         RR                  Ul	        GO-U[         RT                  :X  a1  URf                  Ra                  U5        [         RT                  Ul	        OU[         RV                  :X  a1  URh                  Ra                  U5        [         RV                  Ul	        OU[         RX                  :X  a1  URj                  Ra                  U5        [         RX                  Ul	        O^U[         RZ                  :X  a1  URl                  Ra                  U5        [         RZ                  Ul	        O[o        5       e[q        SU S35      eUbN  UR                  U:w  a>  [q        S	[s        UR                  5       S
UR                   S[s        U5       S
U S3	5      eU$ s  snf )z0Makes an AttributeProto based on the value type.r   zCould not infer attribute `z` type from empty iteratorc              3  <   >#    U  H  n[        UT5      v   M     g 7frZ   )
issubclass)r[   texp_ts     rB   r]   !make_attribute.<locals>.<genexpr>  s     ;Uz!U++Us   zRCould not infer the attribute type from the elements of the passed Iterable value.c              3  8   #    U  H  n[        U5      v   M     g 7frZ   )r   )r[   r   s     rB   r]   r*    s     <e	!es   'z%' is not an accepted attribute value.zInferred attribute type 'z'(z") mismatched with specified type ')):r   rl   rm   r   numbersIntegralrG   iINTr   Realfloatr   FLOATrF   r   r   sr   r   r(  r   r   r   r   sparse_tensorr  r   gGRAPHr   tp
TYPE_PROTOcollectionsabcIterablelistr   rQ   INTSFLOATSSTRINGSTENSORSSPARSE_TENSORSGRAPHSTYPE_PROTOSallintsrj   floatsstringstensorssparse_tensorsgraphstype_protosAssertionErrorr   _attr_type_to_str)	rT   rf   rm   	attr_typeattrr   typesexp_enumr)  s	           @rB   re   re   u  s^    DI$ %))**U"&&		E7<<	(	(u"((		EC<	(	(5!"))		E;	'	'"))		E411	2	2##E*"00		E:	&	&"((		E9	%	%"--		E;??33	4	4Uu:?y0-cU2LM  &+,eT!WeE,!!>#6#67~445u~556n445'')F)FG^223N667$x ;U;;; (I$   h  +++IIU#&++DI.///KKu%&--DI.000LL<e<<&..DI.000LL&&..DI.777&&u-&55DI.///KKu%&--DI.444##E*&22DI ""!E7"GHIIi!7'(9$))(D'ER		{Rt  vG  HQ  vR  uS  SU  V_  U`  `a  b
 	
 Ka -s   1Wc                L    [        5       nXl        Xl        U(       a  X#l        U$ )zeMake an AttributeProto holding a reference to the parent function's attribute of given name and type.)r   rl   r   rm   )rl   rP  rm   rQ  s       rB   make_attribute_refrU    s#     DII$KrE   c                   U R                   (       a  [        SU  35      eU R                  [        R                  :X  a  U R
                  $ U R                  [        R                  :X  a  U R                  $ U R                  [        R                  :X  a  U R                  $ U R                  [        R                  :X  a  U R                  $ U R                  [        R                  :X  a  U R                  $ U R                  [        R                  :X  a  U R                  $ U R                  [        R                   :X  a  U R"                  $ U R                  [        R$                  :X  a  ['        U R(                  5      $ U R                  [        R*                  :X  a  ['        U R,                  5      $ U R                  [        R.                  :X  a  ['        U R0                  5      $ U R                  [        R2                  :X  a  ['        U R4                  5      $ U R                  [        R6                  :X  a  ['        U R8                  5      $ U R                  [        R:                  :X  a  ['        U R<                  5      $ U R                  [        R>                  :X  a  ['        U R@                  5      $ U R                  [        RB                  :X  a  g [        SU  35      e)Nz)Cannot get value of reference attribute: zUnsupported ONNX attribute: )"ref_attr_namerQ   r   r   r4  r   r1  r0  r   r5  r   r(  r  r6  r8  r7  r:  r9  r@  r>  rH  r?  rG  rA  rI  rB  rJ  rC  rK  rD  rL  rE  rM  r   )rQ  s    rB   get_attribute_valuerX    s   DTFKLLyyN(((vvyyN&&&vvyyN)))vvyyN)))vvyyN000!!!yyN(((vvyyN---wwyyN)))DKK  yyN'''DIIyyN***DLL!!yyN***DLL!!yyN111D''((yyN)))DKK  yyN...D$$%%yyN,,,
3D6:
;;rE   c                    U R                    Vs/ s H  o"R                  U:X  d  M  UPM     nn[        U5      S:  a  [        SU 35      e[        U5      S:  a  [        SU 35      e[	        US   5      $ s  snf )Nr   z'Node has multiple attributes with name z Node has no attribute with name r   )ro   rl   r   rQ   rX  )ru   	attr_namer\   matchings       rB   get_node_attr_valuer\    sv    >>A>aVVy-@>HA
8}qB9+NOO
8}q;I;GHHx{++ Bs
   A6A6c                &    [        5       nXl        U$ rZ   )r   rl   )rl   value_info_protos     rB   make_empty_tensor_value_infor_    s    %' rE   c                   [        5       nUR                  nXl        UR                  nUb  UR                  R                  / 5        U(       a#  [        U5      [        U5      :w  a  [        S5      e[        U5       H|  u  pgUR                  R                  5       nUc  OG[        U[        5      (       a  Xxl        O+[        U[        5      (       a  Xxl        O[        SU S35      eU(       d  Ms  X&   Ul        M~     U$ )z:Makes a Tensor TypeProto based on the data type and shape.>Invalid shape_denotation. Must be of the same length as shape.Invalid item in shape: z. Needs to be of int or str.)r   tensor_typer   shapedimrj   r   rQ   	enumerater   r   rG   	dim_valuerF   	dim_param
denotation)	r   rd  shape_denotation
type_prototensor_type_prototensor_shape_protor0  dre  s	            rB   make_tensor_type_protoro    s     J".."+*00 	%%b)$4 5U CP  e$DA$((,,.CyAs## !As## ! -aS0LM   !1!4 %  rE   c                    [        5       nXl        U(       a  X5l        [        XU5      nUR                  R                  U5        U$ )z8Makes a ValueInfoProto based on the data type and shape.)r   rl   rm   ro  r   r   )rl   r   rd  rm   rj  r^  rl  s          rB   make_tensor_value_inforq  ?  sE     &' &0#.yAQR""#45rE   c                   [        5       nUR                  nXl        UR                  nUb  UR                  R                  / 5        U(       a#  [        U5      [        U5      :w  a  [        S5      e[        U5       H|  u  pgUR                  R                  5       nUc  OG[        U[        5      (       a  Xxl        O+[        U[        5      (       a  Xxl        O[        SU S35      eU(       d  Ms  X&   Ul        M~     U$ )z@Makes a SparseTensor TypeProto based on the data type and shape.ra  rb  z. Needs to be of int or text.)r   sparse_tensor_typer   rd  re  rj   r   rQ   rf  r   r   rG   rg  rF   rh  ri  )	r   rd  rj  rk  sparse_tensor_type_protosparse_tensor_shape_protor0  rn  re  s	            rB   make_sparse_tensor_type_protorv  Q  s     J)<<)2& 8 > > 	"%%,,R0$4 5U CP  e$DA+//335CyAs## !As## ! -aS0MN   !1!4 %  rE   c                    [        5       nXl        U(       a  X5l        [        XU5      nUR                  R
                  R                  UR
                  5        U$ )zEMakes a SparseTensor ValueInfoProto based on the data type and shape.)r   rl   rm   rv  r   rs  r   )rl   r   rd  rm   rj  r^  rt  s          rB   make_sparse_tensor_value_inforx  ~  sZ     &' &0#<*  ,,55 33 rE   c                d    [        5       nUR                  R                  R                  U 5        U$ )zMakes a sequence TypeProto.)r   sequence_typer   r   inner_type_protork  s     rB   make_sequence_type_protor}    ,     J&&//0@ArE   c                d    [        5       nUR                  R                  R                  U 5        U$ )zMakes an optional TypeProto.)r   optional_typer   r   r{  s     rB   make_optional_type_protor    r~  rE   c                    [        5       nXR                  l        UR                  R                  R	                  U5        U$ )zMakes a map TypeProto.)r   map_typer  
value_typer   )r  r  rk  s      rB   make_map_type_protor    s7    
 J#+ ""++J7rE   c                v    [        5       nXl        U(       a  X#l        UR                  R	                  U5        U$ )z1Makes a ValueInfoProto with the given type_proto.)r   rl   rm   r   r   )rl   rk  rm   r^  s       rB   make_value_infor    s6     &' &0#"":.rE   c                    [        U [        5      (       a  U nO1[        U [        5      (       a  U R                  SSS9nO[        U 5      n[	        U5      S:  a  U$ US S S[	        U5      S-
   S3-   $ )Nr#  ignore)errors@   z	...<+len=>)r   rF   r   decoder   )r5  	sanitizeds     rB   _sanitize_strr    sr    !S		Au		HHWXH6	F	
9~Sb>iY")<'>a@@@rE   c                    [        5       nXl        U(       a  X5l        [        XU5      n[	        U5      nUR
                  R                  R                  UR                  5        U$ )zJMakes a Sequence[Tensors] ValueInfoProto based on the data type and shape.)r   rl   rm   ro  r}  r   rz  r   )rl   r   rd  rm   elem_shape_denotationr^  rl  sequence_type_protos           rB   make_tensor_sequence_value_infor    s]     &' &0#.yAVW23DE''001D1R1RSrE   c           
        / nUR                  U R                  5        UR                  S5        SS jnSS jn[        S5      nSS jn/ nU R                  S5      (       a#  UR                  U" U R                  5      5        GOU R                  S5      (       a#  UR                  U" U R
                  5      5        GOU R                  S5      (       a/  UR                  [        [        U R                  5      5      5        GOKU R                  S	5      (       a  [        U R                  R                  5      S
:  a  UR                  S5        GO[        U R                  R                  5      nUR                  S[        U R                  U5       S35        GOU R                  S5      (       aF  UR                  SU R                  R                   S35        UR                  U R                  5        GOYU R                  S5      (       a!  UR                  SU R                    S35        GO"U R"                  (       a#  UR                  U" X0R"                  5      5        GOU R$                  (       a#  UR                  U" X@R$                  5      5        GOU R&                  (       a=  UR                  [)        [+        [-        [        U R&                  5      5      5      5        GOlU R.                  (       a  UR                  S5        GOHU R0                  (       ax  UR                  S5        [3        U R0                  5       H<  u  pU	[        U R0                  5      S-
  :w  a  SOSnUR                  SU
 SU 35        M>     UR                  S5        OU R4                  (       a  UR                  S5        [3        U R4                  5       HF  u  pU	[        U R4                  5      S-
  :w  a  SOSnUR                  SUR                   SU 35        MH     UR                  S5        UR7                  U R4                  5        OUR                  S5        U(       a  SR9                  U5      U4$ SR9                  U5      $ )N=r   c                
    U S $ )Nz.15grJ   )r   s    rB   	str_float&printable_attribute.<locals>.str_float  s     DrE   r0  c                    [        U 5      $ rZ   )rF   )r0  s    rB   str_int$printable_attribute.<locals>.str_int  s    1vrE   _Tc                B    SSR                  [        X5      5      -   S-   $ )N[, ])joinmap)str_elemxss     rB   str_list%printable_attribute.<locals>.str_list  s     TYYs8011C77rE   r5  r(  r   z<Tensor>z<Scalar Tensor r  r7  z<graph r9  z<Type Proto z[<Tensor>, ...]r  r   , r  z	<Unknown> )r   r3  rH   rF   )r0  rG   rH   rF   )r  zCallable[[_T], str]r  zSequence[_T]rH   rF   )appendrl   r   HasFieldr   r0  reprr  r5  r   r(  r   r   r   r   r7  r9  rH  rG  rI  rF   r>  r  rJ  rM  rf  rL  rj   r  )rQ  	subgraphscontentr  r  r  r  rL  r   r0  r9  commar7  s                rB   printable_attributer    s    GNN499NN3 
B8 F}}Sy()	s		wtvv'	s		tM$&&123	s		tvv{{aNN:& *$&&*:*:;ENN_WTVVU-C,DAFG	s		Q/0dff	t		dggYa01	x	;;78	x34	s4M4<< @ABC	()			st//0EAD$4$4 5 99CrENN\"Qug67 1 	s	sdkk*DADKK 01 44C"ENNWQVVHAeW56 + 	sdkk"{#xx &((88GrE   c                T    U R                  S5      nUc  g[        [        X5      5      $ )Nrf   ?)
WhichOneofrF   r   )re  whichs     rB   printable_dimr  ,  s(    NN7#E}ws"##rE   c           
     &   U R                  S5      S:X  a  [        R                  R                  U R                  R
                  5      nU R                  R                  S5      (       a  [        U R                  R                  R                  5      (       aN  U[        SSR                  [        [        U R                  R                  R                  5      5      -   5      -  nU$ US-  nU$ U R                  S5      c  gSU R                  S5       3$ )	Nrf   rc  rd  r  r\   , scalarr  zUnknown type )r  r   DataTypeNamerc  r   r  r   rd  re  rF   r  r  r  r(  r5  s     rB   printable_typer  3  s    ||G-%%**1==+B+BC==!!'**1==&&**++S]AMM<O<O<S<S)T UUVV  Z||G$1<<0122rE   c                |    SU R                    3nU R                  (       a  U S[        U R                  5       S3nU$ )N%r  r  )rl   r   r  )r   r5  s     rB   printable_value_infor  A  s9    
AFF8Avvc>!&&)*!,HrE   c           
     R   SU R                    S3nU[        R                  R                  U R                  5      -  nU R
                  bX  [        U R
                  5      (       a9  U[        SSR                  [        [        U R
                  5      5      -   5      -  nOUS-  nUS-  nU$ )Nr  r  r  r\   r  r  )
rl   r   r  r  r   r   r   rF   r  r  r  s     rB   printable_tensor_protor  H  s    
AFF81A			"	"1;;	//Avvqvv;;TCHHSaff%56677AOAHAHrE   c           	        / n[        U R                  5      (       aO  UR                  SR                  U R                   Vs/ s H  nSU 3PM
     sn5      5        UR                  S5        / n/ nU R                   H  nU(       a`  [        Xr5      n[        US   [        5      (       d  [        S[         S35      eUR                  US   5        UR                  US   5        Mj  [        U5      n	[        U	[        5      (       d  [        S[         S35      eUR                  U	5        M     SR                  [        U5      5      n
SR                  U R                   Vs/ s H  nSU 3PM
     sn5      nU R                  (       a%  UR                  U R                   S	U
 S
U S35        O!UR                  U R                   SU S35        U(       a  USR                  U5      -   U4$ USR                  U5      -   $ s  snf s  snf )Nr  r  r  r   z1printed_attr_subgraphs[1] must be an instance of r   r   zprinted must be an instance of r  z](r-  (r  )r   rk   r  r  ro   r  r   r>  r   rj   rF   rp   ri   rh   )ru   prefixr  r  rl   rL  printed_attrsrQ  printed_attr_subgraphsprintedprinted_attributesprinted_inputss               rB   printable_noder  T  s    G
4;;tyy!EAdV*!EFGs!FM%8%I"4Q7>>GvQO  MM034  !7!:;)$/Ggs++"A#a HII  )  6-#89YYtzzBzt!D6
zBCN~~$,,q);(<B~>NaPQ$,,q(8:;))611CHHW%%%7 "F(  Cs   G?!HzEDeprecated since 1.19. Consider using onnx.printer.to_text() instead.c           	        / nUS-   nSU R                   /nU R                   Vs1 s H  oUR                   iM     nn[        U R                  5      (       Ga  UR	                  S5        / n/ nU R                   HI  n	U	R                   U;  a  UR	                  [        U	5      5        M/  UR	                  [        U	5      5        MK     U(       aE  UR	                  USR                  U5      -   5        / nU H  n
UR	                  US-   U
-   5        M     UR	                  S5        U(       ag  UR	                  S5        UR	                  USR                  U5      -   5        / nU H  n
UR	                  US-   U
-   5        M     UR	                  S5        [        U5      [        U5      :  a  U R                   Vs1 s H  oR                   iM     nnU R                   Vs/ s H   nUR                   U;  d  M  [        U5      PM"     nnUR	                  S5        UR	                  USR                  U5      -   5        / nU H  n
UR	                  US-   U
-   5        M     UR	                  S5        UR	                  S5        UR	                  USR                  U5      -   5        / nU R                   H`  n[        XS	S
9n[        US   [        5      (       d  [        S[         S35      eUR	                  US   5        UR                  US   5        Mb     S/n[        U R                  5      (       aH  UR	                  SR                  U R                   Vs/ s H  nSUR                    3PM     sn5      5        UR	                  USR                  U5      -   5        UR	                  US-   5        U H   nUR	                  S[        U5      -   5        M"     SR                  U5      $ s  snf s  snf s  snf s  snf )zDisplay a GraphProto as a string.

.. deprecated:: 1.19
    Consider using :func:`onnx.printer.to_text` instead.

Args:
    graph (GraphProto): the graph to display
    prefix (string): prefix of every line

Returns:
    string
z  r   r  r  r-  z,optional inputs with matching initializers (zinitializers ({T)r  r   z-contents_subgraphs[1] must be an instance of r   r   rH   r  r  }
)rl   r}   r   ri   r  r  r  r  ru   r  r   r>  r   rj   rk   printable_graph)r   r  r  indentheaderr(  initializersin_strsin_with_init_strsinpliner0  graph_inputs	init_strsrL  ru   contents_subgraphstailoutr7  s                       rB   r  r  w  s\     Gd]Fuzz"F$)$5$56$5qFF$5L6
5;;c"$;;Cxx|+3C89!(()=c)BC	 
 NN6CHHV$445Fv}t34  cMMHINN6CHHV$445F)v}t34 *MM#  !C$55,1KK8KqFFKL8 ***A66- *&q)*  
 MM*+NN6CHHV$445F!v}t34 "MM#
MM#NN6CHHV,,-!F

+DDI,Q/66KD6QRSTT)!,-(+,  :D
5<<DIIF#388*~FGHNN6CHHTN*+NN6C< toa001 99Wy 78 92 Gs   O#5O(O-2O-O2c                   [        U [        R                  R                  R                  5      (       d1  [        S[        R                  R                  R                   S35      eU R                  R                   H  nUR                  S:X  a  U R                  UR                  5        M0  UR                  UR                  :X  d  ML  UR                  UR                  :X  a)  [        XR                  5       H  n[        U5        M     M  U R!                  UR                  5      (       d  M  [        [        XR                  5      5        M     g)z:Empties `doc_string` field on any nested protobuf messageszproto must be an instance of r   rm   N)r   googleprotobufmessageMessager   
DESCRIPTORfieldsrl   
ClearFieldr   TYPE_MESSAGElabelLABEL_REPEATEDr   strip_doc_stringr  )r   
descriptorr\   s      rB   r  r    s    eV__44<<==+FOO,C,C,K,K+LAN
 	
 &&--
??l*Z__-__
 7 77:#<#<< 8A$Q' 9
00 !@A .rE   c                f   [        5       nUR                  R                  U 5        U H+  u  pVUR                  R	                  5       nXWl        Xgl        M-     U(       a  UR                  R                  U5        U(       a1  U H+  u  pVUR                  R	                  5       nXWl        Xgl        M-     U$ rZ   )	r   	algorithmr   update_bindingr   rT   rf   initializationinitialization_binding)r  algorithm_bindingsr  initialization_bindingstraining_infor   r   bindings           rB   make_training_infor    s     &'M$$Y/"..224 #
 $$--n=+DA#::>>@GKM ,
 rE   c                <    [         R                  U    R                  $ )zConvert a TensorProto's data_type to corresponding numpy dtype. It can be used while making tensor.

Args:
    tensor_dtype: TensorProto's data_type

Returns:
    numpy's data_type
)r   TENSOR_TYPE_MAPr   tensor_dtypes    rB   r   r     s     ##L1:::rE   c                <    [         R                  U    R                  $ )zConvert a TensorProto's data_type to corresponding data_type for storage.

Args:
    tensor_dtype: TensorProto's data_type

Returns:
    data_type for storage
)r   r  storage_dtyper  s    rB   $tensor_dtype_to_storage_tensor_dtyper     s     ##L1???rE   c                <    [         R                  U    R                  $ )zGet the name of given TensorProto's data_type.

Args:
    tensor_dtype: TensorProto's data_type

Returns:
    the name of data_type
)r   r  rl   r  s    rB   tensor_dtype_to_stringr    s     ##L1666rE   c                   [        [        R                  5      S[        [        R                  5      S[        [        R                  5      S[        [        R
                  5      S[        [        R                  5      S[        [        R                  5      S[        [        R                  5      S0nU[        R                  U    R                     $ )zConvert a TensorProto's data_type to corresponding field name for storage. It can be used while making tensors.

Args:
    tensor_dtype: TensorProto's data_type

Returns:
    field name

float_data
int32_data
int64_datadouble_datauint64_datastring_data)rG   r   r4  r  r  DOUBLEr  r  r   r   r  r  )r  storage_tensor_type_to_fields     rB   r   r     s     	KKKKKKK$  (  .<< rE   c                X   [         R                  R                  5        VVs0 s H  u  pUR                  U_M     nnnX;   a  [        R
                  " SX0   5      $ [        R                  " U [        R                  5      (       a  [        R                  $ [        SU < S35      es  snnf )zConvert a numpy's dtype to corresponding tensor type. It can be used while converting numpy arrays to tensors.

Args:
    np_dtype: numpy's data_type

Returns:
    TensorsProto's data_type
TensorProto.DataTypezUnable to convert type z into TensorProto element type.)r   r  rq   r   typingcastr   
issubdtypestr_r   r   rQ   )r   r   r   _np_dtype_to_tensor_dtypes       rB   np_dtype_to_tensor_dtyper  0  s     #+":":"@"@"B!"B$!

A"B  ! ,{{13L3VWW	}}Xrww''!!!

!(-LM !s   B&c                 >    [         R                  R                  5       $ )zWGet all tensor types from TensorProto.

Returns:
    all tensor types from TensorProto
)r   r  r  rJ   rE   rB   get_all_tensor_dtypesr  G  s     ##((**rE   zdict[int, str]_ATTRIBUTE_TYPE_TO_STRc                    U [         R                  R                  5       ;   a	  [        U    $ [         R                  R	                  5       S   $ )zConvert AttributeProto type to string.

Args:
    attr_type: AttributeProto type.

Returns:
    String representing the supplied attr_type.
r   )r   AttributeTyper   r  r  )rP  s    rB   rO  rO  V  s@     N007799%i00'',,.q11rE   )rK   r5   rH   VersionMapType)F)ra   Sequence[OperatorSetIdProto]rV   boolrH   rG   )NNNN)rh   rF   rr   Sequence[str]rs   r  rl   r_   rm   r_   rR   r_   rn   r_   rt   r   rH   r   )rR   rF   rS   rG   rH   r   )r   Sequence[NodeProto]rl   rF   rr   Sequence[ValueInfoProto]rs   r  r}   zSequence[TensorProto] | Nonerm   r_   r   Sequence[ValueInfoProto] | Noner~   z'Sequence[onnx.SparseTensorProto] | NonerH   r   )NNNNN)rR   rF   r   rF   rr   r  rs   r  r   r  r   r  r   zSequence[str] | Noner   zSequence[AttributeProto] | Nonerm   r_   rn   r_   r   r  rH   r   )r   r   rt   r   rH   r   )r   zRModelProto | GraphProto | FunctionProto | NodeProto | TensorProto | ValueInfoProtor   dict[str, str]rH   rI   )r   r   r   r  rH   rI   )r   z
np.ndarrayrH   znpt.NDArray[np.uint8])rl   rF   r   rG   r   Sequence[int]r   z*Sequence[int | float] | bytes | np.ndarrayr   r  rH   r   )r   r   r   r   r   r  rH   zonnx.SparseTensorProto)rl   rF   r   zSequenceProto.DataTyper   zSequence[Any]rH   r   )
rl   rF   r  rG   r  z	list[Any]r   r   rH   r	   )rl   rF   r   zOptionalProto.DataTyperf   z&google.protobuf.message.Message | NonerH   r
   )rf   str | bytesrH   r   )NN)
rT   rF   rf   r   rm   r_   rP  z
int | NonerH   r   rZ   )rl   rF   rP  zAttributeProto.AttributeTyperm   r_   rH   r   )rQ  r   rH   r   )ru   r   rZ  rF   rH   r   )rl   rF   rH   r   )r   rG   rd  !Sequence[str | int | None] | Nonerj  list[str] | NonerH   r   )r  N)rl   rF   r   rG   rd  r  rm   rF   rj  r  rH   r   )r|  r   rH   r   )r  rG   r  r   rH   r   )r  )rl   rF   rk  r   rm   rF   rH   r   )r5  r  rH   rF   )rl   rF   r   rG   rd  r  rm   rF   r  r  rH   r   )rQ  r   r  r  rH   "str | tuple[str, list[GraphProto]])re  zTensorShapeProto.DimensionrH   rF   )r(  r   rH   rF   )r   r   rH   rF   )r(  r   rH   rF   )r  F)ru   r   r  rF   r  r  rH   r  )r   r   r  rF   rH   rF   )r   zgoogle.protobuf.message.MessagerH   rI   )
r  r   r  AssignmentBindingTyper  zGraphProto | Noner  zAssignmentBindingType | NonerH   r   )r  rG   rH   np.dtype)r  rG   rH   rG   )r  rG   rH   rF   )r   r  rH   r  )rH   zKeysView[int])rP  rG   rH   rF   )m
__future__r   collections.abcr;  	functoolsr   r.  r  r   r   r   google.protobuf.messager  numpyr   numpy.typingnpttyping_extensionsr   r   r   onnx.onnx_data_pbr	   r
   r   onnx.onnx_pbr   r   r   r   r   r   r   r   r   r   r   r   r   r   #google.protobuf.internal.containersr   tuplerF   rG   VersionRowTyper>  r5   r  r6   __annotations__dictr  rM   rP   rb   rv   r{   r   r   r   r   r   r   r   r   r   r   r   r
  r  r!  r   re   rU  rX  r\  r_  ro  rq  rv  rx  r}  r  r  r  r  r  r  r  r  r  r  r  
deprecatedr  r  r  r   r  r  	lru_cacher   r  r  r  rq   r  rO  )r   r   s   00rB   <module>r1     s7   #      . .       D D    <<SsCc)*U3S#s3J-KK' U38_- "# "H eCHos*+& 6mD  GL-?C@ !... . 	.
 . . . . .b . 15!26BF((
( %( &	(
 .( ( 0( @( (V, (,8<!26!!! ! 	!
 ! 0! %! 6! ! ! 0! !H J'	  
$*
/U( r
rr r 5	r
 
r rj"-5B(
%  	>
$-7D>
% 2 	> " 	[	[[ [ 	[
 [~ RV	
	6	DN		!<H, *.**,* '* 	*b )-
 - 	
 ' * *.**,* '* 	*b )-
 - 	
 ' ,  
  		A  .2
 - 	
 , * -2I
I%)I'IX$3	 :? &
 &  &26 &' &F KMM`B"- & :	
 2	;	@	7 T . T ,+ ,,224*4 D4*  2*s   .M