
    QVjiw                        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 	 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d2d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' Z2d2d(Z3d) Z4d* Z5d+ Z6d, Z7d-8                                Z9d. Z:d/ Z;d0 Z<e=d1k    r e<             dS dS )3    N)
namedtuple)castTF	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 rdnd}t          j        | t          j        t          j        |          }|                                \  }}|j        }t                      dk    rd}nt          j	                    }|
                    |          }|
                    |          }||                                |                                fS )z%Return (return-code, stdout, stderr).TF)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	            Q/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/utils/collect_env.pyrunrS   x   s    MMS((DDeE

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_lambdarJ   rN   out_s        rR   run_and_read_allr[      s*    G$$JBQ	QwwtJrT   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)rX   rJ   regexrN   rY   rZ   matchs          rR   run_and_parse_first_matchrc      sP    G$$JBQ	QwwtIeS!!E}t;;q>>rT   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
)splitrW   s        rR   run_and_return_first_linerg      s:    G$$JBQ	Qwwt99T??1rT   c                 :   t           t          z   t          z   t          z   t          j                            dd          }t          | d                    |                    }||S d	                    fd|
                                D                       S )N	CONDA_EXEcondaz{} listre   c              3   ~   K   | ]6                     d           t          fdD                       2V  7dS )#c              3       K   | ]}|v V  	d S NrV   .0namelines     rR   	<genexpr>z/get_conda_packages.<locals>.<genexpr>.<genexpr>   s'      +N+NTDDL+N+N+N+N+N+NrT   N)
