
    z%i\                     f   	 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g dZ G d de      Z	 ej                         Zi Zdadad0dddZd0dZd1d	Zd
 Zd ZdddZ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      ZeZ G d de      Z G d de      Z G d d e      Z  G d! d"e      Z!d# Z"d$ Z#ejH                  dd% d&k(  r G d' d(e      Z%ejH                  d)k(  r G d* d+e      Z& G d, d-e      Z'd. Z(e)d/k(  r e(        yy)2    N)Erroropenopen_newopen_new_tabgetregisterc                       e Zd Zy)r   N)__name__
__module____qualname__     >/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/webbrowser.pyr   r      s    r   r   F	preferredc                   	 t         5  t        
t                ||gt        | j	                         <   |st
        r| t
        v rt        j                  d|        nt        j                  |        d d d        y # 1 sw Y   y xY w)Nr   )_lock	_tryorderregister_standard_browsers	_browserslower_os_preferred_browserinsertappend)nameklassinstancer   s       r   r   r      sl    '	 #&(#(("3	$**,
 .4;P3PQ%T"# # #s   A&A77B c                    	 t         t        5  t         
t                d d d        | | g}nt         }|D ]u  }d|v r:t        j                  |      }|d   dk(  rt        |d d       c S t        |      c S 	 t        |j                            }|d   |d   c S |d   k |d          c S  t        d      # 1 sw Y   xY w# t        $ r t        |      }Y Lw xY w)N%s&   r   z!could not locate runnable browser)r   r   r   shlexsplitBackgroundBrowserGenericBrowserr   r   KeyError_synthesizer   )usingalternativesbrowsercommands       r   r   r   &   s    M 	- *,	- w  $7?kk'*Gr{c!("66%g../#GMMO4 qz%qz!'!wqz|##$$ 3
443	- 	-&  /%g./s   B87C8CCCc                     	 t         t        5  t         
t                d d d        t         D ]"  }t        |      }|j	                  | ||      s" y y# 1 sw Y   5xY w)NTF)r   r   r   r   r   )urlnew	autoraiser   r+   s        r   r   r   H   se      	- *,	-  d)<<S), 	- 	-s   AAc                     	 t        | d      S Nr"   r   r.   s    r   r   r   [        Q<r   c                     	 t        | d      S N   r3   r4   s    r   r   r   b   r5   r   c                   	 | j                         d   }t        j                  |      sd d gS t        j                  j                  |      }	 t        |j                            }|d   }|rp|j                         |j
                  k(  rSdd l	}|j                  |      }| |_
        t        j                  j                  |       |_        t        | d ||       d |gS d d gS # t        $ r d d gcY S w xY w)Nr   r"   )r   r   )r$   shutilwhichospathbasenamer   r   r'   copyr   r   )r+   r   cmdr   r,   
controllerr?   s          r   r(   r(   j   s    
 --/!
C<<d|77C DDJJL) Jdjjlj&9&99YYz*
!
 gg..w7
$yIj!!$<  d|s   C   C0/C0c                   0    e Zd Z	 dgZddZddZd Zd Zy)	BaseBrowserr   c                      || _         || _        y N)r   r>   selfr   s     r   __init__zBaseBrowser.__init__   s    	r   c                     t         rE   )NotImplementedErrorrG   r.   r/   r0   s       r   r   zBaseBrowser.open   s    !!r   c                 &    | j                  |d      S r2   r3   rG   r.   s     r   r   zBaseBrowser.open_new       yya  r   c                 &    | j                  |d      S r7   r3   rM   s     r   r   zBaseBrowser.open_new_tab   rN   r   N) r   T)r
   r   r   argsrH   r   r   r   r   r   r   rC   rC      s     =6D"!!r   rC   c                       e Zd Z	 d ZddZy)r&   c                     t        |t              r|| _        dg| _        n|d   | _        |dd  | _        t        j
                  j                  | j                        | _        y )Nr   r   r"   )
isinstancestrr   rR   r<   r=   r>   rF   s     r   rH   zGenericBrowser.__init__   sP    dC DIDI QDIQRDI((3r   c                 p   t        j                  d|       | j                  g| j                  D cg c]  }|j	                  d|       c}z   }	 t         j
                  d d dk(  rt        j                  |      }nt        j                  |d      }|j                          S c c}w # t        $ r Y yw xY w)Nwebbrowser.openr      winT)	close_fdsF)
