o
    xi                     @  s\   d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm	Z
 ddd	ZdddZdS )    )annotationsN)Any   )filesreturnboolc                   C  s   t jtjpdt jv S )z1Returns whether we're in a SageMaker environment.SM_TRAINING_ENV)ospathexistssm_filesSM_PARAM_CONFIGenviron r   r   V/home/ubuntu/.local/lib/python3.10/site-packages/wandb/integration/sagemaker/config.pyis_using_sagemaker   s   r   dict[str, Any]c                  C  s   i } t jtjrOt d| d< ttj2}t|	 D ]"\}}|
d}td|r1t|}n
td|r;t|}|| |< qW d   n1 sJw   Y  t jd }ruz| t| W | S  tjyt   tjdd	d
 Y | S w | S )a  Parses SageMaker configuration.

    Returns:
        A dictionary of SageMaker config keys/values
        or an empty dict if not found.
        SM_TRAINING_ENV is a json string of the
        training environment variables set by SageMaker
        and is only available when running in SageMaker,
        but not in local mode.
        SM_TRAINING_ENV is set by the SageMaker container and
        contains arguments such as hyperparameters
        and arguments passed to the training job.
    TRAINING_JOB_NAMEsagemaker_training_job_name"z	^-?[\d]+$z
^-?[.\d]+$Nr   z5Failed to parse SM_TRAINING_ENV not valid JSON string   )
stacklevel)r	   r
   r   r   r   getenvopenjsonloaditemsstriprematchintfloatr   getupdateloadsJSONDecodeErrorwarningswarn)conffidkeyvalcastenvr   r   r   parse_sm_config   s2   


	r.   )r   r   )r   r   )
__future__r   r   r	   r   r&   typingr    r   r   r   r.   r   r   r   r   <module>   s    
