
     Ti                        S r SSKJr  S/rSSKrSSKrSSKr\R                  " \	5      r
SS jr " S S\R                  R                  5      rS	S jrg)
zEAdd default attributes to nodes that are missing optional attributes.    )annotationsAddDefaultAttributesPassNc                    [        U R                  =(       a1    U R                  R                  [        R                  R
                  :g  5      $ )z;Check if an attribute definition has a valid default value.)booldefault_valuetypeonnxAttributeProto	UNDEFINED)attr_defs    g/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx_ir/passes/common/default_attributes.py_has_valid_defaultr      s:    _8#9#9#>#>$BUBUB_B_#_     c                  "    \ rS rSrSrSS jrSrg)r      aJ  Add default values for optional attributes that are not present in nodes.

This pass iterates through all nodes in the model and for each node:
1. Gets the ONNX schema for the operator
2. For each optional attribute with a default value in the schema
3. If the attribute is not present in the node, adds it with the default value
c                   Sn[         R                  R                  UR                  5       H+  n[	        X1R                  R
                  5      (       d  M)  SnM-     UR                  R                  5        HQ  n[         R                  R                  U5       H+  n[	        X1R                  R
                  5      (       d  M)  SnM-     MS     U(       a  [        R                  S5        [         R                  R                  XS9$ )z5Main entry point for the add default attributes pass.FTz,AddDefaultAttributes pass modified the model)modified)ir	traversalRecursiveGraphIteratorgraph_add_default_attributes_to_nodeopset_imports	functionsvaluesloggerinfopasses
PassResult)selfmodelr   nodefunctions        r   callAddDefaultAttributesPass.call$   s     LL77DD.t[[5N5NOO E
 ..0H;;HE249R9RSS#H F 1
 KKFGyy##E#==r    N)r!   zir.Modelreturnzir.passes.PassResult)__name__
__module____qualname____firstlineno____doc__r$   __static_attributes__r&   r   r   r   r      s    >r   c                   U R                   b  U R                   nOAU R                  U;   a  XR                     nO"[        R                  SU R                  U 5        g [        R
                  R                  U R                  X R                  S9nSnUR                  R                  5        H  u  pVUR                  (       d  XPR                  ;   a  M'  [        U5      (       d  M9  UR                  n[        R                   R#                  U5      nXR                  U'   [        R                  SXP5        SnM     U$ ! [        R
                  R                   a    [        R                  SU 5         gf = f)zBAdd default attributes to a single node. Returns True if modified.z9OpSet version for domain '%s' not found. Skipping node %sF)domainz<Schema not found for %s, skipping default attribute additionz'Added default attribute '%s' to node %sT)versionr/   r   warningr	   defs
get_schemaop_typeSchemaErrordebug
attributesitemsrequiredr   r   r   serdedeserialize_attribute)	r"   r   opset_version	op_schemar   	attr_namer   default_attr_protodefault_attrs	            r   r   r   9   s7    ||		%%kk2GKK	

 II((}[[(Y	 H(3399;		__ < "(++ &33xx556HI%1	">	P  <  O3 99   J	
 s   2D; ;4E21E2)r   zonnx.defs.OpSchema.Attributer'   r   )r"   zir.Noder   zdict[str, int]r'   r   )r,   
__future__r   __all__loggingr	   onnx_irr   	getLoggerr(   r   r   r   InPlacePassr   r   r&   r   r   <module>rG      sU    L "    			8	$>ryy44 ><*r   