o
    wi6                     @  s  d Z ddlm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l
Z
dZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d+Z0d,Z1d-Z2d.Z3d/Z4d0Z5d1Z6d2Z7d3Z8d4Z9d5Z:d6Z;d7Z<d8Z=d9Z>d:Z?d;Z@d<ZAd=ZBd>ZCd?ZDd@ZEdAZFdBZGdCZHdDZIdEZJdFZKdGZLdHZMdIZNdJZOdKZPddNdOZQ	dddWdXZRdddYdZZSddd[d\ZTdd]d^ZUdd_d`ZVddadbZWdddcddZXddedfZYddgdhZZ	i	dddkdlZ[	dddmdnZ\	dddpdqZ]	dddrdsZ^dddvdwZ_		dddydzZ`	ddd{d|Za	ddd}d~Zb	ddddZc	ddddZd	ddddZe	ddddZf	ddddZg	ddddZhddddZi	ddddZjddddZk	ddddZl	ddddZm	ddddZn	ddddZo	ddddZp	ddddZqddddZrddddZsddddZtddddZuddddZv	ddddZwddddZxddddZydddZzddddZ{ddddZ|ddddZ}ddddZ~ddddZdddZdS )a  All of W&B's environment variables.

Getters and putters for all of them should go here. That way it'll be easier to
avoid typos with names and be consistent about environment variables' semantics.

Environment variables are not the authoritative source for these values in many
cases.
    )annotationsN)MutableMapping)PathWANDB_CONFIG_PATHSWANDB_SWEEP_PARAM_PATHWANDB_SHOW_RUNWANDB_DEBUGWANDB_SILENTWANDB_QUIETWANDB_INITED	WANDB_DIRWANDB_DESCRIPTION
WANDB_NAMEWANDB_NOTEBOOK_NAMEWANDB_NOTESWANDB_USERNAMEWANDB_USER_EMAILWANDB_PROJECTWANDB_ENTITYWANDB_ORGANIZATIONWANDB_BASE_URLWANDB_APP_URLWANDB_PROGRAM
WANDB_ARGS
WANDB_MODEWANDB_START_METHODWANDB_RESUMEWANDB_RUN_IDWANDB_RUN_STORAGE_IDWANDB_RUN_GROUPWANDB_RUN_DIRWANDB_SWEEP_IDWANDB_HTTP_TIMEOUTWANDB_FILE_PUSHER_TIMEOUTWANDB_API_KEYWANDB_IDENTITY_TOKEN_FILEWANDB_CREDENTIALS_FILEWANDB_JOB_TYPEWANDB_DISABLE_CODEWANDB_DISABLE_GITWANDB_GIT_ROOTWANDB_SAVE_CODE
WANDB_TAGSWANDB_IGNORE_GLOBSWANDB_ERROR_REPORTINGWANDB_CORE_DEBUGWANDB_DOCKERWANDB_AGENT_REPORT_INTERVALWANDB_AGENT_KILL_DELAYWANDB_AGENT_DISABLE_FLAPPING WANDB_AGENT_MAX_INITIAL_FAILURESWANDB_CRASH_NOSYNC_TIMEWANDB_MAGIC
WANDB_HOSTWANDB_ANONYMOUSWANDB_JUPYTERWANDB_CONFIG_DIRWANDB_DATA_DIRWANDB_ARTIFACT_DIR(WANDB_ARTIFACT_FETCH_FILE_URL_BATCH_SIZEWANDB_CACHE_DIRWANDB_INSECURE_DISABLE_SSLWANDB_SERVICEWANDB_SENTRY_DSNWANDB_INIT_TIMEOUTWANDB_GIT_COMMITWANDB_GIT_REMOTE_URLWANDB_X_EXECUTABLEWANDB_LAUNCH_QUEUE_NAMEWANDB_LAUNCH_QUEUE_ENTITYWANDB_LAUNCH_TRACE_IDWANDB_ENABLE_DCGM_PROFILING_WANDB_USE_V1_ARTIFACTSreturn	list[str]c                   C  s   g t ttttttttt	t
ttttt tttttttttttttttttt S )zThese are env keys that shouldn't change within a single process.

    We use this to maintain certain values between multiple calls to wandb.init within a single process.
    )!DIRENTITYPROJECTAPI_KEYIGNOREDISABLE_CODEDISABLE_GITDOCKERMODEBASE_URLERROR_REPORTINGCRASH_NOSYNC_TIMEMAGICUSERNAME
USER_EMAILSILENTCONFIG_PATHS	ANONYMOUS	RUN_GROUPJOB_TYPETAGSRESUMEAGENT_REPORT_INTERVALHTTP_TIMEOUTHOSTDATA_DIRARTIFACT_DIR"ARTIFACT_FETCH_FILE_URL_BATCH_SIZE	CACHE_DIRUSE_V1_ARTIFACTSDISABLE_SSLIDENTITY_TOKEN_FILECREDENTIALS_FILE rn   rn   =/home/ubuntu/.local/lib/python3.10/site-packages/wandb/env.pyimmutable_keys_   s   	
 !"rp   varstrdefault
