
    .hL                        d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZm	Z	m
Z
 d dlmZmZ d dlmZmZmZ d dlmZ ej(                  j*                  d        Zej(                  j/                   edd	
       d      d        Zej(                  j/                   edd	
       d      d        Zej(                  j/                  dd      ej(                  j/                   edd	
       d      d               Zej(                  j/                   edd	
       d      d        Zej(                  j/                   edd	
       d      d        Zy)    N)Path)MODELSOURCETMP)YOLOdownload)
ASSETS_URLDATASETS_DIRSETTINGS)check_requirementsc                  f    dt         d<   t        d      j                  ddddd	       dt         d<   y
)z/Test training with TensorBoard logging enabled.Ttensorboardyolo11n-cls.yaml
imagenet10       FcpudataimgszepochsplotsdeviceNr   r   train     U/var/www/html/ai-service/venv/lib/python3.12/site-packages/tests/test_integrations.pytest_tensorboardr      s9     #H]	""BqPU^c"d#H]r   rayF)installzray[tune] not installed)reasonc            
      H    t        d      j                  dddddddd       y	)
z:Tune YOLO model using Ray for hyperparameter optimization.r   Tr      r   Fr   )use_rayr   grace_period
iterationsr   r   r   r   N)r   tuner   r   r   test_model_ray_tuner)      s1     		!!<aARXYafot " r   mlflowzmlflow not installedc                  f    dt         d<   t        d      j                  ddddd	       dt         d<   y
)z+Test training with MLflow tracking enabled.Tr*   r   r   r   r   Fr   r   Nr   r   r   r   test_mlflowr,   !   s9     HX	""BqPU^c"dHXr   TzQTest failing in scheduled CI https://github.com/ultralytics/ultralytics/pull/8868c                     ddl } dt        d<   d}|t        j                  d<   dt        j                  d<   t	        d	      j                  d
dddd       | j                         j                  j                  }|dk(  sJ d       | j                         j                  j                  }dt        j                  d<   t	        d	      j                  d
dddd       | j                  |      j                  j                  }|dk(  sJ d       t        j                  j                  dd       t	        d	      j                  d
dddd       | j                  |      j                  j                  }|dk(  sJ d       dt        d<   y)zVEnsure MLflow run status matches MLFLOW_KEEP_RUN_ACTIVE environment variable settings.r   NTr*   zTest Run
MLFLOW_RUNTrueMLFLOW_KEEP_RUN_ACTIVEr   r   r   r$   Fr   r   RUNNINGz<MLflow run should be active when MLFLOW_KEEP_RUN_ACTIVE=TrueFalse)run_idFINISHEDz<MLflow run should be ended when MLFLOW_KEEP_RUN_ACTIVE=FalsezLMLflow run should be ended by default when MLFLOW_KEEP_RUN_ACTIVE is not set)r*   r   osenvironr   r   
active_runinfostatusr3   get_runpop)r*   run_namer9   r3   s       r   test_mlflow_keep_run_activer=   )   sp    HXH'BJJ| ,2BJJ'(	""BqPU^c"d %%,,FY^ ^^ %%,,F ,3BJJ'(	""BqPU^c"d^^6^*//66FZ_!__ JJNN+T2	""BqPU^c"d^^6^*//66FZo!ooHXr   tritonclientztritonclient[all] not installedc                     t        d       ddlm}  d}t        dz  }||z  }t	        t
              j                  dd      }|d	z  j                  dd
       t        |      j                  |d	z  dz         |dz  j                          d}t        j                  d| d       t        j                  d| d| dd      j                  d      j                         } | ddd      }t!        d      D ]9  }t#        j$                  t&              5  |j)                  |      sJ 	 ddd        n  t	        d| d      t.               t        j                  d| d       y# 1 sw Y   nxY wt+        j,                  d       )z:Test NVIDIA Triton Server functionalities with YOLO model.ztritonclient[all]r   )InferenceServerClientyolotriton_repoonnxT)formatdynamic1)parentsexist_okz
model.onnxzconfig.pbtxtz%nvcr.io/nvidia/tritonserver:23.09-py3zdocker pull )shellzdocker run -d --rm -v z:/models -p 8000:8000 z( tritonserver --model-repository=/modelszutf-8zlocalhost:8000F)urlverbosessl
   Nr$   zhttp://localhost:8000/detectzdocker kill )r   tritonclient.httpr@   r   r   r   exportmkdirr   renametouch
subprocesscallcheck_outputdecodestriprange
contextlibsuppress	Exceptionis_model_readytimesleepr   )	r@   
model_namerB   triton_modelftagcontainer_idtriton_client_s	            r   test_tritonrg   I   s    *+7 J%K+L 	U&$7A Ctd;GNN<#%45N"))+ 2C OOl3%(5 	$[M1GuLtu	
 
	  *.>SXYM 2Y   + 	 //
;;;	 	 :D!*	.9&A OOl<.1>	 	 	

1s   E((E1	zfaster-coco-evalzfaster-coco-eval not installedc                      ddl m}  ddlm} ddlm} ddddd	} | |
      } |        d|_        t        t         dt        dz         |j                  |j                        }ddddd	} ||
      } |        d|_        t        t         dt        dz         |j                  |j                        }ddddd	} ||
      } |        d|_        t        t         dt        dz         |j                  |j                        }y)zGValidate YOLO model predictions on COCO dataset using faster-coco-eval.r   )DetectionValidator)PoseValidator)SegmentationValidatorz
yolo11n.ptz
coco8.yamlT@   )modelr   	save_jsonr   )argsz/instances_val2017.jsonzcoco8/annotations)dirzyolo11n-seg.ptzcoco8-seg.yamlzcoco8-seg/annotationszyolo11n-pose.ptzcoco8-pose.yamlz/person_keypoints_val2017.jsonzcoco8-pose/annotationsN)ultralytics.models.yolo.detectri   ultralytics.models.yolo.poserj   ultralytics.models.yolo.segmentrk   is_cocor   r	   r
   	eval_jsonstats)ri   rj   rk   ro   	validatorrf   s         r   test_faster_coco_evalrx   }   s    B:E!<dUWXD"-IKI
|23H[9[\IOO,A%/?d]_`D%40IKI
|23H_9_`IOO,A&0APT_abD4(IKI
|9:Og@ghIOO,Ar   )rZ   r5   rT   r^   pathlibr   pytesttestsr   r   r   ultralyticsr   r   ultralytics.utilsr	   r
   r   ultralytics.utils.checksr   markslowr   skipifr)   r,   r=   rg   rx   r   r   r   <module>r      sr    	     $ $ & @ @ 7 $ $ *5%@@Ibc d *8UCCLbc d D!tu*8UCCLbc d v< *>5IIRst0? u0?f *+=uMMVvw- x-r   