
    tfI              	          d 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	m
Z
 ddlZddlZddlmZmZ ddlmZ  ej"                  e      Z ej(                         Zej-                   ej.                  dd	
             ej1                  ej2                         ej1                  ej2                         ej5                  e        ee      dz  ZdZej:                  j=                  de      Ze dZ ej:                  j=                  de      Z!ej:                  j=                  dd      Z"e"jG                         dv rdZ"dZ$e  de! de  de! de  de! de$ de  de! de$ ddZ%ee!z  dz  d z  ee!z  d!z  d"z  d#z  d$z  d%z  ee!z  e$z  d&z  ee!z  e$z  d&z  dZ&d'e'fd(Z(d'e'fd)Z)d*e'd'efd+Z*d,ed-ed'dfd.Z+d2d/Z,d'efd0Z-d'e.fd1Z/y)3zChromium download module.    N)BytesIO)Path)ZipFile)__chromium_revision____pyppeteer_home__)tqdmz[{levelname}] {msg}{)fmtstyle)r
   zlocal-chromiumzhttps://storage.googleapis.comPYPPETEER_DOWNLOAD_HOSTz/chromium-browser-snapshotsPYPPETEER_CHROMIUM_REVISIONPYPPETEER_NO_PROGRESS_BAR )1trueTz
chrome-winz/Linux_x64/z/chrome-linux.zipz/Mac/z/chrome-mac.zipz/Win//z.zipz	/Win_x64/)linuxmacwin32win64zchrome-linuxchromez
chrome-maczChromium.appContentsMacOSChromiumz
chrome.exereturnc                     t         j                  j                  d      ryt         j                  j                  d      ryt         j                  j                  d      s>t         j                  j                  d      st         j                  j                  d      rt         j                  dkD  ryy	t	        d
t         j                  z         )z*Get current platform name by short string.r   darwinr   winmsyscygir   r   zUnsupported platform: )sysplatform
startswithmaxsizeOSError     g/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/pyppeteer/chromium_downloader.pycurrent_platformr)   7   s    
||w'		 	 	*		 	 	'3<<+B+B6+JcllNeNefkNl;;$
*S\\9
::r'   c                  $    t         t                  S )zGet chromium download url.)downloadURLsr)   r&   r'   r(   get_urlr,   D   s    (*++r'   urlc                    t         j                  d       t        j                  dt	        j
                               5 }|j                  d| d      }|j                  dk\  r*t        d|  d	|j                  j                          d
      t               }t        r(|j                  d      D ]  }|j                  |        nx	 t        |j                   d         }t)        |dd      }|j                  d      D ]-  }|j                  |       |j+                  t-        |             / |j/                          ddd       |S # t"        t$        t&        f$ r d}Y w xY w# 1 sw Y   S xY w)zDownload data from url.zStarting Chromium download.CERT_REQUIRED)	cert_reqsca_certsGETF)preload_contenti  z#Chromium downloadable not found at z: Received z.
i (  zcontent-lengthr   Tb)total
unit_scaleunitN)loggerinfourllib3PoolManagercertifiwhererequeststatusr%   datadecoder   NO_PROGRESS_BARstreamwriteintheadersKeyError
ValueErrorAttributeErrorr   updatelenclose)r-   httpr_datachunktotal_lengthprocess_bars          r(   download_ziprS   I   sL   
KK-.				Q  UY LLUL;88s??uOTUTZTZTaTaTcSddghii 	% #E"#!"199-=#>? \dMK% /E"""3u:./ + . L j.9 ! ! . Ls1   BE#EAE#E E#E  E##E-r@   pathc                    t         j                  d       t               dk(  rIddl}ddl}|dz  }|j                         s|j                  d       |j                  d      5 }|j                  | j                                ddd       |j                  d	      st        d
| d      |j                  d	t        |      gt        |      |j                  |j                        }|j                   dk7  r<t         j#                  |j$                  j'                                t        d| d      t)               j                         rO|j                         r?|j+                          n.t-        |       5 }|j/                  t        |             ddd       t)               }|j                         st1        d      |j3                  |j5                         j6                  t4        j8                  z  t4        j:                  z  t4        j<                  z         t         j                  d|        y# 1 sw Y   xY w# 1 sw Y   xY w)zExtract zipped data to path.zBeginning extractionr   r   Nz
chrome.zipT)parentswbunzipz6Failed to automatically extract chromium.Please unzip z
 manually.)cwdstdoutstderrzFailed to unzip .zFailed to extract chromium.zChromium extracted to: )r8   r9   r)   
subprocessshutilexistsmkdiropenrD   getvaluewhichr%   runstrPIPESTDOUT
returncodeerrorrZ   rA   chromium_executableunlinkr   
extractallIOErrorchmodstatst_modeS_IXOTHS_IXGRPS_IXUSR)	r@   rT   r]   r^   zip_pathfproczf	exec_paths	            r(   extract_zipry   g   s    KK&'U",&{{}JJtJ$]]4  	%AGGDMMO$	%||G$UV^U__ijkk~~c(m$#d)JOOT^TeTe  
 ??aLL++-.,XJa899 '')hoo.?OOT] 	%bMM#d)$	%#%I344OOINN$,,t||;dllJT\\YZ
KK)$01'	% 	%	% 	%s   $ H58I5H?Ic                  T    t        t        t                     t        t        z         y)zDownload and extract chromium.N)ry   rS   r,   DOWNLOADS_FOLDERREVISIONr&   r'   r(   download_chromiumr}      s    WY')9H)DEr'   c                  $    t         t                  S )z$Get path of the chromium executable.)chromiumExecutabler)   r&   r'   r(   rj   rj      s    .011r'   c                  2    t               j                         S )z,Check if chromium is placed at correct path.)rj   r_   r&   r'   r(   check_chromiumr      s     ''))r'   )r   N)0__doc__loggingosro   r!   ior   pathlibr   zipfiler   r<   r:   	pyppeteerr   r   r   	getLogger__name__r8   StreamHandlerhandlersetFormatter	FormattersetLevelINFO
addHandlerr{   DEFAULT_DOWNLOAD_HOSTenvirongetDOWNLOAD_HOSTBASE_URLr|   rB   lowerwindowsArchiver+   r   re   r)   r,   rS   ry   r}   rj   boolr   r&   r'   r(   <module>r      s?      	  
      ? 			8	$
'


!   ***/DCP  Q         ' *+.>> 8 

8:OP_78::>>79NO**..!<bAm+O zXJ.?@ZuXJo6zxj.)9>z8*An-=TB	 (>9HDx',6G*TW^^akk(>9LH(>9LH	 
;# 
;, ,
c g <2g 2T 2d 2BF
2T 2
* *r'   