
    [iy                     
   d dl Z d dlZd dl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mZ 	 d dlZdZn# eeeef$ r dZY nw xY w edg d          Zg dZg d	Zg d
Zg dZg dZd Zd Zd Zd Zd3d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' Z4d3d(Z5d)ee6e6f         fd*Z7d+ Z8d, Z9d- Z:d.;                                Z<d/ Z=d0 Z>d4d1Z?e@d2k    r e?             dS dS )5    N)
namedtuple)castDictTF	SystemEnv)torch_versionis_debug_buildcuda_compiled_versiongcc_versionclang_versioncmake_versionoslibc_versionpython_versionpython_platformis_cuda_availablecuda_runtime_versioncuda_module_loadingnvidia_driver_versionnvidia_gpu_modelscudnn_versionis_xpu_availablepip_versionpip_packagesconda_packageship_compiled_versionhip_runtime_versionmiopen_runtime_versioncaching_allocator_configis_xnnpack_availablecpu_info)torchnumpytritonoptree)zcuda-cudartz
cuda-cuptizcuda-librarieszcuda-openclz
cuda-nvrtczcuda-runtimecublascudnncufftcurandcusolvercusparsenccl	nvjitlinknvtx)zdpcpp-cpp-rtzintel-cmplr-lib-rtzintel-cmplr-lib-urzintel-cmplr-lic-rtzintel-opencl-rtzintel-sycl-rtmklzonemkl-sycl-blaszonemkl-sycl-dftzonemkl-sycl-lapackzonemkl-sycl-rngzonemkl-sycl-sparsezintel-openmptbbzimpi-rtz
impi-develonecclzoneccl-develz	intel-ptiumftcmlib)cudatoolkitsoumithr.   magma)mypyflake8onnxc                    t          |           t          u }t          j        | t          j        t          j        |          }|                                \  }}|j        }t                      dk    rd}nt          j	                    }|
                    |          }|
                    |          }||                                |                                fS )z%Return (return-code, stdout, stderr).)stdoutstderrshellwin32oem)typestr
subprocessPopenPIPEcommunicate
returncodeget_platformlocalegetpreferredencodingdecodestrip)	commandr<   p
raw_outputraw_errrcencoutputerrs	            J/var/www/icac/venv/lib/python3.11/site-packages/torch/utils/collect_env.pyrunrT   x   s    MMS E

u	 	 	A --//J	
B~~  )++s##F
..

Cv||~~syy{{**    c                 4     | |          \  }}}|dk    rdS |S )zIRun command using run_lambda; reads and returns entire output if rc is 0.r   N 
run_lambdarK   rO   out_s        rS   run_and_read_allr\      s*    G$$JBQ	QwwtJrU   c                      | |          \  }}}|dk    rdS t          j        ||          }|dS |                    d          S )zIRun command using run_lambda, returns the first regex match if it exists.r   N   )researchgroup)rY   rK   regexrO   rZ   r[   matchs          rS   run_and_parse_first_matchrd      sP    G$$JBQ	QwwtIeS!!E}t;;q>>rU   c                 f     | |          \  }}}|dk    rdS |                     d          d         S )zKRun command using run_lambda and returns first line if output is not empty.r   N
)splitrX   s        rS   run_and_return_first_linerh      s:    G$$JBQ	Qwwt99T??1rU   c                 :   t           t          z   t          z   t          z   t          j                            dd          }t          | d                    |                    }||S d	                    fd|
                                D                       S )N	CONDA_EXEcondaz{} listrf   c              3   ~   K   | ]6                     d           t          fdD                       2V  7dS )#c              3       K   | ]}|v V  	d S NrW   .0namelines     rS   	<genexpr>z/get_conda_packages.<locals>.<genexpr>.<genexpr>   s'      +N+NTDDL+N+N+N+N+N+NrU   N)
