
    jm                         d dl Z d dlmZ d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZmZ d	 Zd
 Zd Zd Zd Zd ZdS )    N)mock)MODELSOURCE)YOLO)get_cfg)Exporter)classifydetectsegment)ASSETSDEFAULT_CFGWEIGHTS_DIRc                  $    t          d           dS )zFTest function used as a callback stub to verify callback registration.zcallback test passedN)print)argskwargss     V/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/tests/test_engine.py	test_funcr      s    	
 !!!!!    c                  
   t                      } |                     dt                     t          | j        d         v s
J d             | t	          d          j                  } t	          |          t                     dS )zTTest model exporting functionality by adding a callback and verifying its execution.on_export_startcallback test failedyolo26n.yamlmodelN)r   add_callbackr   	callbacksr   r   r   )exporterfs     r   test_exportr       sy    zzH+Y777*+<====?U===tN++1222ADGGFOOOOOr   c                  6   dddddd} t          t                    }d|_        d|_        t	          j        |           }|                    dt                     t          |j        d         v s
J d	            |	                                 t	          j
        |
          }|                    dt                     t          |j        d         v s
J d	             ||j                   t	          j        dddgi          }|                    dt                     t          |j        d         v s
J d	            t          j                            t           dg           5   |t"          t$                    }t'          |          s
J d            	 ddd           n# 1 swxY w Y   |j        | d<   t	          j        |           }	 |	                                 n*# t*          $ r}t-          d|            Y d}~dS d}~ww xY wt+          d          )zNTest YOLO object detection training, validation, and prediction functionality.
coco8.yamlr          Fdatar   imgszepochssave	overrideson_train_startr   r   on_val_startr   r'   @   on_predict_startargvsourcer   predictor test failedNresumeExpected exception caught: Resume test failed!)r   r   r&   r'   r
   DetectionTrainerr   r   r   trainDetectionValidatorbestDetectionPredictorr   patchobjectsysr   r   lenlast	Exceptionr   r+   cfgtrainervalpredresultes          r   test_detectrJ      so   %WXbghhI
+

CCHCI %	:::G)9555)*:;;;;=S;;;MMOOO 
#
-
-
-C^Y///n55557M555Cgl $"b/BCCCD()444'9::::<R:::			3	+	+ 4 4V51116{{33333{34 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 ",Ih%	:::G   /A//000 )
*
**s*   $1F""F&)F&G" "
H	,HH	c                     dddddddd} t          t                    }d|_        d|_        t	          j        |           }|                    dt                     t          |j        d         v s
J d	            |	                                 t	          j
        |
          }|                    dt                     t          |j        d         v s
J d	             ||j                   t	          j        dddgi          }|                    dt                     t          |j        d         v s
J d	             |t          t          dz            }t          |          s
J d            |j        | d<   t	          j        |           }	 |	                                 n*# t"          $ r}t%          d|            Y d}~dS d}~ww xY wt#          d          )zYTest image segmentation training, validation, and prediction pipelines using YOLO models.zcoco8-seg.yamlzyolo26n-seg.yamlr#   r$   F)r&   r   r'   r(   r)   
mask_ratiooverlap_maskr*   r,   r   r-   r.   r   r'   r/   r0   zyolo26n-seg.ptr2   r4   r5   r6   Nr7   )r   r   r&   r'   r   SegmentationTrainerr   r   r   r9   SegmentationValidatorr;   SegmentationPredictorr   r   r@   rA   rB   r   rC   s          r   test_segmentrQ   F   s    !# I +

CCHCI )I>>>G)9555)*:;;;;=S;;;MMOOO 
'S
1
1
1C^Y///n55557M555Cgl (Gb"X3FGGGD()444'9::::<R:::T{5E'EFFFFv;;/////; ",Ih)I>>>G   /A//000 )
*
**s   F( (
G2G

Gc                     dddddd} t          t                    }d|_        d|_        t	          j        |           }|                    dt                     t          |j        d         v s
J d	            |	                                 t	          j
        |
          }|                    dt                     t          |j        d         v s
J d	             ||j                   t	          j        dddgi          }|                    dt                     t          |j        d         v s
J d	             |t          |j                  }t          |          s
J d            dS )zPTest image classification including training, validation, and prediction phases.
imagenet10zyolo26n-cls.yamlr#   r$   Fr%   r*   r,   r   r-   r.   r   r'   r/   r0   r2   r4   N)r   r   r&   r'   r	   ClassificationTrainerr   r   r   r9   ClassificationValidatorr;   ClassificationPredictorr   r@   )r+   rD   rE   rF   rG   rH   s         r   test_classifyrW   t   s}   %0BR[\fkllI
+

CCHCI ,yAAAG)9555)*:;;;;=S;;;MMOOO 
*
4
4
4C^Y///n55557M555Cgl +wR6IJJJD()444'9::::<R:::Tw|444Fv;;/////;//r   c                      dgfd} ddddd}t          j        |          }|                    d	|            |                                 d
         s
J d            dS )z5Test NaN loss detection and recovery during training.Fc                     | j         dk    rE| j        @d         s:| xj        t          j        t	          d                    z  c_        dd<   dS dS dS dS )zHInject NaN into loss during batch processing to test recovery mechanism.r$   Nr   nanT)epochtlosstorchtensorfloat)rE   nan_injecteds    r   
inject_nanz%test_nan_recovery.<locals>.inject_nan   sb    =A'-";LQRO";MMU\%,,777MM"LOOO ";";";";r   r"   r   r#      )r&   r   r'   r(   r*   on_train_batch_endr   zNaN injection failedN)r
   r8   r   r9   )ra   r+   rE   r`   s      @r   test_nan_recoveryrd      s    7L# # # # # &WXYYI%	:::G-z:::MMOOO?22222?22r   )r?   unittestr   r]   testsr   r   ultralyticsr   ultralytics.cfgr   ultralytics.engine.exporterr   ultralytics.models.yolor	   r
   r   ultralytics.utilsr   r   r   r   r    rJ   rQ   rW   rd    r   r   <module>rm      s   


                      # # # # # # 0 0 0 0 0 0 = = = = = = = = = = > > > > > > > > > >" " "
  %+ %+ %+P++ ++ ++\0 0 063 3 3 3 3r   