
    |h                        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 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)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     V/var/www/html/test/engine/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statusr2   get_runpop)r)   run_namer8   r2   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_namerA   triton_modelftagcontainer_idtriton_client_s	            r   test_tritonrf   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
} | |      } |        d|_        t        | dt        dz         |j                  |j                        }dddd	d
} ||      } |        d|_        t        | dt        dz         |j                  |j                        }dddd	d
} ||      } |        d|_        t        | dt        dz         |j                  |j                        }y)zGValidate YOLO model predictions on COCO dataset using faster-coco-eval.r   )DetectionValidator)PoseValidator)SegmentationValidatorz?https://github.com/ultralytics/assets/releases/download/v0.0.0/z
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.detectrh   ultralytics.models.yolo.poseri   ultralytics.models.yolo.segmentrj   is_cocor   r	   	eval_jsonstats)rh   ri   rj   rI   rn   	validatorre   s          r   test_faster_coco_evalrw   }   s    B:E LC!<dUWXD"-IKIu*+@S1STIOO,A%/?d]_`D%40IKIu*+@W1WXIOO,A&0APT_abD4(IKIu12G_8_`IOO,Ar   )rY   r4   rS   r]   pathlibr   pytesttestsr   r   r   ultralyticsr   r   ultralytics.utilsr	   r
   ultralytics.utils.checksr   markslowr   skipifr(   r+   r<   rf   rw   r   r   r   <module>r      so    	     $ $ & 4 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   