sysauditr   rR   replaceplatform
subprocessPopenwaitOSErrorrG   r.   r/   r0   argcmdlineps          r   r   zGenericBrowser.open   s    		#S)99+,0II!7%( "%T3!7 !7 7	||BQ5($$W-$$W=vvx<!7  		s   B$AB) )	B54B5NrQ   r
   r   r   rH   r   r   r   r   r&   r&      s    ,4r   r&   c                       e Zd Z	 ddZy)r%   c                 t   | j                   g| j                  D cg c]  }|j                  d|       c}z   }t        j                  d|       	 t        j
                  d d dk(  rt        j                  |      }nt        j                  |dd      }|j                         d u S c c}w # t        $ r Y yw xY w)Nr   rX   rY   rZ   T)r[   start_new_sessionF)
r   rR   r^   r\   r]   r_   r`   ra   pollrc   rd   s          r   r   zBackgroundBrowser.open   s    99+,0II!7%( "%T3!7 !7 7		#S)	||BQ5($$W-$$W7;=FFH$%!7  		s   B&AB+ +	B76B7NrQ   r
   r   r   r   r   r   r   r%   r%      s    r   r%   c                   >    e Zd Z	 dZdZdZddgZdZdZdZ	ddZ
d	dZy)
UnixBrowserNFT%actionr   c                    g }|r+| j                   rt        |      }| j                   |   }|r|g}| j                  g|z   |z   }|s| j                  rt        j
                  }nd }t	        j                  |d|| j                  xr |xs d |d      }	|r	 |	j                  d      }
|
 S | j                  r|	j                         yy|	j                          S # t        j                  $ r Y yw xY w)NTr[   stdinstdoutstderrrk      F)
raise_optsintr   
backgroundr`   DEVNULLra   redirect_stdoutrb   TimeoutExpiredrl   )rG   rR   remoter0   r.   	raise_optoptrf   inoutrg   rcs              r   _invokezUnixBrowser._invoke   s    	dooII//),CI99+	)D0T__&&E EWE%)%9%9%Ce%Kt$)TC VVAYv __vvxvvx< ,, s   C C-,C-c                 H   t        j                  d|       |dk(  r| j                  }nN|dk(  r| j                  }n<|dk(  r&| j                  | j                  }n| j                  }nt        dd|z  z         | j                  D cg c]$  }|j                  d|      j                  d|      & }}|D cg c]  }|s|	 }}| j                  |d	||      }|s<| j                  D cg c]  }|j                  d|       }}| j                  |d
d
      S y	c c}w c c}w c c}w )NrX   r   r"   r8   zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sr   rp   TF)
r\   r]   remote_actionremote_action_newwinremote_action_newtabr   remote_argsr^   r   rR   )rG   r.   r/   r0   actionre   rR   successs           r   r   zUnixBrowser.open  s*   		#S)!8''FAX..FAX((0222295;< = =  ++- D#&..y&A - -#+s++,,tT9c:6:ii@sCKKc*@D@<<eU33-+ As   )D4D<D&DrE   rQ   )r
   r   r   rw   ry   r{   r   r   r   r   r   r   r   r   r   ro   ro      s<    GJJO d#KM! Fr   ro   c                   &    e Zd Z	 ddgZdZdZdZdZy)Mozillarp   r   rP   z-new-windowz-new-tabTNr
   r   r   r   r   r   r   ry   r   r   r   r   r     s%    .d#KM(%Jr   r   c                   *    e Zd Z	 ddgZddgZdZdZdZy)	Epiphanyz-noraiserP   rp   r   -nz-wTN)r
   r   r   rw   r   r   r   ry   r   r   r   r   r   '  s)    .b!Jd#KMJr   r   c                   &    e Zd Z	 ddgZdZdZdZdZy)Chromerp   r   rP   --new-windowTNr   r   r   r   r   r   1  s%    /d#KM)Jr   r   c                   &    e Zd Z	 ddgZdZdZdZdZy)Operarp   r   rP   r   TNr   r   r   r   r   r   =  s%    'd#KM)Jr   r   c                   *    e Zd Z	 ddgZdZdZdZdZdZy)Elinksz-remotezopenURL(%s%action)rP   z,new-windowz,new-tabFN)	r
   r   r   r   r   r   r   ry   r{   r   r   r   r   r   G  s-    )23KM(%J Or   r   c                       e Zd Z	 ddZy)	Konquerorc                    t        j                  d|       |dk(  rd}nd}t        j                  }	 t        j                  d||gd|||      }|j                          y# t        $ r Y nw xY w	 t        j                  dd	|gd|||d
      }|j                         y# t        $ r Y nw xY w	 t        j                  dd|gd|||d
      }|j                         d u S # t        $ r Y yw xY w)NrX   r8   newTabopenURL	kfmclientT)r[   rs   rt   ru   	konquerorz--silentrr   kfmz-dF)r\   r]   r`   rz   ra   rb   rc   rl   )rG   r.   r/   r0   r   devnullrg   s          r   r   zKonqueror.open\  s   		#S)!8FF$$
	  +vs!;+/w(/AA FFH  			  +z3!?+/w(/379A vvx  			&  %s!3+/w(/379A FFH$%  		s5   A   	A,+A,0B 	B+*B+/C 	C+*C+NrQ   rm   r   r   r   r   r   U  s    +&r   r   c                   &    e Zd Z	 ddgZdZdZdZdZy)Edgerp   r   rP   r   TNr   r   r   r   r   r     s%    0d#KM)Jr   r   c                     t        j                  d      rt        dd t        d             t        j                  d      rt        dd t        g d             dt        j
                  v r+t        j                  d      rt        dd t        d             dt        j
                  v r/t        j                  d      rt        dt        t        d             t        j                  d      rt        dd t        d             d	D ].  } t        j                  |       st        | d t        |              0 t        j                  d
      rt        d
