
    /i"d                        	 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d3dddZd3dZd4d
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 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j%        dd(         d)k    r G d* d+e          Z&ej%        d,k    r G d- d.e          Z' G d/ d0e          Z(d1 Z)e*d2k    r e)             dS dS )5    N)Erroropenopen_newopen_new_tabgetregisterc                       e Zd ZdS )r   N)__name__
__module____qualname__     #/usr/lib64/python3.11/webbrowser.pyr   r      s        Dr   r   F	preferredc                >   	 t           5  t          t                       ||gt          |                                 <   |st
          r%| t
          v rt                              d|            nt                              |            d d d            d S # 1 swxY w Y   d S )Nr   )_lock	_tryorderregister_standard_browsers	_browserslower_os_preferred_browserinsertappend)nameklassinstancer   s       r   r   r      s    '	 # #&(((#(("3	$**,,
  	#. 	#4;P3P3PQ%%%%T"""# # # # # # # # # # # # # # # # # #s   A<BBBc                 0   	 t           4t          5  t           t                       d d d            n# 1 swxY w Y   | | g}nt           }|D ]}d|v rJt          j        |          }|d         dk    rt          |d d                   c S t          |          c S 	 t          |                                         }n# t          $ r t          |          }Y nw xY w|d         
|d         c S |d          |d                     c S t          d          )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??k'**Gr{c!!("66666%g...../#GMMOO4 / / /%g../qz%qz!!!'!wqz||### (
3
4
44s   266B==CCTc                     	 t           4t          5  t           t                       d d d            n# 1 swxY w Y   t           D ]+}t          |          }|                    | ||          r dS ,dS )NTF)r   r   r   r   r   )urlnew	autoraiser   r+   s        r   r   r   H   s      	- 	- *,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-   d))<<S),, 	44	5s   266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                   	 |                                  d         }t          j        |          sd d gS t          j                            |          }	 t          |                                         }n# t          $ r d d gcY S w xY w|d         }|rx|                                |j        k    r[dd l	}|	                    |          }| |_
        t          j                            |           |_        t          | d ||           d |gS d d gS )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|7C  DDJJLL)   d| J "djjllj&999YYz**
!
 g..w77
$yIIIIj!!$<s   A4 4BBc                   H    e Zd Z	 dgZddZddZd Zd Zed	             Z	d
S )BaseBrowserr    c                 "    || _         || _        d S N)r   r>   selfr   s     r   __init__zBaseBrowser.__init__   s    	r   r   Tc                     t           rF   )NotImplementedErrorrH   r.   r/   r0   s       r   r   zBaseBrowser.open   s    !!r   c                 .    |                      |d          S r2   r3   rH   r.   s     r   r   zBaseBrowser.open_new       yya   r   c                 .    |                      |d          S r7   r3   rN   s     r   r   zBaseBrowser.open_new_tab   rO   r   c                     	 | r9|                                                      d          rt          d|           d S d S )N-z'Invalid URL (leading dash disallowed): )lstrip
startswith
ValueErrorr4   s    r   
_check_urlzBaseBrowser._check_url   s[    Q 	P3::<<**3// 	PNsNNOOO	P 	P 	P 	Pr   N)rD   r   T)
r
   r   r   argsrI   r   r   r   staticmethodrV   r   r   r   rC   rC      s        =6D   " " " "! ! !! ! ! P P \P P Pr   rC   c                       e Zd Z	 d ZddZdS )r&   c                     t          |t                    r|| _        dg| _        n|d         | _        |dd          | _        t          j                            | j                  | _        d S )Nr   r   r"   )