str | NoneenvMutableMapping | Noneboolc                 C  sH   |d u rt j}|| |}t|tsdS zt|W S  ty#   Y dS w NF)osenvironget
isinstancerr   	strtobool
ValueError)rq   rs   ru   valrn   rn   ro   _env_as_bool   s   

r   c                 C  s   t t| |dS )Nrs   ru   )r   DEBUGr   rn   rn   ro   is_debug   s   r   c                 C  s   | d u rt j} | tdkS )Noffline)ry   rz   r{   rU   ru   rn   rn   ro   
is_offline   s   r   c                   C     t tddS Nfalsers   )r   QUIETrn   rn   rn   ro   is_quiet      r   c                   C  r   r   )r   r\   rn   rn   rn   ro   	is_silent   r   r   c                   C  r   )NTruer   )r   rW   rn   rn   rn   ro   error_reporting_enabled   r   r   c                 C  s   t t| dpt S )Nr   )r   
CORE_DEBUGr   r   rn   rn   ro   
core_debug   s   r   c                   C  r   NFalser   )r   rk   rn   rn   rn   ro   ssl_disabled   r   r   c                   C  r   )a  Checks whether collecting profiling metrics for Nvidia GPUs using DCGM is requested.

    Note: Enabling this feature can lead to increased resource usage
          compared to standard monitoring.
          Requires the `nvidia-dcgm` service to be running on the machine.
    r   r   )r   ENABLE_DCGM_PROFILINGrn   rn   rn   ro   dcgm_profiling_enabled   s   r   T
bool | strc                 C     |d u rt j}|t| S N)ry   rz   r{   rW   r   rn   rn   ro   get_error_reporting   s   r   c                 C  r   r   )ry   rz   r{   RUN_IDr   rn   rn   ro   get_run      r   list[str] | Nonec                 C  sT   |d u rt j}|tr!z
t|tdW S  ty    Y d S w | p)tjdd  S )Nz[]   )	ry   rz   r{   ARGSjsonloadsr~   sysargvr   rn   rn   ro   get_args   s   
r   c                 C  r   r   )ry   rz   r{   rT   r   rn   rn   ro   
get_docker   r   r      intc                 C     |d u rt j}t|t| S r   )ry   rz   r   r{   rd   r   rn   rn   ro   get_http_timeout      r   
int | Nonec                 C  s*   |d u rt j}|t| }|rt|S d S r   )ry   rz   r{   FILE_PUSHER_TIMEOUTr   )rs   ru   timeoutrn   rn   ro   get_file_pusher_timeout   s   r   c                 C  s.   |d u rt j}|t}|d ur|dS | S )N,)ry   rz   r{   rQ   split)rs   ru   ignorern   rn   ro   
get_ignore   s   