t        t        d
             n/t        j                  d      rt        dt        t        d             t        j                  d      rt        dd t        d             dD ].  } t        j                  |       st        | d t        |              0 t        j                  d      rt        dd t        d             t        j                  d      rt        dd t        d             y y )Nzxdg-opengio)r   r   z--r   GNOME_DESKTOP_SESSION_IDz	gvfs-openKDE_FULL_SESSIONr   zx-www-browser)firefox	iceweasel	seamonkeyzmozilla-firefoxmozillar   r   epiphany)zgoogle-chromechromechromiumzchromium-browseroperamicrosoft-edge)r:   r;   r   r%   r<   environr   r   r   r   r   r   )r+   s    r   register_X_browsersr     s    ||JT#4Z#@A ||E/0KLM "RZZ/FLL4Md$5k$BC RZZ'FLL,Ei;)?@ ||O$$(9/(JK 6<< WdGG$456 ||E	9U#34	k	"i;)?@ ||JT8J#78 O 5<< WdF7O45
 ||G$g/ ||$%!4.>)?@ &r   c                     g a t        j                  dk(  rXt        dd t	        d             t        dd t	        d             t        dd t	        d             t        dd t	        d             t        j                  dk(  rt        dd t        d             t        j                  d d	 d
k(  rt        dt               t        j                  j                  t        j                  j                  dd      d      } t        j                  j                  t        j                  j                  dd      d      }ddddd| |fD ].  }t        j                  |      st        |d t        |             0 t        j                  d      rt        dd t        d             nt        j                  j                  d      st        j                  j                  d      r`	 dj                         }t!        j"                  |t         j$                        }|j'                         j)                         }|at5                t        j                  j                  d      rt        j                  d      rt        dd t7        d             t        j                  d      rt        dd t7        d             t        j                  d      rt        dd t9        d             t        j                  d      rt        dd t7        d             t        j                  d      rt        dd t7        d             d t        j                  v ryt        j                  d    j                  t        j:                        }|j=                          |D ]3  }|d!k7  s	t?        |d"#      }|d$   t        |d t7        |      d"#       5 y y # t,        t         j.                  t0        t2        f$ r Y w xY w)%NdarwinMacOSXdefaultr   r   safari
serenityosBrowserrY   rZ   zwindows-defaultzPROGRAMFILES(x86)zC:\Program Files (x86)z%Microsoft\Edge\Application\msedge.exePROGRAMFILESzC:\Program Filesr   r   r   zMicrosoftEdge.exer   DISPLAYWAYLAND_DISPLAYz$xdg-settings get default-web-browser)ru   TERMzwww-browserlinkselinkslynxw3mBROWSERrP   Tr   r"   ) r   r\   r_   r   MacOSXOSAScriptr%   WindowsDefaultr<   r=   joinr   r   r:   r;   r   r$   r`   check_outputrz   decodestripr   FileNotFoundErrorCalledProcessErrorPermissionErrorNotADirectoryErrorr   r&   r   pathsepreverser(   )edge64edge32r+   r@   
raw_resultresultuserchoicesrf   s           r   r   r     s   I
||x4!;<4!:;D/)"<=4!:; |||#D"3I">?
||BQ5 "N3 bjjnn-@B[\HJ bjjnn^=PQHJ!;	81 	DG||G$$(9'(BC	D <<+,%tT2E-FG ::>>)$

