
    /j5                        d dl 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ddZd Zd d!dZd Zd"d#dZd"d#dZd$dZdS )%    )annotations)HUBDatasetStats)Auth)HUBTrainingSession)HUB_API_ROOTHUB_WEB_ROOTPREFIX)LOGGERSETTINGSchecks)
r   r	   r   check_datasetexport_fmts_hubexport_model
get_exportloginlogoutreset_modelNTapi_key
str | Nonesaveboolreturnc                   t          j        d           ddlm} t           d}t          j        d          }| p|}|r
|dk    rd|ind} ||          }|j        rX|r&|j        |k    rt          j	        d|j        i           |j        | k    s|sdnd	}t          j        t           |            d
S t          j        t           d| d           dS )a\  Log in to the Ultralytics HUB API using the provided API key.

    The session is not stored; a new session is created when needed using the saved SETTINGS or the HUB_API_KEY
    environment variable if successfully authenticated.

    Args:
        api_key (str, optional): API key to use for authentication. If not provided, it will be retrieved from SETTINGS
            or HUB_API_KEY environment variable.
        save (bool, optional): Whether to save the API key to SETTINGS if authentication is successful.

    Returns:
        (bool): True if authentication is successful, False otherwise.
    zhub-sdk>=0.0.12r   )	HUBClientz/settings?tab=api+keysr    Nu!   New authentication successful ✅u   Authenticated ✅TzGet API key from z" and then run 'yolo login API_KEY'F)r   check_requirementshub_sdkr   r   r   getauthenticatedr   updater
   infor	   )	r   r   r   api_key_url	saved_key
active_keycredentialsclientlog_messages	            ]/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/ultralytics/hub/__init__.pyr   r      s"    /000!!!!!!!999KY''I%IJ-7VJ"<L<L9j))RVKY{##F   	9FNi//OY7888 4:>W3L3LT_3L//ex 	 	v,{,,---t 	v_____```u    c                 R    dt           d<   t          j        t           d           dS )zJLog out of Ultralytics HUB by removing the API key from the settings file.r   r   u2   logged out ✅. To log in again, use 'yolo login'.N)r   r
   r!   r	    r)   r(   r   r   D   s+    HY
K6MMMNNNNNr)   r   model_idstrc                    ddl }|                    t           dd| idt                      j        i          }|j        dk    rt          j        t           d           dS t          j	        t           d	|j         d
|j
                    dS )z,Reset a trained model to an untrained state.r   Nz/model-resetmodelId	x-api-keyjsonheaders   zModel reset successfullyzModel reset failure  )requestspostr   r   r   status_coder
   r!   r	   warningreason)r,   r6   rs      r(   r   r   J   s    OOO3339h:OZegkgmgmguYvwwA}v777888
NfLL!-LL!(LLMMMMMr)   c                 d    ddl m}  g t           |             d         dd                   ddS )z.Return a list of HUB-supported export formats.r   export_formatsArgument   Nultralytics_tfliteultralytics_coreml)ultralytics.engine.exporterr>   listr=   s    r(   r   r   U   sI    ::::::`T.."":.qrr233`5I`K_``r)   torchscriptformatc                n   ddl }|t                      v sJ d| dt                                   |                    t           d|  dd|idt	                      j        i	          }|j        d
k    s#J t           | d|j         d|j                     t          j
        t           | d           dS )a>  Export a model to a specified format for deployment via the Ultralytics HUB API.

    Args:
        model_id (str): The ID of the model to export. An empty string will use the default model.
        format (str): The format to export the model to. Must be one of the supported formats returned by
            export_fmts_hub().

    Raises:
        AssertionError: If the specified format is not supported or if the export request fails.

    Examples:
        >>> from ultralytics import hub
        >>> hub.export_model(model_id="your_model_id", format="torchscript")
    r   NUnsupported export format '', valid formats are z/v1/models/z/exportrF   r0   r1   r4   z export failure r5   u    export started ✅)r6   r   r7   r   r   r   r8   r	   r:   r
   r!   r,   rF   r6   r;   s       r(   r   r   \   s     OOO_&&&&&(vf(v(vcrctct(v(v&&&55H555Xv<NYdfjflflftXu 	 	 	A =CF!^F!^!^AM!^!^TUT\!^!^
K66666677777r)   c                v   ddl }|t                      v sJ d| dt                                   |                    t           dt	                      j        | |ddt	                      j        i          }|j        d	k    s#J t           | d
|j         d|j                     |	                                S )a  Retrieve an exported model in the specified format from Ultralytics HUB using the model ID.

    Args:
        model_id (str): The ID of the model to retrieve from Ultralytics HUB.
        format (str): The export format to retrieve. Must be one of the supported formats returned by export_fmts_hub().

    Returns:
        (dict): JSON response containing the exported model information.

    Raises:
        AssertionError: If the specified format is not supported or if the API request fails.

    Examples:
        >>> from ultralytics import hub
        >>> result = hub.get_export(model_id="your_model_id", format="torchscript")
    r   NrH   rI   z/get-export)apiKeyr/   rF   r0   r1   r4   z get_export failure r5   )
r6   r   r7   r   r   r   r8   r	   r:   r2   rJ   s       r(   r   r   u   s    " OOO_&&&&&(vf(v(vcrctct(v(v&&&$$$8vNNdffn- 	 	 	A
 =CF!bF!b!b!b!bXYX`!b!b6688Or)   pathtaskNonec                    t          | |                                           t          j        dt           d           dS )a  Check HUB dataset Zip file for errors before upload.

    Args:
        path (str): Path to data.zip (with data.yaml inside data.zip).
        task (str): Dataset task. Options are 'detect', 'segment', 'pose', 'classify', 'obb'.

    Examples:
        >>> from ultralytics.hub import check_dataset
        >>> check_dataset("path/to/coco8.zip", task="detect")  # detect dataset
        >>> check_dataset("path/to/coco8-seg.zip", task="segment")  # segment dataset
        >>> check_dataset("path/to/coco8-pose.zip", task="pose")  # pose dataset
        >>> check_dataset("path/to/dota8.zip", task="obb")  # OBB dataset
        >>> check_dataset("path/to/imagenet10.zip", task="classify")  # classification dataset

    Notes:
        Download *.zip files from https://github.com/ultralytics/hub/tree/main/example_datasets
        i.e. https://github.com/ultralytics/hub/raw/main/example_datasets/coco8.zip for coco8.zip.
    rM   rN   u7   Checks completed correctly ✅. Upload this dataset to z/datasets/.N)r   get_jsonr
   r!   r   rQ   s     r(   r   r      sE    & D)))22444
Kc,cccdddddr)   )NT)r   r   r   r   r   r   )r   )r,   r-   )r   rE   )r,   r-   rF   r-   )rM   r-   rN   r-   r   rO   )
__future__r   ultralytics.data.utilsr   ultralytics.hub.authr   ultralytics.hub.sessionr   ultralytics.hub.utilsr   r   r	   ultralytics.utilsr
   r   r   __all__r   r   r   r   r   r   r   r+   r)   r(   <module>rZ      sD   # " " " " " 2 2 2 2 2 2 % % % % % % 6 6 6 6 6 6 D D D D D D D D D D 6 6 6 6 6 6 6 6 6 6( ( ( ( (VO O ON N N N Na a a8 8 8 8 82    :e e e e e er)   