grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026î ¤ f¸Sã@sádZddlZddlZddlZddlZddlZddddddgZGd d„deƒZiZ gZ dd d d„Z dd d„Z dd dd„Z dd„Zdd„Zd dd„ZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZeZGdd„deƒZGdd „d eƒZeZGd!d"„d"eƒZGd#d$„d$eƒZGd%d&„d&eƒZGd'd(„d(eƒZd)d*„Zej j d+ƒrüeƒnej j d,ƒrÙej!d-ƒr6e d-ded-ƒƒnej!d.ƒr^e d.ded.ƒƒnej!d/ƒr†e d/ded/ƒƒnej!d0ƒr®e d0ded0ƒƒnej!d1ƒrÙe d1ded1ƒƒqÙnej"dd2…d3kr–Gd4d5„d5eƒZ#gZ iZ e d6e#ƒej$j%ej j d7d8ƒd9ƒZ&xNd:d;d<d=d>d?e&fD].Z'ej!e'ƒrae e'dee'ƒƒqaqaWnej"d@krGdAdB„dBeƒZ(GdCdD„dDeƒZ)e dEde)dEƒdLƒe d:de)d:ƒdMƒe dBde)dFƒdNƒndGej kr»ej dGj*ej+ƒZ,e,j-ƒxXe,D]PZ.e.dHkrXee.dOƒZ/e/d dkr¨e e.dee.ƒdPƒq¨qXqXWdZ.[.[,ndIdJ„Z0e1dKkrÝe0ƒndS)Qz?Interfaces for launching and remotely controlling Web browsers.éNÚErrorÚopenÚopen_newÚ open_new_tabÚgetÚregisterc@seZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©r r ú//opt/alt/python34/lib64/python3.4/webbrowser.pyr s écCsU||gt|jƒ<|dkr2tj|ƒn|dkrQtjd|ƒndS)z9Register a browser connector and, optionally, connection.rN)Ú _browsersÚlowerÚ _tryorderÚappendÚinsert)ÚnameÚklassÚinstanceÚupdate_tryorderr r r rs   c Csó|dk r|g}nt}xÂ|D]º}d|krwtj|ƒ}|ddkrjt|dd…ƒSt|ƒSq%yt|jƒ}Wntk r«t|ƒ}YnX|ddk rÄ|dS|ddk r%|dƒSq%Wt dƒ‚dS) zCReturn a browser launcher instance appropriate for the environment.Nz%sr ú&rz!could not locate runnable browseréÿÿÿÿr) rÚshlexÚsplitÚBackgroundBrowserÚGenericBrowserrrÚKeyErrorÚ _synthesizer)ZusingZ alternativesÚbrowserÚcommandr r r rs$      TcCs:x3tD]+}t|ƒ}|j|||ƒrdSqWdS)NTF)rrr)ÚurlÚnewÚ autoraiserrr r r r9s   cCs t|dƒS)Nr )r)r!r r r r@scCs t|dƒS)Né)r)r!r r r rCsc Csó|jƒd}tj|ƒs)ddgStjj|ƒ}yt|jƒ}Wntk rmddgSYnX|d}|ré|jƒ|jkréddl }|j |ƒ}||_ tjj|ƒ|_t |d||ƒd|gSddgS)a¾Attempt to synthesize a controller base on existing controllers. This is useful to create a controller when a user specifies a path to an entry in the BROWSER environment variable -- we can copy a general controller to operate using a specific installation of the desired browser in this way. If we can't create a controller in this way, or if there is no executable for the requested browser, return [None, None]. rNr ) rÚshutilÚwhichÚosÚpathÚbasenamerrrÚcopyrr)rrÚcmdrr Z controllerr*r r r rGs"       rc@sXeZdZdZdgZddd„Zdddd „Zd d „Zd d „ZdS)Ú BaseBrowserz3Parent class for all browsers. Do not use directly.z%sÚcCs||_||_dS)N)rr))Úselfrr r r Ú__init__ns zBaseBrowser.__init__rTcCs t‚dS)N)ÚNotImplementedError)r.r!r"r#r r r rrszBaseBrowser.opencCs|j|dƒS)Nr )r)r.r!r r r ruszBaseBrowser.open_newcCs|j|dƒS)Nr$)r)r.r!r r r rxszBaseBrowser.open_new_tabN) rr r Ú__doc__Úargsr/rrrr r r r r,is   r,c@s4eZdZdZdd„Zdddd„ZdS) rzVClass for all browsers started with a command and without remote functionality.cCsct|tƒr'||_dg|_n |d|_|dd…|_tjj|jƒ|_dS)Nz%srr )Ú isinstanceÚstrrr2r'r(r))r.rr r r r/€s   zGenericBrowser.__init__rTc s’|jg‡fdd†|jDƒ}yOtjdd…dkrTtj|ƒ}ntj|ddƒ}|jƒ SWntk r�dSYnXdS)Ncs"g|]}|jdˆƒ‘qS)z%s)Úreplace)Ú.0Úarg)r!r r ú ‹s z'GenericBrowser.open..éÚwinÚ close_fdsTF)rr2ÚsysÚplatformÚ subprocessÚPopenÚwaitÚOSError)r.r!r"r#ÚcmdlineÚpr )r!r rŠs zGenericBrowser.openN)rr r r1r/rr r r r r|s  rc@s(eZdZdZdddd„ZdS)rzHClass for all browsers which are to be started in the background.rTc s�|jg‡fdd†|jDƒ}yZtjdd…dkrTtj|ƒ}ntj|ddddƒ}|jƒdkSWntk r˜dSYnXdS) Ncs"g|]}|jdˆƒ‘qS)z%s)r5)r6r7)r!r r r8œs z*BackgroundBrowser.open..r9r:r;TÚstart_new_sessionF)rr2r<r=r>r?ÚpollrA)r.r!r"r#rBrCr )r!r r›s  zBackgroundBrowser.openN)rr r r1rr r r r r—s rc@sdeZdZdZdZdZdZddgZdZdZ dZ dd„Z d dd d „Z dS) Ú UnixBrowserz=Parent class for all Unix browsers with remote functionality.NFTz%actionz%sc Cs&g}|rC|jrCt|ƒ}|j|}|rC|g}qCn|jg||}|sf|jrrtj}nd}tj|ddd|d|jrŸ|p¢dd|ddƒ}|rñy|jdƒ} | SWq"tj k rídSYq"Xn1|jr|j ƒdkrdSdSn |jƒ SdS) Nr;TÚstdinÚstdoutÚstderrrDéF) Ú raise_optsÚintrÚ backgroundr>ÚDEVNULLr?Úredirect_stdoutr@ZTimeoutExpiredrE) r.r2Zremoter#Z raise_optZoptrBZinoutrCÚrcr r r Ú_invokeºs0      zUnixBrowser._invokercsû|dkr|j‰n_|dkr0|j‰nG|dkrc|jdkrW|j‰qw|j‰ntdd|ƒ‚‡‡fdd†|jDƒ}dd„|Dƒ}|j|d |ƒ}|só‡fd d†|jDƒ}|j|d d ƒSd SdS) Nrr r$zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %scs.g|]$}|jdˆƒjdˆƒ‘qS)z%sz%action)r5)r6r7)Úactionr!r r r8ës z$UnixBrowser.open..cSsg|]}|r|‘qSr r )r6r7r r r r8ís Tcs"g|]}|jdˆƒ‘qS)z%s)r5)r6r7)r!r r r8ñs F)Ú remote_actionÚremote_action_newwinÚremote_action_newtabrÚ remote_argsrQr2)r.r!r"r#r2Úsuccessr )rRr!r rÝs$        zUnixBrowser.open) rr r r1rKrMrOrVrSrTrUrQrr r r r rF©s   #rFc@sFeZdZdZddgZddgZdZdZdZd Z d S) ÚMozillaz-Launcher class for Mozilla/Netscape browsers.z-noraisez-raisez-remotezopenURL(%s%action)r-z ,new-windowz,new-tabTN) rr r r1rKrVrSrTrUrMr r r r rX÷s   rXc@s@eZdZdZddgZddgZdZdZdZd S) ÚGaleonz,Launcher class for Galeon/Epiphany browsers.z-noraiser-z%actionz%sz-nz-wTN) rr r r1rKrVrSrTrMr r r r rYs   rYc@s:eZdZdZddgZdZdZdZdZdS)ÚChromez)Launcher class for Google Chrome browser.z%actionz%sr-z --new-windowTN) rr r r1rVrSrTrUrMr r r r rZs  rZc@sFeZdZdZddgZddgZdZdZdZdZ d S) ÚOperaz!Launcher class for Opera browser.z-noraiser-z-remotezopenURL(%s%action)z ,new-windowz ,new-pageTN) rr r r1rKrVrSrTrUrMr r r r r[s   r[c@s@eZdZdZddgZdZdZdZdZdZ dS) ÚElinksz#Launcher class for Elinks browsers.z-remotezopenURL(%s%action)r-z ,new-windowz,new-tabFN) rr r r1rVrSrTrUrMrOr r r r r\%s  r\c@s(eZdZdZdddd„ZdS)Ú Konquerorz±Controller for the KDE File Manager (kfm, or Konqueror). See the output of ``kfmclient --commands`` for more information on the Konqueror remote-control interface. rTc"CsG|dkrd}nd}tj}y4tjd||gddd|d|d |ƒ}Wntk rlYnX|jƒdSy:tjd d |gddd|d|d |d dƒ}Wntk rÉYnX|jƒdkràdSy:tjd d|gddd|d|d |d dƒ}Wntk r2dSYnX|jƒdkSdS)Nr$ZnewTabZopenURLÚ kfmclientr;TrGrHrIÚ konquerorz--silentrDÚkfmz-dF)r>rNr?rAr@rE)r.r!r"r#rRÚdevnullrCr r r r:s:               zKonqueror.openN)rr r r1rr r r r r]3s r]c@s:eZdZdd„Zdd„Zdddd„Zd S) ÚGrailc Csddl}ddl}ddl}ddl}tjj|jƒdƒ}|jtj ƒƒd}tjj||dƒ}|j|ƒ}|s–dS|j|j |j ƒ} x^|D]V} y| j | ƒWn8t k rytj| ƒWnt k rYnXYqµX| SqµWdS)Nrz .grail-unixz-*)ÚglobÚpwdÚsocketÚtempfiler'r(ÚjoinZ gettempdirÚgetpwuidÚgetuidZAF_UNIXZ SOCK_STREAMZconnectrAÚunlink) r.rcrdrerfZtempdirÚuserÚfilenameZmaybesÚsÚfnr r r Ú_find_grail_rcks*         zGrail._find_grail_rccCs1|jƒ}|sdS|j|ƒ|jƒdS)Nrr )roÚsendÚclose)r.rRrmr r r Ú_remote…s    z Grail._remoterTcCs3|r|jd|ƒ}n|jd|ƒ}|S)NzLOADNEW zLOAD )rr)r.r!r"r#Úokr r r r�sz Grail.openN)rr r rorrrr r r r rbgs   rbc CsŽtjdƒr(tddtdƒƒndtjkr_tjdƒr_tddtdƒƒndtjkr–tjdƒr–tddtdƒƒndtjkrÍtjdƒrÍtdttdƒƒntjdƒrõtddtdƒƒnx6dD].}tj|ƒrüt|dt|ƒƒqüqüWtjdƒrVtdttdƒƒn(tjdƒr~tdttdƒƒnx6dD].}tj|ƒr…t|dt|ƒƒq…q…Wtjdƒrßtddtdƒƒnx6dD].}tj|ƒræt|dt |ƒƒqæqæWtjdƒr@tddt dƒƒntjdƒrhtddtdƒƒntjdƒrŠtdt dƒndS) Nzxdg-openZGNOME_DESKTOP_SESSION_IDz gvfs-openz gnome-openZKDE_FULL_SESSIONr^z x-www-browserúmozilla-firefoxÚfirefoxúmozilla-firebirdÚfirebirdÚ iceweaselÚiceapeÚ seamonkeyÚmozillaÚnetscaper`r_ÚgaleonÚepiphanyZ skipstoneú google-chromeÚchromeÚchromiumúchromium-browserÚoperaZmosaicZgrail) rtrurvrwrxryrzr{r|)r}r~)rr€r�r‚) r%r&rrr'Úenvironr]rXrYrZr[rb)rr r r Úregister_X_browsersœsD   r…ZDISPLAYZTERMz www-browserZlinksZelinksZlynxZw3mr9r:c@s"eZdZdddd„ZdS)ÚWindowsDefaultrTc Cs2ytj|ƒWntk r)dSYnXdSdS)NFT)r'Z startfilerA)r.r!r"r#r r r rós   zWindowsDefault.openN)rr r rr r r r r†òs r†zwindows-defaultZ PROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErurwrzr{r|rƒÚdarwinc@s4eZdZdZdd„Zdddd„ZdS) ÚMacOSXa{Launcher class for Aqua browsers on Mac OS X Optionally specify a browser name on instantiation. Note that this will not work for Aqua browsers if the user has moved the application package after installation. If no browser is specified, the default browser, as specified in the Internet System Preferences panel, will be used. cCs ||_dS)N)r)r.rr r r r/szMacOSX.__init__rTc Cs÷d|kst‚d|kr+d|}ntt|ƒƒ}|jdkred|jddƒ}nR|jdkr}d }nd |d }d |jddƒ}d |j||f}tjddƒ}|dkrÙdS|j|ƒ|jƒ}| S)Nú'ú:zfile:Údefaultzopen location "%s"ú"z%22ZOmniWebr-z toWindow %dr z OpenURL "%s"z‰tell application "%s" activate %s %s end tellÚ osascriptÚwF) ÚAssertionErrorrLÚboolrr5r'ÚpopenÚwriterq) r.r!r"r#ÚscriptZtoWindowr+ÚosapiperPr r r rs"      z MacOSX.openN)rr r r1r/rr r r r rˆs  rˆc@s.eZdZdd„Zdddd„ZdS)ÚMacOSXOSAScriptcCs ||_dS)N)Ú_name)r.rr r r r/@szMacOSXOSAScript.__init__rTcCs‡|jdkr(d|jddƒ}nd|j|jddƒf}tjddƒ}|dkridS|j|ƒ|jƒ}| S) Nr‹zopen location "%s"rŒz%22zž tell application "%s" activate open location "%s" end r�rŽF)r–r5r'r‘r’rq)r.r!r"r#r“r”rPr r r rCs   zMacOSXOSAScript.openN)rr r r/rr r r r r•?s  r•Zsafarir‹ZBROWSERr-c CsEddl}dtjd}y)|jtjdd…dƒ\}}Wn[|jk r£}z8t|dtjƒt|dtjƒtjdƒWYdd}~XnXd}x>|D]6\}}|dkrÒd}q±|dkr±d}q±q±Wt|ƒdkr t|dtjƒtjdƒn|d}t||ƒtd ƒdS) NrzDUsage: %s [-n | -t] url -n: open new window -t: open new tabr ZntdÚfilez-nz-tr$ú) Úgetoptr<ÚargvÚerrorÚprintrIÚexitÚlenr) r™ZusageZoptsr2ÚmsgZnew_winÚoÚar!r r r Úmainrs( )     r¢Ú__main__rrrrr)2r1r'rr%r<r>Ú__all__Ú ExceptionrrrrrrrrrÚobjectr,rrrFrXZNetscaperYrZZChromiumr[r\r]rbr…r„r&r=r†r(rgZiexplorerrˆr•rÚpathsepZ _userchoicesÚreverserBr+r¢rr r r r Ús’       "N    45 >     .   #