
    'j#                     
   S SK r S SKJr  S SKJr  S SKJrJr  SSKJ	r	  SSK
JrJrJr   " S S	\5      rS
\\   SS4S jr SS\\   S\\\      SS4S jjrS\S\S\SS4S jrS\S\4S jr SS\\   S\\\      SS4S jjrg)    N)Enum)Lock)ListOptional   )InvalidAddonPath)get_pathunzipwebdlc                       \ rS rSrSrSrSrg)DefaultAddons
   z!
Default addons to be downloaded
zLhttps://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi N)__name__
__module____qualname____firstlineno____doc__UBO__static_attributes__r       S/home/ice/.hermes/hermes-agent/venv/lib/python3.11/site-packages/camoufox/addons.pyr   r   
   s     YCr   r   pathsreturnc                    U  H  n[         R                  R                  U5      (       d  [        U5      e[         R                  R	                  [         R                  R                  US5      5      (       a  Mv  [        S5      e   g)z)
Confirms that the addon paths are valid
zmanifest.jsonzJmanifest.json is missing. Addon path must be a path to an extracted addon.N)ospathisdirr   existsjoin)r   r   s     r   confirm_pathsr!      s^     ww}}T"""4((ww~~bggll4ABB"\ 	 r   addons_listexclude_listc                     Uc  / n[          Vs/ s H  o"U;  d  M
  UPM     nn[        5          [        X05        SSS5        gs  snf ! , (       d  f       g= f)zJ
Adds default addons, minus any specified in exclude_list, to addons_list
N)r   r   maybe_download_addons)r"   r#   addonaddonss       r   add_default_addonsr(      sH     !.L|2KeFL	f2 
 M	s   	AAA
Aurlextract_pathnamec                 @    [        U SU S3SS9n[        X1SU S3SS9  g)zF
Downloads and extracts an addon from a given URL to a specified path
zDownloading addon ()F)descbarzExtracting addon ()r/   N)r   r
   )r)   r*   r+   buffers       r   download_and_extractr1   /   s2    
 324&:FF	&"4TF! <%Hr   
addon_namec                 T    [        [        R                  R                  SU 5      5      $ )z
Returns a path to the addon
r'   )r	   r   r   r    )r2   s    r   get_addon_pathr4   8   s     BGGLL:677r   r'   c                    U  H  n[        UR                  5      n[        R                  R	                  U5      (       a  Ub  UR                  U5        MR   [        R                  " USS9  [        UR                  X2R                  5        Ub  UR                  U5        M  M     g! [         a&  n[        SUR                   SU 35         SnAM  SnAff = f)z
Downloads and extracts addons from a given dictionary to a specified list
Skips downloading if the addon is already downloaded
NT)exist_okzFailed to download and extract z: )r4   r+   r   r   r   appendmakedirsr1   value	Exceptionprint)r'   r"   r&   
addon_pathes        r   r%   r%   ?   s     #EJJ/
 77>>*%%&"":.	GKK
T2 j**E&"":. '! $  	G3EJJ<r!EFF	Gs   A	B&&
C0CC)N)r   enumr   multiprocessingr   typingr   r   
exceptionsr   pkgmanr	   r
   r   r   strr!   r(   r1   r4   r%   r   r   r   <module>rD      s    	    ! ( * *YD Y
c 
t 
 KO3c3*243F*G3	3 Ic I IC ID I8s 8s 8 EIGG.6tCy.AG	Gr   