startswithanyrq   rs   patternss    @rS   rt   z%get_conda_packages.<locals>.<genexpr>   sq        s## ),+N+N+N+NX+N+N+N(N(N     rU   )CONDA_PATTERNSCOMMON_PATTERNSNVIDIA_PATTERNSONEAPI_PATTERNSr   environgetr\   formatjoin
splitlines)rY   rx   rk   rZ   s    `  rS   get_conda_packagesr      s    !O3oEWJNN;00E
:y'7'7'>'>
?
?C
{
99    NN$$     rU   c                 $    t          | dd          S )Nzgcc --versionzgcc (.*)rd   rY   s    rS   get_gcc_versionr      s    $Z+NNNrU   c                 $    t          | dd          S )Nzclang --versionzclang version (.*)r   r   s    rS   get_clang_versionr      s    $%'<  rU   c                 $    t          | dd          S )Nzcmake --versionz
cmake (.*)r   r   s    rS   get_cmake_versionr      s    $Z1BMRRRrU   c                     t                      dk    rd}t          | |d          S t                      }t          | |d          S )Ndarwinzkextstat | grep -i cudazcom[.]nvidia[.]CUDA [(](.*?)[)]zDriver Version: (.*?) )rF   rd   get_nvidia_smi)rY   cmdsmis      rS   get_nvidia_driver_versionr      sP    ~~!!'(?
 
 	
 

C$Z6OPPPrU   c                    t                      dk    s2t          rt          t          j        d          rt          j        j        t          rt          j                                        rt          j        j        Mt          j                            d          }t          |d          rd	                    |j
                  }nd}nd}t          j                            d           |z   S d S t                      }t          j        d          } | |d	z             \  }}}|dk    rd S t          j        |d|          S )
Nr   hipr   gcnArchNamez ({})NoGCNArchNameOnOldPyTorch z \(UUID: .+?\)z -L)rF   TORCH_AVAILABLEhasattrr!   versionr   cudais_availableget_device_propertiesr   r   get_device_namer   r_   compilesub)rY   propgcnArchr   
uuid_regexrO   rZ   r[   s           rS   get_gpu_infor      s!   ~~!! "EM5)) " M) 		>uz6688 		>} ,z77::4// :%nnT-=>>GG9GG:--d33g==t


C-..JC%K((JBQ	Qwwt6*b#&&&rU   c                 $    t          | dd          S )Nznvcc --versionzrelease .+ V(.*)r   r   s    rS   get_running_cuda_versionr      s    $Z1ACVWWWrU   c                    t                      dk    rxt          j                            dd          }t          j                            dd          }t          j                            |dd          }d                    ||          }nt                      d	k    rd
}nd} | |          \  }}}t          |          dk    s|dk    rg|dk    rat          j                            d          }|>t          j                            |          rt          j        	                    |          S dS t                      }	|                    d          D ]U}
t          j        	                    |
          }
t          j                            |
          r|	                    |
           V|	sdS t          |	          }t          |          dk    r|d         S d                    |          }d                    |          S )zHReturn a list of libcudnn.so; it's hard to tell which one is being used.r=   
SYSTEMROOT
C:\Windows	CUDA_PATHz%CUDA_PATH%System32wherez{} /R "{}\bin" cudnn*.dllr   z ls /usr/local/cuda/lib/libcudnn*z7ldconfig -p | grep libcudnn | rev | cut -d" " -f1 | revr   r^   CUDNN_LIBRARYNrf   z!Probably one of the following:
{})rF   r   r}   r~   pathr   r   lenisfilerealpathsetrg   addsorted)rY   system_root	cuda_path	where_cmd	cudnn_cmdrO   rZ   r[   l	files_setfnfilesresults                rS   get_cudnn_versionr      s   ~~  jnn\=AAJNN;>>	GLLj'BB	077	9MM			8	#	#
 7		M	I&&JBQ
3xx1}}qR1WWJNN?++=RW^^A..=7##A&&&tIiioo  Wb!!7>>" 	MM" t9E
5zzQQxYYuF/66v>>>rU   c                     d} t                      dk    rt          j                            dd          }t          j                            dd          }t          j                            |dd|           }t          j                            |d	|           }||g}|D ]8}t          j                            |          rd
                    |          }  n9| S )Nz
nvidia-smir=   r   r   PROGRAMFILESzC:\Program FileszNVIDIA CorporationNVSMIr   z"{}")rF   r   r}   r~   r   r   existsr   )r   r   program_files_rootlegacy_pathnew_pathsmiscandidate_smis          rS   r   r     s    
C~~  jnn\=AAZ^^N<OPPgll 4gs
 
 7<<Z==+&! 	 	Mw~~m,, mmM22 JrU   c                  x    t                      dk    rdS dD ]"} t          d|            \  }}}|dk    r| c S #dS )NlinuxN/Adpkgdnfyumzypperzwhich r   )rF   rT   )mgr_namerO   r[   s      rS   _detect_linux_pkg_managerr      s]    ~~  u4  ***++Aq77OOO 5rU   c                    t                      }|dk    rdS ddddddddddddd	}t          t          t          ||         d
                             }t          ||         d                   }|                    |          }t          | |          }||dk    rdS t          j        dd|                              d          }t          |          |k    rdS ||         S )Nr      zdpkg -l | grep {})field_indexrK   r^   zdnf list | grep {}zyum list | grep {}zzypper info {} | grep Versionr   r   rK   r   z + )
r   int_castr@   r   r\   r_   r   rg   r   )rY   pkg_namepkg_mgrgrep_versionr   r   retlsts           rS   get_linux_pkg_versionr   *  s   '))G%u *
 

 +
 

 +
 

 6
 
 L& 5l7&;M&JKKLLK<(344C
**X

C
:s
+
+C
{cRiiu
&sC
 
 
&
&s
+
+C
3xx;u{rU   c           
         g }t                      }|dk    reh dddhddhddhd                    t                      i           }|D ]3}t          | |          }|dk    r|                    d| d|            4|d	v rt          | d
          }	 t          j        |          }t          |          t          u r7|D ]3}|                    d|d          d|d          d|d          d           4n(|                    d|d          d|d          d           nN# t          $ rA}	|                    |           |                    t          |	                     Y d }	~	nd }	~	ww xY wd                    |          S )Nr   >   intel-opencl-icdlibze1
level-zerozintel-openclr   r   r   * z:	r=   cygwinzpowershell.exe "gwmi -Class Win32_PnpSignedDriver | where{$_.DeviceClass -eq \"DISPLAY\"            -and $_.Manufacturer -match \"Intel\"} | Select-Object -Property DeviceName,DriverVersion,DriverDate            | ConvertTo-Json"
DeviceName: DriverVersion (
DriverDate)rf   )rF   r~   r   r   appendr\   jsonloadsr?   list
ValueErrorr@   r   )
rY   r   platformpkgspkgvertxtobjoes
             rS   get_intel_gpu_driver_versionr   N  s   
C~~H7   
 
 
 
$ #'))2
.
.% 	&  	/ 	/C'
C88Ce||

-----...&&&
 
	*S//CCyyD    AJJXQ|_XX/0BXXaoXXX   
 

LO 4LLL8ILLLMMM 	 	 	JJsOOOJJs1vv	 99S>>s   B	D 
E&%7E!!E&c                 $   g }t                      }|dk    rt          | d          }|r	 t          j        |          }|                    dg           }t          |t                    r"|r |                    d |D                        n|                    d           nj# t          t          f$ rA}|                    |           |                    t          |                     Y d }~nd }~ww xY w|                    d           |dv rt          | d          }|r	 t          j        |          }t          |t                    r"|r |                    d |D                        n,|                    d	|                    d
d                      nc# t          $ rA}|                    |           |                    t          |                     Y d }~nd }~ww xY w|                    d           d                    |          S )Nr   zxpu-smi discovery -jdevice_listc              3   ,   K   | ]}d |d          V  dS )r   device_nameNrW   rq   devices     rS   rt   z(get_intel_gpu_onboard.<locals>.<genexpr>  s0      VV;F=$9;;VVVVVVrU   r   r   zpowershell.exe "gwmi -Class Win32_PnpSignedDriver | where{$_.DeviceClass -eq \"DISPLAY\"            -and $_.Manufacturer -match \"Intel\"} | Select-Object -Property DeviceName | ConvertTo-Json"c              3   ,   K   | ]}d |d          V  dS )r   r   NrW   r   s     rS   rt   z(get_intel_gpu_onboard.<locals>.<genexpr>  s0      MMv:F<$8::MMMMMMrU   r   r   rf   )rF   r\   r   r   r~   
isinstancer   extendr   r   	TypeErrorr@   r   )rY   r   r   r   r   r   r   s          rS   get_intel_gpu_onboardr    s8   C~~H7z+ABB 		#joo!ggmR88k400 &[ &JJVV+VVVVVVVJJu%%%	* # # #

3

3q66""""""""# JJu&&&m
 

  	#jooc4(( DS DJJMMMMMMMMMJJBCGGL%$@$@BBCCC # # #

3

3q66""""""""# JJu99S>>s1   A6B! !C327C..C3"A7F 
G%$7G  G%c                     t           rt          t          d          sdS t          j                                        }|dk    rdS d t          |          D             }d                    |          S )Nxpur   r   c                 X    g | ]'}d | dt           j                            |           (S )z* [z] )r!   r  r   )rq   is     rS   
<listcomp>z*get_intel_gpu_detected.<locals>.<listcomp>  sF       <=7a77592215577  rU   rf   )r   r   r!   r  device_countranger   )rY   r  devicess      rS   get_intel_gpu_detectedr
    s}     '%"7"7 u9))++Lqu AF|ATAT  G 99WrU   c                 $   d\  }}}t                      dk    r | d          \  }}}nYt                      dk    r% | d          \  }}}|dk    rg }	 t          j        |          }t          |          t          u rL|D ]H}|                    d           |                    d |                                D                        In1|                    d	 |                                D                        nN# t          $ rA}|                    |           |                    t          |                     Y d }~nd }~ww xY wd

                    |          }n!t                      dk    r | d          \  }}}d}|dk    r|}n|}|S )N)r   r   r   r   lscpur=   zpowershell.exe "gwmi -Class Win32_Processor | Select-Object -Property Name,Manufacturer,Family,            Architecture,ProcessorType,DeviceID,CurrentClockSpeed,MaxClockSpeed,L2CacheSize,L2CacheSpeed,Revision            | ConvertTo-Json"r   z----------------------c                 "    g | ]\  }}| d | S r   rW   rq   kvs      rS   r  z get_cpu_info.<locals>.<listcomp>  s&    #H#H#HFQqKKAKK#H#H#HrU   c                 "    g | ]\  }}| d | S r  rW   r  s      rS   r  z get_cpu_info.<locals>.<listcomp>  s&    FFFA1FFFrU   rf   r   z"sysctl -n machdep.cpu.brand_stringNone)rF   r   r   r?   r   r   r   itemsr   r@   r   )	rY   rO   rZ   rR   r   r   r   r   r    s	            rS   get_cpu_infor     s   LBS~~  !z'**C	7	"	"!z
 
C
 77C
#joo99$$  J J

#;<<<

#H#Haggii#H#H#HIIIIJ JJFF#))++FFFGGG # # #

3

3q66""""""""# ))C..C	8	#	#!z"FGGCH	QwwOs   B'C> >
E	7EE	c                  "   t           j                            d          rdS t           j                            d          rdS t           j                            d          rdS t           j                            d          rdS t           j        S )Nr   r=   r   r   )sysr   ru   rW   rU   rS   rF   rF   "  s~    
|w'' 	w		 	 	)	) w		 	 	*	* x		 	 	*	* x|rU   c                 $    t          | dd          S )Nzsw_vers -productVersionz(.*)r   r   s    rS   get_mac_versionr  /  s    $Z1JGTTTrU   c                     t          | d          }	 t          j        |          }|d          d|d          d|d          d}n,# t          $ r}|dt	          |           z  }Y d }~nd }~ww xY w|S )	Nzpowershell.exe "gwmi -Class Win32_OperatingSystem | Select-Object -Property Caption,        OSArchitecture,Version | ConvertTo-Json"Captionr   Versionr   OSArchitecturer   rf   )r\   r   r   r   r@   )rY   r   r   r   s       rS   get_windows_versionr  3  s    
	2 C
jooYLL3y>LLC8H4ILLL   }CFF}}Js   1A 
A-A((A-c                 $    t          | dd          S )Nzlsb_release -azDescription:\t(.*)r   r   s    rS   get_lsb_versionr   A  s    $$&;  rU   c                 $    t          | dd          S )Nzcat /etc/*-releasezPRETTY_NAME="(.*)"r   r   s    rS   check_release_filer"  G  s    $(*?  rU   c                    ddl m} t                      }|dv rt          |           S |dk    r1t	          |           }|d S d                    | |                      S |dk    r|t          |           }|d                    | |                      S t          |           }|d                    | |                      S d                    | |                      S |S )Nr   )machiner   r   zmacOS {} ({})r   z{} ({}))r   r$  rF   r  r  r   r   r"  )rY   r$  r   r   descs        rS   get_osr&  M  s         ~~H&&&":...8!*--?4%%gwwyy9997z**##D''))444 "*--##D''))444''))444 OrU   c                  2    dd l } |                                  S Nr   r   r)  s    rS   get_python_platformr*  l  s    OOOrU   c                      dd l } t                      dk    rdS d                    |                                           S )Nr   r   r   -)r   rF   r   libc_verr)  s    rS   get_libc_versionr.  r  s=    OOO~~  u88H%%''(((rU   c                 L   t           t          z   t          z   t          z   t          j        j        dk    rdnd}dt          j        d<   t          | t          j
        ddd	g          }|||fS d
                    fd|                                D                       }||fS )zZReturn `pip list` output. Note: will also find conda-installed pytorch and numpy packages.N   pip3pip1PIP_DISABLE_PIP_VERSION_CHECKz-mpipr   z--format=freezerf   c              3   T   K   | ]!t          fd D                       V  "dS )c              3       K   | ]}|v V  	d S ro   rW   rp   s     rS   rt   z-get_pip_packages.<locals>.<genexpr>.<genexpr>  s'      0S0S$0S0S0S0S0S0SrU   N)rv   rw   s    @rS   rt   z#get_pip_packages.<locals>.<genexpr>  sZ        S0S0S0S0S(0S0S0S-S-S     rU   )PIP_PATTERNSrz   r{   r|   r  version_infomajorr   r}   r\   
executabler   r   )rY   rx   r   rZ   filtered_outs    `   rS   get_pip_packagesr<  z  s    /1OCoU,2a77&&UK25BJ./ S^Wf6GH C {C99    ))    L $$rU   returnc                      d dD             S )zKReturn the caching allocator configuration from environment variables.
    c                     i | ]A}t           j                            |          !|t           j                            |          BS rW   )r   r}   r~   )rq   vars     rS   