isinstancestrr   rX   r<   r=   r>   rG   s     r   rI   zGenericBrowser.__init__   s_    dC   	!DIDII QDIQRRDI((33r   r   Tc                 d   t          j        d           |                                | j        gfd| j        D             z   }	 t           j        d d         dk    rt          j        |          }nt          j        |d          }|                                 S # t          $ r Y dS w xY w)Nwebbrowser.openc                 <    g | ]}|                     d           S r   replace.0argr.   s     r   
<listcomp>z'GenericBrowser.open.<locals>.<listcomp>   7     !7 !7 !7%( "%T3!7!7 !7 !7 !7r      winT)	close_fdsF)
sysauditrV   r   rX   platform
subprocessPopenwaitOSErrorrH   r.   r/   r0   cmdlineps    `    r   r   zGenericBrowser.open   s    	#S)))9+ !7 !7 !7 !7,0I!7 !7 !7 7	|BQB5(($W--$W===vvxx< 	 	 	55	s   	AB! !
B/.B/NrW   r
   r   r   rI   r   r   r   r   r&   r&      s<        ,4 4 4     r   r&   c                       e Zd Z	 ddZdS )r%   r   Tc                 h   | j         gfd| j        D             z   }t          j        d           |                                	 t          j        d d         dk    rt          j        |          }nt          j        |dd          }|                                d u S # t          $ r Y dS w xY w)Nc                 <    g | ]}|                     d           S ra   rb   rd   s     r   rg   z*BackgroundBrowser.open.<locals>.<listcomp>   rh   r   r_   ri   rj   T)rk   start_new_sessionF)
r   rX   rl   rm   rV   rn   ro   rp   pollrr   rs   s    `    r   r   zBackgroundBrowser.open   s    9+ !7 !7 !7 !7,0I!7 !7 !7 7	#S)))	|BQB5(($W--$W7;= = =FFHH$% 	 	 	55	s   	AB# #
B10B1NrW   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dS )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        r|pd |d          }	|r/	 |	                    d          }
|
 S # t          j	        $ r Y dS w xY w| j        r|	
                                dS dS |	                                 S )NTrk   stdinstdoutstderrrz      F)
