
    'j#                     .   d dl Z d dlmZ d dlmZ d dlmZmZ ddlm	Z	 ddl
mZmZmZ  G d d	e          Zd
ee         ddfdZ	 ddee         deee                  ddfdZdedededdfdZdedefdZ	 ddee         deee                  ddfdZdS )    N)Enum)Lock)ListOptional   )InvalidAddonPath)get_pathunzipwebdlc                       e Zd ZdZdZdS )DefaultAddonsz)
    Default addons to be downloaded
    zLhttps://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpiN)__name__
__module____qualname____doc__UBO     S/home/ice/.hermes/hermes-agent/venv/lib/python3.11/site-packages/camoufox/addons.pyr   r   
   s           YCCCr   r   pathsreturnc                    | D ]|}t           j                            |          st          |          t           j                            t           j                            |d                    st          d          }dS )z1
    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       w}}T"" 	)"4(((w~~bgll4AABB 	"\  	 r   addons_listexclude_listc                     g fdt           D             }t                      5  t          ||            ddd           dS # 1 swxY w Y   dS )zR
    Adds default addons, minus any specified in exclude_list, to addons_list
    Nc                     g | ]}|v|	S r   r   ).0addonr    s     r   
<listcomp>z&add_default_addons.<locals>.<listcomp>)   s#    LLL%|2K2Ke2K2K2Kr   )r   r   maybe_download_addons)r   r    addonss    ` r   add_default_addonsr(      s     LLLLLLLF	 3 3fk2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   AA	A	urlextract_pathnamec                 `    t          | d| dd          }t          ||d| dd           dS )zN
    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   /   sM    
 3:4:::FFFF	&, <T < < <%HHHHHHr   
addon_namec                 \    t          t          j                            d|                     S )z%
    Returns a path to the addon
    r'   )r	   r   r   r   )r2   s    r   get_addon_pathr4   8   s"     BGLL:66777r   r'   c                    | D ]}t          |j                  }t          j                            |          r||                    |           M	 t          j        |d           t          |j        ||j                   ||                    |           # t          $ r$}t          d|j         d|            Y d}~d}~ww xY wdS )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     G G#EJ//
 7>>*%% 	&"":...	GK
T2222 j%*EEE&"":... 	G 	G 	GEEJEE!EEFFFFFFFF	G%G Gs   AB
C$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 Y Y Y YD Y Y Y
c 
t 
 
 
 
 KO3 3c3*243F*G3	3 3 3 3 Ic I IC ID I I I I8s 8s 8 8 8 8 EIG GG.6tCy.AG	G G G G G Gr   