<dictcomp>z/get_cachingallocator_config.<locals>.<dictcomp>  sN       
 :>>#RZ^^C    rU   )PYTORCH_CUDA_ALLOC_CONFPYTORCH_HIP_ALLOC_CONFPYTORCH_ALLOC_CONFrW   rW   rU   rS   get_cachingallocator_configrE    s%     
   rU   c                      t           r^t          j                                        r@t          j                                         t
          j                            dd          } | S dS )NCUDA_MODULE_LOADINGr   r   )r   r!   r   r   initr   r}   r~   )configs    rS   get_cuda_module_loading_configrJ    sQ     5:2244 
 5r::urU   c                  X    t           r"dd l} t          | j        j        j                  S dS )Nr   r   )r   torch.backends.xnnpackr@   backendsxnnpackenabled)r!   s    rS   r   r     s1     %%%%5>)1222urU   c            
      h   t           } t          |           \  }}t          rt          j        }t          t          j        j                  }t          t          j        	                                          }t          j        j        }t          t          j
        	                                          }t          j
        	                                rV| ddt          j        j
         dz   dt          |            dz   dt          |            dz   dt          |            z   }t          t          j        d          rt          j        j        dx}x}	}
npd	 }t          j                                                            d          } ||d
          }	 ||d          }
d}t          j        j        }ndx}x}x}x}}dx}x}	}
t&          j                            dd          }t+          |           }t-          d)i d|d|dd                    |t&          j                                        dz             dt5                      d|d|dt7          |           dt9                      dt;          |           dt=          |           dt?          |           d|d|d|	d|
d|d|d |d!tA          |           d"tC                      d#tE          |           d$tG          |           d%tI          |           d&tK                      d'tM                      d(tO          |           S )*a  
    Collects environment information to aid in debugging.

    The returned environment information contains details on torch version, is debug build
    or not, cuda compiled version, gcc version, clang version, cmake version, operating
    system, libc version, python version, python platform, CUDA availability, CUDA
    runtime version, CUDA module loading config, GPU model and configuration, Nvidia
    driver version, cuDNN version, pip version and versions of relevant pip and
    conda packages, HIP runtime version, MIOpen runtime version,
    Caching allocator config, XNNPACK availability and CPU information.

    Returns:
        SystemEnv (namedtuple): A tuple containing various environment details
            and system information.
    rf   zXPU used to build PyTorch: zIntel GPU driver version:
