a
    yf                     @   s2  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eddd	 d
ddd Zejjeddd	 dddd Zejjdddejjeddd	 dddd Zejjeddd	 dddd Zejjeddd	 dddd ZdS )    N)Path)MODELSOURCETMP)YOLOdownload)DATASETS_DIRSETTINGS)check_requirementsZrayF)installzray[tune] not installed)reasonc                
   C   s"   t djddddddddd d	S )
z:Tune YOLO model using Ray for hyperparameter optimization.yolo11n-cls.yamlT
imagenet10       Fcpu)Zuse_raydataZgrace_periodZ
iterationsimgszepochsplotsdeviceN)r   Ztune r   r   S/var/www/html/django/DPS/env/lib/python3.9/site-packages/tests/test_integrations.pytest_model_ray_tune   s    r   mlflowzmlflow not installedc                   C   s,   dt d< tdjdddddd	 dt d< d
S )zQTest training with MLflow tracking enabled (see https://mlflow.org/ for details).Tr   r   r   r      Fr   r   r   r   r   r   N)r	   r   trainr   r   r   r   test_mlflow   s    r   TzQTest failing in scheduled CI https://github.com/ultralytics/ultralytics/pull/8868c                  C   s   ddl } dtd< d}|tjd< dtjd< td	jd
ddddd |  jj}|dks\J d|  jj	}dtjd< td	jd
ddddd | j
|djj}|dksJ dtjdd td	jd
ddddd | j
|djj}|dksJ ddtd< dS )zVEnsure MLflow run status matches MLFLOW_KEEP_RUN_ACTIVE environment variable settings.r   NTr   zTest RunZ
MLFLOW_RUNTrueZ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   Z
active_runinfostatusr"   Zget_runpop)r   Zrun_namer'   r"   r   r   r   test_mlflow_keep_run_active!   s$    


r)   Ztritonclientztritonclient[all] not installedc            	   	   C   sJ  t d ddlm}  d}td }|| }ttjddd}|d	 jddd
 t|	|d	 d  |d 
  d}tjd| dd tjd| d| dddd }| dddd}tdD ]Z}tt0 ||sJ W d    qW d   n1 s0    Y  td qtd| dt tjd| dd dS )z
    Test NVIDIA Triton Server functionalities with YOLO model.

    See https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver.
    ztritonclient[all]r   )InferenceServerClientZyolotriton_repoZonnxT)formatZ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
   Ztritonclient.httpr*   r   r   r   Zexportmkdirr   renametouch
subprocesscallcheck_outputdecodestriprange
contextlibsuppress	ExceptionZis_model_readytimesleepr   )	r*   Z
model_namer+   Ztriton_modelftagZcontainer_idZtriton_client_r   r   r   test_tritonA   s4    
2rG   Zpycocotoolszpycocotools not installedc                  C   s   ddl m}  ddlm} ddlm} d}dddd	d
}| |d}|  d|_t| dtd d |	|j
}dddd	d
}||d}|  d|_t| dtd d |	|j
}dddd	d
}||d}|  d|_t| dtd d |	|j
}dS )zBValidate YOLO model predictions on COCO dataset using pycocotools.r   )DetectionValidator)PoseValidator)SegmentationValidatorz?https://github.com/ultralytics/assets/releases/download/v0.0.0/z
yolo11n.ptz
coco8.yamlT@   )modelr   Z	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)Zultralytics.models.yolo.detectrH   Zultralytics.models.yolo.poserI   Zultralytics.models.yolo.segmentrJ   Zis_cocor   r   Z	eval_jsonstats)rH   rI   rJ   r1   rM   	validatorrF   r   r   r   test_pycocotoolsy   s,    


rQ   )r?   r$   r9   rB   pathlibr   Zpytesttestsr   r   r   Zultralyticsr   r   Zultralytics.utilsr   r	   Zultralytics.utils.checksr
   markZskipifr   r   r)   rG   rQ   r   r   r   r   <module>   s(   


7