
    )`i                         d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZ dZ G d de          Z G d d	          Z G d
 d          Zej        ej        ddej        ej        ddiZdS )z+SageMaker-specific configuration constants.    N)AnyDictOptional)	BaseModel
ConfigDictFieldfield_validatormodel_validator
SAGEMAKER_c                      e Zd ZU dZ ed          Z edd          Zee	d<    edd	d
          Z
ee	d<    edd          Zee         e	d<   edd            Z ed          ededeeef         fd                        Z edd          ededefd                        Z edd          ededefd                        ZdS )SageMakerConfiga  Pydantic model for SageMaker configuration.

    Automatically loads configuration from environment variables with SAGEMAKER_ prefix.
    Example: SAGEMAKER_ENABLE_STATEFUL_SESSIONS=true -> enable_stateful_sessions=True

    Only fields defined in this model are loaded. Other SAGEMAKER_* env vars
    (like SAGEMAKER_MODEL_PATH) are ignored.

    Usage:
        # Create from environment variables
        config = SagemakerConfig.from_env()

        # Or just instantiate (automatically loads from env)
        config = SagemakerConfig()

        # Override specific values
        config = SagemakerConfig(enable_stateful_sessions=True)
    ignore)extraFz,Enable stateful sessions for the applicationdefaultdescriptionenable_stateful_sessionsi  z"Session expiration time in secondsr   )r   r   gtsessions_expirationNz>Custom path for session storage (defaults to /dev/shm or temp)sessions_pathreturnc                      |             S )zCreate SagemakerConfig from environment variables.

        Returns:
            SagemakerConfig instance with values loaded from SAGEMAKER_* env vars
         )clss    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/model_hosting_container_standards/sagemaker/config.pyfrom_envzSageMakerConfig.from_env/   s     suu    before)modedatac                     d t           j                                        D             }t          |t                    ri ||S |S )a%  Load configuration from environment variables.

        Extracts SAGEMAKER_* environment variables and merges with any provided data.
        Provided data takes precedence over environment variables.
        Unknown SAGEMAKER_* variables are ignored (only defined fields are loaded).
        c                     i | ]N\  }}|                     t                    |t          t                    d                                          |OS )N)
startswithSAGEMAKER_ENV_VAR_PREFIXlenlower).0keyvals      r   
<dictcomp>z6SageMakerConfig.load_from_env_vars.<locals>.<dictcomp>B   sa     
 
 
S~~677
,--//06688#
 
 
r   )osenvironitems
isinstancedict)r   r    
env_configs      r   load_from_env_varsz"SageMakerConfig.load_from_env_vars8   sX    
 
J,,..
 
 

 dD!! 	*)j)D))r   vc                     t          |t                    r|S t          |t                    r|                                dv S t          |          S )z/Convert string values from env vars to boolean.)true1)r.   boolstrr&   r   r2   s     r   parse_bool_stringz!SageMakerConfig.parse_bool_stringM   sK     a 	Ha 	.7799--Awwr   c                     t          |t                    r|S t          |t                    rt          |          S t          |          S )z/Convert string values from env vars to integer.)r.   intr7   r8   s     r   parse_int_stringz SageMakerConfig.parse_int_stringW   sC     a 	Ha 	q66M1vvr   )r   r   )__name__
__module____qualname____doc__r   model_configr   r   r6   __annotations__r   r;   r   r   r7   classmethodr   r
   r   r   r1   r	   r9   r<   r   r   r   r   r      s         & :H---L &+U#Q& & &d     %u8        
 $)5T$ $ $M8C=   
    [ _(###c d38n    [ $#& _/h???# $    [ @? _*:::     [ ;:  r   r   c                       e Zd ZdZdZdZdS )SageMakerEnvVarsz%SageMaker environment variable names.CUSTOM_SCRIPT_FILENAMESAGEMAKER_MODEL_PATHN)r=   r>   r?   r@   rF   rG   r   r   r   rE   rE   b   s"        //51r   rE   c                       e Zd ZdZdZdZdS )SageMakerDefaultszSageMaker default values.zmodel.pyz/opt/ml/model/N)r=   r>   r?   r@   SCRIPT_FILENAMESCRIPT_PATHr   r   r   rI   rI   i   s        ## O"KKKr   rI   z2Custom script filename to load (default: model.py)r   z8SageMaker model path directory (default: /opt/ml/model/))r@   r+   typingr   r   r   pydanticr   r   r   r	   r
   r$   r   rE   rI   rF   rJ   rG   rK   SAGEMAKER_ENV_CONFIGr   r   r   <module>rO      s)   1 1 				 & & & & & & & & & & S S S S S S S S S S S S S S' T T T T Ti T T Tn2 2 2 2 2 2 2 2# # # # # # # # +$4K. . )$0Q, ,	   r   