raise_optsintr   
backgroundro   DEVNULLrp   redirect_stdoutrq   TimeoutExpiredr{   )rH   rX   remoter0   r.   	raise_optoptrt   inoutru   rcs              r   _invokezUnixBrowser._invoke   s!   	 	&do 	&II/),C%I9+	)D0 	T_ 	&EE EWE%)%9%Ce%Kt$)TC C C  	 VVAYYv,   tt_ 	 vvxxtuvvxx<s   9B B$#B$r   c                    t          j        d           |                                |dk    r| j        n@|dk    r| j        n2|dk    r| j        | j        n| j        nt          dd|z  z             fd| j        D             }d |D             }|                     |d	|          }|s*fd
| j	        D             }|                     |dd          S d	S )Nr_   r   r"   r8   zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sc                 d    g | ],}|                     d                                d          -S )r   r   rb   )re   rf   actionr.   s     r   rg   z$UnixBrowser.open.<locals>.<listcomp>  sG     - - - D#&&..y&AA - - -r   c                     g | ]}||S r   r   )re   rf   s     r   rg   z$UnixBrowser.open.<locals>.<listcomp>  s    +++s++++r   Tc                 <    g | ]}|                     d           S ra   rb   rd   s     r   rg   z$UnixBrowser.open.<locals>.<listcomp>   s'    @@@sCKKc**@@@r   F)
rl   rm   rV   remote_actionremote_action_newwinremote_action_newtabr   remote_argsr   rX   )rH   r.   r/   r0   rX   successr   s    `    @r   r   zUnixBrowser.open
  s/   	#S)))!88'FFAXX.FFAXX(02295;< = = =- - - - -+- - -++t+++,,tT9c:: 	@@@@di@@@D<<eU3334r   rF   rW   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r~      sl        GJJO d#KM!  !  !  ! F     r   r~   c                   (    e Zd Z	 ddgZdZdZdZdZdS )Mozillar   r   rD   z-new-windowz-new-tabTNr
   r   r   r   r   r   r   r   r   r   r   r   r   &  s1        .d#KM(%JJJr   r   c                   0    e Zd Z	 ddgZddgZdZdZdZdZd	S )
Netscape-noraisez-raise-remoteopenURL(%s%action)rD   ,new-window,new-tabTN)	r
   r   r   r   r   r   r   r   r   r   r   r   r   r   0  s<        .h'J23KM(%JJJr   r   c                   ,    e Zd Z	 ddgZddgZdZdZdZdS )	Galeonr   rD   r   r   -nz-wTN)r
   r   r   r   r   r   r   r   r   r   r   r   r   ;  s5        6b!Jd#KMJJJr   r   c                   (    e Zd Z	 ddgZdZdZdZdZdS )Chromer   r   rD   --new-windowTNr   r   r   r   r   r   E  s1        /d#KM)JJJr   r   c                   (    e Zd Z	 ddgZdZdZdZdZdS )Operar   r   rD   r   TNr   r   r   r   r   r   Q  s1        'd#KM)JJJr   r   c                   ,    e Zd Z	 ddgZdZdZdZdZdZdS )Elinksr   r   rD   r   r   FN)	r
   r   r   r   r   r   r   r   r   r   r   r   r   r   [  s9        )23KM(%J OOOr   r   c                       e Zd Z	 ddZdS )	Konquerorr   Tc                    t          j        d|           |                     |           |dk    rd}nd}t          j        }	 t          j        d||gd|||          }|                                 dS # t          $ r Y nw xY w	 t          j        dd	|gd|||d
          }|                                dS n# t          $ r Y nw xY w	 t          j        dd|gd|||d
          }|                                d u S # t          $ r Y dS w xY w)Nr_   r8   newTabopenURL	kfmclientT)rk   r   r   r   	konquerorz--silentr   kfmz-dF)	rl   rm   rV   ro   r   rp   rq   rr   r{   )rH   r.   r/   r0   r   devnullru   s          r   r   zKonqueror.openp  s   	#S)))!88FFF$
	 +vs!;+/w(/A A AA FFHHH4  	 	 	D		 +z3!?+/w(/379 9 9A vvxxt  	  	 	 	D		& %s!3+/w(/379 9 9A FFHH$%  	 	 	55	s6   A5 5
BBB: :
CCC> >
DDNrW   r|   r   r   r   r   r   i  s-        ,& ,& ,& ,& ,& ,&r   r   c                   "    e Zd Zd Zd ZddZdS )Grailc                    dd l }dd l}dd l}dd l}t          j                            |                                d          }|                    t	          j	                              d         }t          j                            |
                    |          |
                    |          dz             }|                     |          }|sd S |                    |j        |j                  }	|D ]Q}
	 |	                    |
           |	c S # t          $ r) 	 t	          j        |
           n# t          $ r Y nw xY wY Nw xY wd S )Nr   z.grail-unixz-*)globpwdsockettempfiler<   r=   join
gettempdirgetpwuidgetuidescapeAF_UNIXSOCK_STREAMconnectrr   unlink)rH   r   r   r   r   tempdiruserfilenamemaybessfns              r   _find_grail_rczGrail._find_grail_rc  s[   


',,x2244,. .||BIKK((+7<<G 4 4dkk$6G6G$6NOO8$$ 	4MM&.&*<== 	 	B			"     IbMMMM   D			 	s6   6D
ED/.E/
D<9E;D<<EEc                     |                                  }|sdS |                    |           |                                 dS )Nr   r"   )r   sendclose)rH   r   r   s      r   _remotezGrail._remote  sA    !! 	1	v				qr   r   Tc                     t          j        d|           |                     |           |r|                     d|z             }n|                     d|z             }|S )Nr_   zLOADNEW zLOAD )rl   rm   rV   r   )rH   r.   r/   r0   oks        r   r   z
Grail.open  sa    	#S))) 	-j3.//BBgm,,B	r   NrW   )r
   r   r   r   r   r   r   r   r   r   r     sF          4       r   r   c                  Z   t          j        d          rt          dd t          d                     t          j        d          r t          dd t          g d                     dt          j        v r2t          j        d          rt          dd t          d                     dt          j        v r7t          j        d          r#t          dt          t          d                     t          j        d          rt          dd t          d                     d	D ]4} t          j        |           rt          | d t          |                      5d
D ]4} t          j        |           rt          | d t          |                      5t          j        d          r$t          dt          t          d                     n7t          j        d          r#t          dt          t          d                     dD ]4} t          j        |           rt          | d t          |                      5t          j        d          rt          dd t          d                     dD ]4} t          j        |           rt          | d t          |                      5t          j        d          rt          dd t          d                     t          j        d          rt          dd t          d                     t          j        d          rt          dt          d            d S d S )Nzxdg-opengio)r   r   z--r   GNOME_DESKTOP_SESSION_IDz	gvfs-openKDE_FULL_SESSIONr   zx-www-browser)firefox	iceweaseliceape	seamonkey)zmozilla-firefoxzmozilla-firebirdfirebirdmozillanetscaper   r   )galeonepiphany	skipstone)zgoogle-chromechromechromiumzchromium-browseroperamosaicgrail)r:   r;   r   r%   r<   environr   r   r   r   r   r   r   )r+   s    r   register_X_browsersr     s     |J BT#4Z#@#@AAA |E N/0K0K0KLLMMM "RZ//FL4M4M/d$5k$B$BCCC RZ''FL,E,E'i;)?)?@@@|O$$ L$(9/(J(JKKK C 6 6<   	6WdGG$4$4555+ 7 7 <   	7WdHW$5$5666 |E A	9U#3#34444	k	"	" Ai;)?)?@@@ * 5 5<   	5WdF7OO444 |K   Dd$5k$B$BCCC O 5 5<   	5WdF7OO444 |G 0$g/// |H >4!28!<!<=== |G '%&&&&&' '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        	                    t          j
                            dd          d          } dddddd| fD ]4}t          j        |          rt          |d t          |                     5nt          j
                            d          st          j
                            d          r	 d                                }t          j        |t          j                  }|                                                                }|an(# t*          t          j        t.          t0          f$ r Y nw xY wt3                       t          j
                            d          rt          j        d          rt          dd t5          d                     t          j        d          rt          dd t5          d                     t          j        d          rt          dd t7          d                     t          j        d          rt          dd t5          d                     t          j        d          rt          dd t5          d                     dt          j
        v rt          j
        d                             t          j                  }|                                 |D ]C}|dk    r9t=          |d !          }|d"          t          |d t5          |          d !           Bd S d S )#NdarwinMacOSXdefaultr   r   safari
serenityosBrowserri   rj   zwindows-defaultPROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXEr   r   r   r   r   DISPLAYWAYLAND_DISPLAYz$xdg-settings get default-web-browser)r   TERMzwww-browserlinkselinkslynxw3mBROWSERrD   Tr   r"   )r   rl   rn   r   MacOSXOSAScriptr%   WindowsDefaultr<   r=   r   r   r   r:   r;   r$   ro   check_outputr   decodestripr   FileNotFoundErrorCalledProcessErrorPermissionErrorNotADirectoryErrorr   r&   r   pathsepreverser(   )iexplorer+   r@   
raw_resultresultuserchoicesrt   s          r   r   r     s   I
|x4!;!;<<<4!:!:;;;D/)"<"<===4!:!:;;; ||##D"3I">">???
|BQB5  "N333 7<<
~?R S S AC C!:{I"GX7 	D 	DG|G$$ D$(9'(B(BCCC	D :>>)$$ 	"
7H(I(I 	"/<BBDD'4SASTTT
#**,,2244
 )/%%	 &z'DoWij     !!! :>>&!! 	=|M** Mn].K.KLLL|G$$ A$w(?(?@@@|H%% ;4)9)9:::|F## ?~f'='=>>>|E"" =nU&;&;<<< BJj+11"*== # 	U 	UG"}}!'T:::q6>WdN7,C,CtTTTT 	U 	Us   #AH   "H%$H%ri   rj   c                       e Zd ZddZdS )r   r   Tc                     t          j        d|           |                     |           	 t          j        |           dS # t
          $ r Y dS w xY w)Nr_   TF)rl   rm   rV   r<   	startfilerr   rL   s       r   r   zWindowsDefault.openi  si    I'---OOC   S!!! t     uus   A 
AANrW   r|   r   r   r   r   r   h  s(        
	 
	 
	 
	 
	 
	r   r   r   c                       e Zd Z	 d ZddZdS )r   c                 f    t          j        | j        j         dt          d           || _        d S )Nz3 is deprecated in 3.11 use MacOSXOSAScript instead.r8   
stacklevelwarningswarn	__class__r
   DeprecationWarningr   rG   s     r   rI   zMacOSX.__init__  sF    MT^4 : : :;MZ[] ] ] ]DIIIr   r   Tc                    t          j        d|           |                     |           d|vrd|z   }t          t	          |                    }| j        dk    rd|                    dd          z  }n@| j        dk    rd	}nd
|dz
  z  }d|                    dd          z  }d| j        d|d|d}t          j        dd          }|dS |	                    |           |
                                }| S )Nr_   :zfile:r   open location "%s""%22OmniWebrD   ztoWindow %dr"   zOpenURL "%s"ztell application "zK"
                                activate
                                 z%
                            end tell	osascriptwF)rl   rm   rV   r   boolr   rc   r<   popenwriter   )	rH   r.   r/   r0   scripttoWindowr@   osapiper   s	            r   r   zMacOSX.open  s   I'---OOC    #::ck d3ii..CyI%%-C0G0GG 9	))!HH  -a8H$s{{3'>'>> ,0999ccc888E
 h{C00GuMM&!!!B6Mr   NrW   rv   r   r   r   r   r   {  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   r   c                 J    t                                          |           d S rF   )superrI   )rH   r   r  s     r   rI   zMacOSXOSAScript.__init__  s!    GG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  )rH   s    r   _namezMacOSXOSAScript._name  sW    MT^4 J J"&."9J J J,< < < < 9r   c                     t          j        | j        j         d| j        j         dt          d           || _        d S r)  r  )rH   vals     r   r*  zMacOSXOSAScript._name  sZ    MT^4 J J"&."9J J J,< < < < DIIIr   r   Tc                 j   t          j        d|           |                     |           | j        dk    rd|                    dd          z  }n d| j        |                    dd          fz  }t          j        dd          }|d	S |                    |           |                                }| S )
Nr_   r   r  r  r  z
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   r  r  F)	rl   rm   rV   r   rc   r<   r   r!  r   )rH   r.   r/   r0   r"  r$  r   s          r   r   zMacOSXOSAScript.open  s    I'---OOC   yI%%-C0G0GG
 	3;;sE#:#:;< h{C00GuMM&!!!B6Mr   )r   rW   )	r
   r   r   rI   propertyr*  setterr   __classcell__)r  s   @r   r   r     s        	# 	# 	# 	# 	# 	# 
	 	 
	 
	 	 
		 	 	 	 	 	 	 	r   r   c                  \   dd l } dt          j        d         z  }	 |                      t          j        dd          d          \  }}na# | j        $ rT}t	          |t          j                   t	          |t          j                   t          j        d           Y d }~nd }~ww xY wd}|D ]\  }}|dk    rd}|dk    rd}t          |          dk    r/t	          |t          j                   t          j        d           |d         }t          ||           t	          d	           d S )
Nr   zDUsage: %s [-n | -t] url
    -n: open new window
    -t: open new tabr"   ntd)filer   z-tr8   )	getoptrl   argverrorprintr   exitlenr   )	r5  usageoptsrX   msgnew_winoar.   s	            r   mainrA    s:   MMM(1+&E]]38ABB<77
dd<   c
####e#*%%%% G $ $199gg$YY!
4yyA~~e#*%%%%
q'Cg	$KKKKKs   +A 
B%A
B  B%__main__rF   rW   )+r<   r#   r:   rl   ro   	threadingr  __all__	Exceptionr   RLockr   r   r   r   r   r   r   r   r   r(   objectrC   r&   r%   r~   r   r   r   r   Chromiumr   r   r   r   r   r   rn   r   r   r   rA  r
   r   r   r   <module>rI     s@   E 
			   



         
J
J
J	 	 	 	 	I 	 	 	 				 #e # # # # #5 5 5 5D   &     ',     DP P P P P& P P P2    [   :       (M M M M M+ M M M`    k       {       [       [        K       [   3& 3& 3& 3& 3& 3& 3& 3&l- - - - -K - - -n@' @' @'DFU FU FU^ <u       " <80 0 0 0 0 0 0 0d% % % % %+ % % %P  0 zDFFFFF r   