r   c                 C  r   r   )ry   rz   r{   rO   r   rn   rn   ro   get_project  r   r   c                 C  r   r   )ry   rz   r{   rZ   r   rn   rn   ro   get_username  r   r   c                 C  r   r   )ry   rz   r{   r[   r   rn   rn   ro   get_user_email  r   r   c                 C  r   r   )ry   rz   r{   rN   r   rn   rn   ro   
get_entity#  r   r   c                 C  r   r   )ry   rz   r{   ORGANIZATIONr   rn   rn   ro   get_organization,  r   r   c                 C  r   r   )ry   rz   r{   rV   r   rn   rn   ro   get_base_url5  r   r   c                 C  r   r   )ry   rz   r{   APP_URLr   rn   rn   ro   get_app_url>  r   r   c                 C  r   r   )ry   rz   rw   r{   SHOW_RUNr   rn   rn   ro   get_show_runG  r   r   c                 C  r   r   )ry   rz   r{   DESCRIPTIONr   rn   rn   ro   get_descriptionN  r   r    c                 C  s*   |d u rt j}dd |t| dD S )Nc                 S  s   g | ]}|r|qS rn   rn   ).0tagrn   rn   ro   
<listcomp>[  s    zget_tags.<locals>.<listcomp>r   )ry   rz   r{   ra   r   r   rn   rn   ro   get_tagsW  s   r   c                 C  r   r   )ry   rz   r{   rM   r   rn   rn   ro   get_dir^     r   c                 C  r   r   )ry   rz   r{   r]   r   rn   rn   ro   get_config_pathsf  r   r   c                 C  B   |d u rt j}|t| }zt|}W |S  ty    d }Y |S w r   )ry   rz   r{   rc   r   r~   rs   ru   r   rn   rn   ro   get_agent_report_intervaln     
r   c                 C  r   r   )ry   rz   r{   AGENT_KILL_DELAYr   r~   r   rn   rn   ro   get_agent_kill_delay{  r   r   c                 C  r   r   )ry   rz   r{   rX   r   r~   r   rn   rn   ro   get_crash_nosync_time  r   r   c                 C  s   |d u rt j}|t| }|S r   )ry   rz   r{   rY   r   rn   rn   ro   	get_magic  s   r   c                 C  s(   t d}| d u rtj} | t|}|S Nwandb)platformdirsuser_data_dirry   rz   r{   rf   ru   default_dirr   rn   rn   ro   get_data_dir  s
   
r   c                 C  s8   t jdd}| d u rt j} | t|}t jt|S )N.	artifacts)ry   pathjoinrz   r{   rg   abspathrr   r   rn   rn   ro   get_artifact_dir  s
   r   c                 C  s&   d}| d u r	t j} t| t|}|S )Ni  )ry   rz   r   r{   rh   )ru   default_batch_sizer   rn   rn   ro   &get_artifact_fetch_file_url_batch_size  s
   r   r   c                 C  s    | pt j} t| ttdS r   )ry   rz   r   r{   ri   r   user_cache_dirr   rn   rn   ro   get_cache_dir  s   
r   c                 C  s"   | d u rt j} t| td}|S rx   )ry   rz   rw   r{   rj   ru   r   rn   rn   ro   get_use_v1_artifacts  s   r   c                 C  sB   |d u rt j}|t| }zt|}W |S  ty    | }Y |S w r   )ry   rz   r{   AGENT_MAX_INITIAL_FAILURESr   r~   r   rn   rn   ro   get_agent_max_initial_failures  r   r   valueNonec                 C  s   |d u rt j}| |t< d S r   )ry   rz   rN   r   ru   rn   rn   ro   
set_entity  s   r   c                 C  s   |d u rt j}| p
d|t< d S )Nuncategorized)ry   rz   rO   r   rn   rn   ro   set_project  s   r   c                  C  s"   t tdd} t tdd}| o| S r   )r   	SAVE_CODErR   )	save_codecode_disabledrn   rn   ro   should_save_code  s   
r   c                 C  s6   | d u rt j} | jtdd}t|tr| dk}|S )Nr   r   r   )ry   rz   r{   rS   r|   rr   lowerr   rn   rn   ro   disable_git  s   
r   c                 C     | d u rt j} | td }|S r   )ry   rz   r{   LAUNCH_QUEUE_NAMEr   rn   rn   ro   get_launch_queue_name     r   c                 C  r   r   )ry   rz   r{   LAUNCH_QUEUE_ENTITYr   rn   rn   ro   get_launch_queue_entity  r   r   c                 C  r   r   )ry   rz   r{   LAUNCH_TRACE_IDr   rn   rn   ro   get_launch_trace_id  r   r   c                 C  s"   |du rt j}|t| }t|S )zRetrieve the path for the credentials file used to save access tokens.

    The credentials file path can be set via an environment variable, otherwise
    the default path is used.
    N)ry   rz   r{   rm   r   )rs   ru   credentials_filern   rn   ro   get_credentials_file  s   r   r   c                 C  s.   |   } | dv r
dS | dv rdS td| )zConvert a string representation of truth to true or false.

    Copied from distutils. distutils was removed in Python 3.12.
    )yyesttrueon1T)nnofr   off0Fzinvalid truth value )r   r~   )r   rn   rn   ro   r}     s   r}   )rK   rL   )NN)rq   rr   rs   rt   ru   rv   rK   rw   )rs   rt   ru   rv   rK   rw   r   )ru   rv   rK   rw   )rK   rw   )rs   rt   rK   rw   )TN)rs   r   ru   rv   rK   r   )rs   rt   ru   rv   rK   rt   )rs   r   ru   rv   rK   r   )r   N)rs   r   ru   rv   rK   r   )rs   r   ru   rv   rK   r   )r   N)rs   rr   ru   rv   rK   rL   )rs   rt   ru   rv   rK   r   )ru   rv   rK   rr   )ru   rv   rK   r   )ru   rv   rK   r   )r   rr   ru   rv   rK   r   )ru   rv   rK   rt   )rs   rr   ru   rv   rK   r   )r   rr   rK   rw   )__doc__
__future__r   r   ry   r   collections.abcr   pathlibr   r   r]   SWEEP_PARAM_PATHr   r   r\   r   INITEDrM   r   NAMENOTEBOOK_NAMENOTESrZ   r[   rO   rN   r   rV   r   PROGRAMr   rU   START_METHODrb   r   RUN_STORAGE_IDr_   RUN_DIRSWEEP_IDrd   r   rP   rl   rm   r`   rR   rS   GIT_ROOTr   ra   rQ   rW   r   rT   rc   r   AGENT_DISABLE_FLAPPINGr   rX   rY   re   r^   JUPYTER
CONFIG_DIRrf   rg   rh   ri   rk   SERVICE
SENTRY_DSNINIT_TIMEOUT
GIT_COMMITGIT_REMOTE_URL_EXECUTABLEr   r   r   r   rj   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   rn   rn   rn   ro   <module>   s,   	
,





	





					
	