zIntel GPU models onboard:
zIntel GPU models detected:
r   Nr   c                 8    fd| D             }|r|d         ndS )Nc                 P    g | ]"}|v |                     d d          d         #S )Nr^   )rsplit)rq   sprefixs     rS   r  z;get_env_info.<locals>.get_version_or_na.<locals>.<listcomp>  s1    JJJ!fkkq))"-kkkrU   r   r   rW   )cfgrV  _lsts    ` rS   get_version_or_naz'get_env_info.<locals>.get_version_or_na  s/    JJJJsJJJ"&1tAwwE1rU   zHIP RuntimeMIOpenr   r   r   r   z{} ({}-bit runtime)r^   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r    rW   )(rT   r<  r   r!   __version__r@   r   debugr   r   r  r   r  r
  r   r   _C_show_configrg   r  replacer   r   r   maxsize
bit_lengthr*  r   rJ  r   r   r   r&  r.  r   r   r   rE  r   r  )rY   r   pip_list_outputversion_strdebug_mode_strcuda_available_strcuda_version_strxpu_available_strr   r   r   rY  rW  sys_versionr   s                  rS   get_env_infori    s     J#3J#?#? K T'U]011 !8!8!:!:;; =-	 6 6 8 8999!!## 	$(((E0AEEEF\0LZ0X0X\\\] V0Ej0Q0QUUUV V1G
1S1SUU	V  u--	5161B1JRWW W#69O9O2 2 2 (''))//55C"3"3C"G"G%6%6sH%E%E"$#(=#4  chhhnh'9h<LO`NSSS25K+%%dC00K'
33N   !k%~ -33//11A5
 
 
 ,--- -, /. 6jAAA ;<<< 'z222 8