7H(I/<BBD'44SASAST
#**,224
 )/%! ::>>&!||M*n].KL||G$$w(?@||H%4)9:||F#~f'=>||E"nU&;< BJJjj+11"**= # 	UG"}!'T:q6>WdN7,CtT		U 7 &z'D'DoWij s    AO #O('O(rY   rZ   c                       e Zd ZddZy)r   c                 z    t        j                  d|       	 t        j                  |       y# t        $ r Y yw xY w)NrX   TF)r\   r]   r<   	startfilerc   rK   s       r   r   zWindowsDefault.open(  s=    II'-S!    s   . 	::NrQ   rm   r   r   r   r   r   '  s    		r   r   r   c                       e Zd Z	 d ZddZy)r   c                 x    t        j                  | j                  j                   dt        d       || _        y )Nz3 is deprecated in 3.11 use MacOSXOSAScript instead.r8   
stacklevelwarningswarn	__class__r
   DeprecationWarningr   rF   s     r   rH   zMacOSX.__init__C  s5    MMT^^445 6: :;MZ[]DIr   c                    t        j                  d|       d|vrd|z   }t        t        |            }| j                  dk(  rd|j                  dd      z  }nE| j                  dk(  rd	}nd
|dz
  z  }d|j                  dd      z  }d| j                  d|d|d}t        j                  dd      }|y|j                  |       |j                         }| S )NrX   :zfile:r   open location "%s""%22OmniWebrP   ztoWindow %dr"   zOpenURL "%s"ztell application "zK"
                                activate
                                 z%
                            end tell	osascriptwF)
r\   r]   rx   boolr   r^   r<   popenwriteclose)	rG   r.   r/   r0   scripttoWindowr@   osapiper   s	            r   r   zMacOSX.openH  s    II'- #:ck d3i.CyyI%-C0GG 99	)!H  -a8H$s{{3'>> ,099c8E
 hh{C0GMM&!B6Mr   NrQ   rh   r   r   r   r   r   9  s    		
 	r   r   c                   \     e Zd Zd fd	Zed        Zej                  d        ZddZ xZS )r   c                 $    t         |   |       y rE   )superrH   )rG   r   r   s     r   rH   zMacOSXOSAScript.__init__k  s    GT"r   c                     t        j                  | j                  j                   d| j                  j                   dt        d       | j
                  S Nz!._name is deprecated in 3.11 use z.name instead.r8   r   r   )rG   s    r   _namezMacOSXOSAScript._namen  sK    MMT^^445 6""&.."9"9!:.J,< 99r   c                     t        j                  | j                  j                   d| j                  j                   dt        d       || _        y r   r   )rG   vals     r   r   zMacOSXOSAScript._nameu  sH    MMT^^445 6""&.."9"9!:.J,< DIr   c                    | j                   dk(  rd|j                  dd      z  }n!d| j                   |j                  dd      fz  }t        j                  dd      }|y|j	                  |       |j                         }| S )	Nr   r   r   r   z
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   r   r   F)r   r^   r<   r   r   r   )rG   r.   r/   r0   r   r   r   s          r   r   zMacOSXOSAScript.open|  s    yyI%-C0GG
 		3;;sE#:;< hh{C0GMM&!B6Mr   )r   rQ   )	r
   r   r   rH   propertyr   setterr   __classcell__)r   s   @r   r   r   j  s9    	# 
	 
	 
	 
		r   r   c                     dd l } dt        j                  d   z  }	 | j                  t        j                  dd  ddg      \  }}d}D ]O  \  }}|dk(  rd}|dk(  rd	}|d
k(  s|dk(  s!t	        |t        j
                         t        j                          Q t              dk7  r0t	        |t        j
                         t        j                  d       |d   }t        ||       t	        d       y # | j                  $ rV}t	        |t        j
                         t	        |t        j
                         t        j                  d       Y d }~d }~ww xY w)Nr   zcUsage: %s [-n | -t | -h] url
    -n: open new window
    -t: open new tab
    -h, --help: show helpr"   ntdhhelp)filer   z-tr8   z-hz--help)	getoptr\   argverrorprintru   exitlenr   )	r   usageoptsrR   msgnew_winoar.   s	            r   mainr    s     #xx{+E]]388AB<A
d
 G 19g$Y!$Y!x-%cjj)HHJ 4yA~e#**%
q'Cg	$K% << c

#e#**%s   (C5 5EAEE__main__rE   rQ   )*r<   r#   r:   r\   r`   	threadingr   __all__	Exceptionr   RLockr   r   r   r   r   r   r   r   r   r(   objectrC   r&   r%   ro   r   r   r   Chromiumr   r   r   r   r   r   r_   r   r   r   r  r
   r   r   r   <module>r     s|   E 
   
   
J	I 	 				 #e #5D& ', D!& !&[ 8 &L+ L^k { [  K [ 2& 2&j; "2AjMUl <<u
 
  <<8/ /b#+ #L8 zF r   