startswithanyrp   rr   patternss    @rR   rs   z%get_conda_packages.<locals>.<genexpr>   sq        s## ),+N+N+N+NX+N+N+N(N(N     rT   )CONDA_PATTERNSCOMMON_PATTERNSNVIDIA_PATTERNSONEAPI_PATTERNSr   environgetr[   formatjoin
splitlines)rX   rw   rj   rY   s    `  rR   get_conda_packagesr      s    !O3oEWJNN;00E
:y'7'7'>'>
?
?C
{
99    NN$$     rT   c                 $    t          | dd          S )Nzgcc --versionzgcc (.*)rc   rX   s    rR   get_gcc_versionr      s    $Z+NNNrT   c                 $    t          | dd          S )Nzclang --versionzclang version (.*)r   r   s    rR   get_clang_versionr      s    $%'<  rT   c                 $    t          | dd          S )Nzcmake --versionz
cmake (.*)r   r   s    rR   get_cmake_versionr      s    $Z1BMRRRrT   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: (.*?) )rE   rc   get_nvidia_smi)rX   cmdsmis      rR   get_nvidia_driver_versionr      sP    ~~!!'(?
 
 	
 

C$Z6OPPPrT   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)rE   TORCH_AVAILABLEhasattrr    versionr   cudais_availableget_device_propertiesr~   r   get_device_namer   r^   compilesub)rX   propgcnArchr   
uuid_regexrN   rY   rZ   s           rR   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#&&&rT   c                 $    t          | dd          S )Nznvcc --versionzrelease .+ V(.*)r   r   s    rR   get_running_cuda_versionr      s    $Z1ACVWWWrT   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_LIBRARYNre   z!Probably one of the following:
{})rE   r   r|   r}   pathr   r~   lenisfilerealpathsetrf   addsorted)rX   system_root	cuda_path	where_cmd	cudnn_cmdrN   rY   rZ   l	files_setfnfilesresults                rR   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>>>rT   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"{}")rE   r   r|   r}   r   r   existsr~   )r   r   program_files_rootlegacy_pathnew_pathsmiscandidate_smis          rR   r   r     s    
C~~  jnn\=AAZ^^N<OPPgll 4gs
 
 7<<Z==+&! 	 	Mw~~m,, mmM22 JrT   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   )rE   rS   )mgr_namerN   rZ   s      rR   _detect_linux_pkg_managerr      s]    ~~  u4  ***++Aq77OOO 5rT   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_indexrJ   r]   zdnf list | grep {}zyum list | grep {}zzypper info {} | grep Versionr   r   rJ   r   z + )
r   int_castr?   r~   r[   r^   r   rf   r   )rX   pkg_namepkg_mgrgrep_versionr   r   retlsts           rR   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{rT   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)re   )rE   r}   r   r   appendr[   jsonloadsr>   list
ValueErrorr?   r   )
rX   r   platformpkgspkgvertxtobjoes
             rR   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_nameNrV   rp   devices     rR   rs   z(get_intel_gpu_onboard.<locals>.<genexpr>  s0      VV;F=$9;;VVVVVVrT   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   NrV   r   s     rR   rs   z(get_intel_gpu_onboard.<locals>.<genexpr>  s0      MMv:F<$8::MMMMMMrT   r   r   re   )rE   r[   r   r   r}   
isinstancer   extendr   r   	TypeErrorr?   r   )rX   r   r   r   r   r   r   s          rR   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   )rp   is     rR   
<listcomp>z*get_intel_gpu_detected.<locals>.<listcomp>  sF       <=7a77592215577  rT   re   )r   r   r    r  device_countranger   )rX   r  devicess      rR   get_intel_gpu_detectedr	    s}     '%"7"7 u9))++Lqu AF|ATAT  G 99WrT   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   rV   rp   kvs      rR   r  z get_cpu_info.<locals>.<listcomp>  s&    #H#H#HFQqKKAKK#H#H#HrT   c                 "    g | ]\  }}| d | S r  rV   r  s      rR   r  z get_cpu_info.<locals>.<listcomp>  s&    FFFA1FFFrT   re   r   z"sysctl -n machdep.cpu.brand_stringNone)rE   r   r   r>   r   r   r   itemsr   r?   r   )	rX   rN   rY   rQ   r   r   r   r   r   s	            rR   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   rt   rV   rT   rR   rE   rE   "  s~    
|w'' 	w		 	 	)	) w		 	 	*	* x		 	 	*	* x|rT   c                 $    t          | dd          S )Nzsw_vers -productVersionz(.*)r   r   s    rR   get_mac_versionr  /  s    $Z1JGTTTrT   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   re   )r[   r   r   r   r?   )rX   r   r   r   s       rR   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    rR   get_lsb_versionr  A  s    $$&;  rT   c                 $    t          | dd          S )Nzcat /etc/*-releasezPRETTY_NAME="(.*)"r   r   s    rR   check_release_filer!  G  s    $(*?  rT   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#  rE   r  r  r~   r  r!  )rX   r#  r   r   descs        rR   get_osr%  M  s         ~~H&&&":...8!*--?4%%gwwyy9997z**##D''))444 "*--##D''))444''))444 OrT   c                  2    dd l } |                                  S Nr   r   r(  s    rR   get_python_platformr)  l  s    OOOrT   c                      dd l } t                      dk    rdS d                    |                                           S )Nr   r   r   -)r   rE   r   libc_verr(  s    rR   get_libc_versionr-  r  s=    OOO~~  u88H%%''(((rT   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=freezere   c              3   T   K   | ]!t          fd D                       V  "dS )c              3       K   | ]}|v V  	d S rn   rV   ro   s     rR   rs   z-get_pip_packages.<locals>.<genexpr>.<genexpr>  s'      0S0S$0S0S0S0S0S0SrT   N)ru   rv   s    @rR   rs   z#get_pip_packages.<locals>.<genexpr>  sZ        S0S0S0S0S(0S0S0S-S-S     rT   )PIP_PATTERNSry   rz   r{   r  version_infomajorr   r|   r[   
executabler   r   )rX   rw   r   rY   filtered_outs    `   rR   get_pip_packagesr;  z  s    /1OCoU,2a77&&UK25BJ./ S^Wf6GH C {C99    ))    L $$rT   c                      t           j                            dd          } | s t           j                            dd          } | S )NPYTORCH_CUDA_ALLOC_CONFr   PYTORCH_HIP_ALLOC_CONF)r   r|   r}   )	ca_configs    rR   get_cachingallocator_configr@    s=    
8"==I AJNN#;R@@	rT   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    rR   get_cuda_module_loading_configrE    sQ     5:2244 
 5r::urT   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    rR   r   r     s1     %%%%5>)1222urT   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.
    re   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)rp   sprefixs     rR   r  z;get_env_info.<locals>.get_version_or_na.<locals>.<listcomp>  s1    JJJ!fkkq))"-kkkrT   r   r   rV   )cfgrQ  _lsts    ` rR   get_version_or_naz'get_env_info.<locals>.get_version_or_na  s/    JJJJsJJJ"&1tAwwE1rT   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   rV   )(rS   r;  r   r    __version__r?   r   debugr   r   r  r   r   r	  r   r   _C_show_configrf   r  replacer   r   r~   maxsize
bit_lengthr)  r   rE  r   r   r   r%  r-  r   r   r   r@  r   r  )rX   r   pip_list_outputversion_strdebug_mode_strcuda_available_strcuda_version_strxpu_available_strr   r   r   rT  rR  sys_versionr   s                  rR   get_env_inford    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 rT   au  
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}

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<   t          j        di 
S )NCould not collectc                 P    |                                  D ]}| |         || |<   | S rn   keys)dctreplacementkeys      rR   replace_nonesz!pretty_str.<locals>.replace_nones%  s6    88:: 	# 	#C3x#"CHH
rT   YesNoc                 r    |                                  D ]!}| |         du r|| |<   | |         du r|| |<   "| S )NTFrh  )rj  truefalserl  s       rR   replace_boolsz!pretty_str.<locals>.replace_bools,  sQ    88:: 	! 	!C3x4CSU"" C
rT   	[prepend]c                 t    |                      d          }fd|D             }d                    |          S )Nre   c                     g | ]}|z   S rV   rV   )rp   rr   tags     rR   r  z/pretty_str.<locals>.prepend.<locals>.<listcomp>6  s    666t666rT   )rf   r   )textrw  linesupdated_liness    `  rR   prependzpretty_str.<locals>.prepend4  s?    

4  6666666yy'''rT   No relevant packagesc                 4    | t          |           dk    r|S | S r'  )r   )rx  rk  s     rR   replace_if_emptyz$pretty_str.<locals>.replace_if_empty9  s!    D		QrT   c                     | ;t          |                     d                    dk    rd                    |           S | S )Nre   r]   z
{}
)r   rf   r~   )strings    rR   maybe_start_on_next_linez,pretty_str.<locals>.maybe_start_on_next_line>  s=    #fll4&8&8"9"9A"="=??6***rT   r   )r   r   r   r   c              3   ,   K   | ]}|         d u V  d S rn   rV   )rp   fieldmutable_dicts     rR   rs   zpretty_str.<locals>.<genexpr>R  s>       * *(-Ut#* * * * * *rT   zNo CUDAr  r   r   r   z[{}] z[conda] r   )rf  )rn  ro  )rt  )r|  rV   )_asdictr   allr   r    r   r   r   r~   r   r   env_info_fmt)envinform  rs  r{  r~  r  dynamic_cuda_fieldsall_cuda_fieldsall_dynamic_cuda_fields_missingr  r  s             @rR   
pretty_strr  $  s7         ( ( ( (
   
   ??$$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.....rT   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  rd  rV   rT   rR   get_pretty_env_infor  w  s     lnn%%%rT   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 rV   )r   r   r   )rp   dumpminidump_dirs     rR   r  zmain.<locals>.<listcomp>  s6       59\400  rT   )rl  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:   )rP   dumpslatestctimecreation_timemsgr  s         @rR   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''''''+( ( ( ( ( ( #"""rT   __main__rn   )>r  r   rF   r   r^   r@   r  collectionsr   typingr   r   r    r   ImportError	NameErrorAttributeErrorOSErrorr   ry   rz   r{   rx   r6  rS   r[   rc   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  rE   r  r  r  r!  r%  r)  r-  r;  r@  rE  r   rd  rI   r  r  r  r  __name__rV   rT   rR   <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        >  ) ) )% % % %.      U U Up> 
EGG? DP/ P/ P/f& & &( ( (: zDFFFFF s   1 ??