CCC (
333 +* 21  0/!"  65#$  K%& %_'( &~)* *+, &'''-. $J////0 (
33312 (
33334 "=!>!>!>56 233378 j)))9 rU   a  
PyTorch version: {torch_version}
Is debug build: {is_debug_build}
CUDA used to build PyTorch: {cuda_compiled_version}
ROCM used to build PyTorch: {hip_compiled_version}

OS: {os}
GCC version: {gcc_version}
Clang version: {clang_version}
CMake version: {cmake_version}
Libc version: {libc_version}

Python version: {python_version}
Python platform: {python_platform}
Is CUDA available: {is_cuda_available}
CUDA runtime version: {cuda_runtime_version}
CUDA_MODULE_LOADING set to: {cuda_module_loading}
GPU models and configuration: {nvidia_gpu_models}
Nvidia driver version: {nvidia_driver_version}
cuDNN version: {cudnn_version}
Is XPU available: {is_xpu_available}
HIP runtime version: {hip_runtime_version}
MIOpen runtime version: {miopen_runtime_version}
Is XNNPACK available: {is_xnnpack_available}
Caching allocator config: {caching_allocator_config}

CPU:
{cpu_info}

Versions of relevant libraries:
{pip_packages}
{conda_packages}
c                   
 dd}dd}dd}dd	}d
 }|                                  
 || j                  
d<   g d}|dgz   }t          
fd|D                       }t          r6t          j                                        s|r|D ]}	d
|	<   | j        d
d<    |
          
 |
          
 |
d                   
d<    |
d                   
d<   
d         r- |
d         d                    | j	                            
d<   
d         r |
d         d          
d<   | j
        
d<   | j        
d<   | j        sd
d<   t          j        di 
S )NCould not collectc                 ,    | D ]}| |         || |<   | S ro   rW   )dctreplacementkeys      rS   replace_nonesz!pretty_str.<locals>.replace_nones.  s.     	# 	#C3x#"CHH
rU   YesNoc                 N    | D ]!}| |         du r|| |<   | |         du r|| |<   "| S )NTFrW   )rm  truefalsero  s       rS   replace_boolsz!pretty_str.<locals>.replace_bools5  sI     	! 	!C3x4CSU"" C
rU   	[prepend]c                 t    |                      d          }fd|D             }d                    |          S )Nrf   c                     g | ]}|z   S rW   rW   )rq   rs   tags     rS   r  z/pretty_str.<locals>.prepend.<locals>.<listcomp>?  s    666t666rU   )rg   r   )textrz  linesupdated_liness    `  rS   prependzpretty_str.<locals>.prepend=  s?    

4  6666666yy'''rU   No relevant packagesc                 4    | t          |           dk    r|S | S r(  )r   )r{  rn  s     rS   replace_if_emptyz$pretty_str.<locals>.replace_if_emptyB  s!    D		QrU   c                     | ;t          |                     d                    dk    rd                    |           S | S )Nrf   r^   z
{}
)r   rg   r   )strings    rS   maybe_start_on_next_linez,pretty_str.<locals>.maybe_start_on_next_lineG  s=    #fll4&8&8"9"9A"="=??6***rU   r   )r   r   r   r   c              3   ,   K   | ]}|         d u V  d S ro   rW   )rq   fieldmutable_dicts     rS   rt   zpretty_str.<locals>.<genexpr>[  s>       * *(-Ut#* * * * * *rU   zNo CUDAr  r	   r   r   z[{}] z[conda] r    r   r   )rk  )rq  rr  )rw  )r  rW   )_asdictr   allr   r!   r   r   r	   r   r   r    r   env_info_fmt)envinforp  rv  r~  r  r  dynamic_cuda_fieldsall_cuda_fieldsall_dynamic_cuda_fields_missingr  r  s             @rS   
pretty_strr  -  s[         ( ( ( (
   
   ??$$L )A(@!) )L$%
  
 *_,==O&) * * * *1D* * * ' '# 	;
'')); ,;
 % 	, 	,E"+L(04:L01 !=..L !=..L $4#3L4P#Q#QL %5%5lCS6T%U%UL!" N# 
'.w('..9L*M*M(
 (
^$ $% 
)0)*J*
 *
%&  '/L/6/OL+,+ 938/0.....rU   c                  8    t          t                                S )a  
    Returns a pretty string of environment information.

    This function retrieves environment information by calling the `get_env_info` function
    and then formats the information into a human-readable string. The retrieved environment
    information is listed in the document of `get_env_info`.
    This function is used in `python collect_env.py` that should be executed when reporting a bug.

    Returns:
        str: A pretty string of the environment information.
    )r  ri  rW   rU   rS   get_pretty_env_infor    s     lnn%%%rU   c                     t          d           t                      } t          |            t          r=t          t          d          r)t          t          j        d          rt          j        j        j        t          j	        dk    rt          j                                      rψfdt          j                  D             }t          |t          j        j                  }t          j                            |          }t           j                            |                              d          }d                    ||          d	z   }t          |t          j        
           d S d S d S d S d S d S )Nz%Collecting environment information...utils_crash_handlerr   c                 P    g | ]"}t           j                            |          #S rW   )r   r   r   )rq   dumpminidump_dirs     rS   r  zmain.<locals>.<listcomp>  s6       59\400  rU   )ro  z%Y-%m-%d %H:%M:%Sz.
*** Detected a minidump at {} created on {}, zKif this is related to your bug please include it when you file a report ***)file)printr  r   r   r!   r  r  DEFAULT_MINIDUMP_DIRr  r   r   r   r   listdirmaxgetctimedatetimefromtimestampstrftimer   r;   )rQ   dumpslatestctimecreation_timemsgr  s         @rS   mainr    s   	
1222 ""F	&MMM 	(E7##( EK!122(
 {1F<7""rw~~l'C'C"   =?Z=U=U  E BG$4555FG$$V,,E$-;;EBBKK# M BHHM  ``  #CJ''''''+( ( ( ( ( ( #"""rU   __main__ro   )r=  N)Ar  r   rG   r   r_   rA   r  collectionsr   typingr   r   r   _Dictr!   r   ImportError	NameErrorAttributeErrorOSErrorr   rz   r{   r|   ry   r7  rT   r\   rd   rh   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  rF   r  r  r   r"  r&  r*  r.  r<  r@   rE  rJ  r   ri  rJ   r  r  r  r  __name__rW   rU   rS   <module>r     s      				 				     



 " " " " " " / / / / / / / /LLLOOY8   OOO J   	@    $  0    + + +"         O O O  S S SQ Q Q' ' '4X X X"? "? "?J  $  ! ! !H. . .b$ $ $N  t  D
 
 
U U U        >  ) ) )% % % %.U38_        U U Up @ 
EGGA FS/ S/ S/l& & &( ( ( (: zDFFFFF s   3 A A