ó
è¾bc           @   sW  d  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 d d d d d d g Z d e f d	 „  ƒ  YZ	 i  Z
 g  Z d d
 d „ Z d d „ Z d e d „ Z d „  Z d „  Z d
 d „ Z e j d  d k rï d „  Z n	 d „  Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d  „  ƒ  YZ e Z d! e f d" „  ƒ  YZ d# e f d$ „  ƒ  YZ e Z  d% e f d& „  ƒ  YZ! d' e f d( „  ƒ  YZ" d) e f d* „  ƒ  YZ# d+ e f d, „  ƒ  YZ$ d- „  Z% e j& j d. ƒ r$e% ƒ  n  e j& j d/ ƒ ròe d0 ƒ r[e d0 d e d0 ƒ ƒ n  e d1 ƒ r€e d1 d e d1 ƒ ƒ n  e d2 ƒ r¥e d2 d e" d2 ƒ ƒ n  e d3 ƒ rÊe d3 d e d3 ƒ ƒ n  e d4 ƒ ròe d4 d e d4 ƒ ƒ qòn  e j d  d k r¦d5 e f d6 „  ƒ  YZ' g  Z i  Z
 e d7 e' ƒ e j( j) e j& j d8 d9 ƒ d: ƒ Z* xK d; d< d= d> d? d@ e* f D]+ Z+ e e+ ƒ rte e+ d e e+ ƒ ƒ qtqtWn  e j dA k rHdB e f dC „  ƒ  YZ, dD e f dE „  ƒ  YZ- e dF d e- dF ƒ d ƒ e d; d e- d; ƒ d ƒ e dG d e- dG ƒ d ƒ e dB d e- dH ƒ d ƒ n  e j d  dI k r˜e d? ƒ r˜g  Z i  Z
 e dJ d e dK d? dL g ƒ d ƒ n  dM e j& k r4e j& dM j. e j/ ƒ Z0 e0 j1 ƒ  xX e0 D]P Z2 e2 dN k rÑe e2 d ƒ Z3 e3 d
 d k r!e e2 d e e2 ƒ d ƒ q!qÑqÑWd Z2 [2 [0 n  dO „  Z4 e5 dP k rSe4 ƒ  n  d S(Q   s?   Interfaces for launching and remotely controlling Web browsers.iÿÿÿÿNt   Errort   opent   open_newt   open_new_tabt   gett   registerc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s    /usr/lib/python2.7/webbrowser.pyR       s   i   c         C   sU   | | g t  |  j ƒ  <| d k r2 t j |  ƒ n | d k  rQ t j d |  ƒ n  d S(   s9   Register a browser connector and, optionally, connection.i    N(   t	   _browserst   lowert	   _tryordert   appendt   insert(   t   namet   klasst   instancet   update_tryorder(    (    s    /usr/lib/python2.7/webbrowser.pyR      s
    c         C   sì   |  d k	 r |  g } n t } x» | D]³ } d | k rq t j | ƒ } | d d k rd t | d  ƒ St | ƒ Sq% y t | j ƒ  } Wn t k
 r¤ t	 | ƒ } n X| d d k	 r½ | d S| d d k	 r% | d ƒ  Sq% Wt
 d ƒ ‚ d S(   sC   Return a browser launcher instance appropriate for the environment.s   %siÿÿÿÿt   &i   i    s!   could not locate runnable browserN(   t   NoneR
   t   shlext   splitt   BackgroundBrowsert   GenericBrowserR   R	   t   KeyErrort   _synthesizeR    (   t   usingt   alternativest   browsert   command(    (    s    /usr/lib/python2.7/webbrowser.pyR      s$    i    c         C   s:   x3 t  D]+ } t | ƒ } | j |  | | ƒ r t Sq Wt S(   N(   R
   R   R   t   Truet   False(   t   urlt   newt	   autoraiseR   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR   :   s
    c         C   s   t  |  d ƒ S(   Ni   (   R   (   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR   A   s    c         C   s   t  |  d ƒ S(   Ni   (   R   (   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR   D   s    c         C   sì   |  j  ƒ  d } t | ƒ s& d d g St j j | ƒ } y t | j ƒ  } Wn t k
 rf d d g SX| d } | râ | j ƒ  | j k râ d d l	 } | j	 | ƒ } |  | _
 t j j |  ƒ | _ t |  d | | ƒ d | g Sd d g S(   s¾  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].

    i    i   iÿÿÿÿN(   R   t
   _iscommandR   t   ost   patht   basenameR   R	   R   t   copyR   R   (   R   R   t   cmdR   R   t
   controllerR&   (    (    s    /usr/lib/python2.7/webbrowser.pyR   H   s"    

	
i   t   winc         C   s`   |  j  ƒ  }  t j j |  ƒ r1 |  j d ƒ r1 t Sx( d D]  } t j j |  | ƒ r8 t Sq8 Wt S(   Ns   .exes   .bat(   s   .exes   .bat(   s   .exes   .bat(   R	   R#   R$   t   isfilet   endswithR   R   (   R'   t   ext(    (    s    /usr/lib/python2.7/webbrowser.pyt   _isexecutablei   s    !c         C   sZ   t  j j |  ƒ rV t  j |  ƒ t j } | t j @sO | t j @sO | t j @rV t Sn  t	 S(   N(
   R#   R$   R*   t   statt   ST_MODEt   S_IXUSRt   S_IXGRPt   S_IXOTHR   R   (   R'   t   mode(    (    s    /usr/lib/python2.7/webbrowser.pyR-   r   s
    'c         C   sr   t  |  ƒ r t St j j d ƒ } | s, t Sx? | j t j ƒ D]+ } t j j	 | |  ƒ } t  | ƒ r? t Sq? Wt S(   sS   Return True if cmd is executable or can be found on the executable
    search path.t   PATH(
   R-   R   R#   t   environR   R   R   t   pathsepR$   t   join(   R'   R$   t   dt   exe(    (    s    /usr/lib/python2.7/webbrowser.pyR"   y   s    t   BaseBrowserc           B   sD   e  Z d  Z d g Z d d „ Z d e d „ Z d „  Z d „  Z RS(   s3   Parent class for all browsers. Do not use directly.s   %st    c         C   s   | |  _  | |  _ d  S(   N(   R   R%   (   t   selfR   (    (    s    /usr/lib/python2.7/webbrowser.pyt   __init__   s    	i    c         C   s
   t  ‚ d  S(   N(   t   NotImplementedError(   R<   R   R    R!   (    (    s    /usr/lib/python2.7/webbrowser.pyR   “   s    c         C   s   |  j  | d ƒ S(   Ni   (   R   (   R<   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR   –   s    c         C   s   |  j  | d ƒ S(   Ni   (   R   (   R<   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR   ™   s    (	   R   R   t   __doc__t   argsR=   R   R   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyR:   Š   s   		R   c           B   s&   e  Z d  Z d „  Z d e d „ Z RS(   sV   Class for all browsers started with a command
       and without remote functionality.c         C   s]   t  | t ƒ r' | |  _ d g |  _ n | d |  _ | d |  _ t j j |  j ƒ |  _ d  S(   Ns   %si    i   (   t
   isinstancet
   basestringR   R@   R#   R$   R%   (   R<   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR=   ¡   s    	i    c         C   s”   |  j  g g  |  j D] } | j d | ƒ ^ q } yI t j d  d k rZ t j | ƒ } n t j | d t ƒ} | j ƒ  SWn t	 k
 r t
 SXd  S(   Ns   %si   R)   t	   close_fds(   R   R@   t   replacet   syst   platformt
   subprocesst   PopenR   t   waitt   OSErrorR   (   R<   R   R    R!   t   argt   cmdlinet   p(    (    s    /usr/lib/python2.7/webbrowser.pyR   «   s    &(   R   R   R?   R=   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyR      s   	
R   c           B   s   e  Z d  Z d e d „ Z RS(   sH   Class for all browsers which are to be started in the
       background.i    c         C   sÌ   |  j  g g  |  j D] } | j d | ƒ ^ q } y t j d  d k rZ t j | ƒ } nH t t d d  ƒ } | s‡ t t d d  ƒ } n  t j | d t
 d | ƒ} | j ƒ  d  k SWn t k
 rÇ t SXd  S(   Ns   %si   R)   t   setsidt   setpgrpRC   t
   preexec_fn(   R   R@   RD   RE   RF   RG   RH   t   getattrR#   R   R   t   pollRJ   R   (   R<   R   R    R!   RK   RL   RM   RN   (    (    s    /usr/lib/python2.7/webbrowser.pyR   ¼   s    &(   R   R   R?   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyR   ¸   s   t   UnixBrowserc           B   sV   e  Z d  Z d Z d d g Z d Z d Z d Z e	 Z
 e Z d „  Z d e d „ Z RS(   s=   Parent class for all Unix browsers with remote functionality.s   %actions   %sc         C   s{  g  } | rC |  j  rC t | ƒ } |  j  | } | rC | g } qC n  |  j g | | } | sf |  j r{ t t j d ƒ } n d  } t t d d  ƒ } | s® t t d d  ƒ } n  t	 j
 | d t d | d |  j rÕ | pØ d  d | d | ƒ}	 | rFt j d	 ƒ |	 j ƒ  }
 |
 d  k rAt j d
 ƒ |	 j ƒ  }
 |
 d  k rAt Sn  |
 S|  j rl|	 j ƒ  d  k ret St Sn |	 j ƒ  Sd  S(   Ns   r+RN   RO   RC   t   stdint   stdoutt   stderrRP   i   i   (   t
   raise_optst   intR   t
   backgroundt   fileR#   t   devnullR   RQ   RG   RH   R   t   redirect_stdoutt   timet   sleepRR   R   RI   (   R<   R@   t   remoteR!   t	   raise_optt   optRL   t   inoutRN   RM   t   rc(    (    s    /usr/lib/python2.7/webbrowser.pyt   _invoke×   s<     	i    c         C   s	  | d k r |  j  } n_ | d k r0 |  j } nG | d k rc |  j d  k rW |  j } qw |  j } n t d d | ƒ ‚ g  |  j D]$ } | j d | ƒ j d | ƒ ^ q } |  j | t | ƒ } | sg  |  j	 D] } | j d | ƒ ^ qÐ } |  j | t
 t
 ƒ St Sd  S(   Ni    i   i   s   Bad 'new' parameter to open(); s   expected 0, 1, or 2, got %ss   %ss   %action(   t   remote_actiont   remote_action_newwint   remote_action_newtabR   R    t   remote_argsRD   Rd   R   R@   R   (   R<   R   R    R!   t   actionRK   R@   t   success(    (    s    /usr/lib/python2.7/webbrowser.pyR     s"    1(N(   R   R   R?   R   RW   Rh   Re   Rf   Rg   R   RY   R   R\   Rd   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRS   Ì   s   	,t   Mozillac           B   s>   e  Z d  Z d d g Z d d g Z d Z d Z d Z e Z	 RS(   s-   Launcher class for Mozilla/Netscape browsers.s   -noraises   -raises   -remotes   openURL(%s%action)R;   s   ,new-windows   ,new-tab(
   R   R   R?   RW   Rh   Re   Rf   Rg   R   RY   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRk     s   t   Galeonc           B   s8   e  Z d  Z d d g Z d d g Z d Z d Z e Z RS(   s,   Launcher class for Galeon/Epiphany browsers.s   -noraiseR;   s   %actions   %ss   -ns   -w(	   R   R   R?   RW   Rh   Re   Rf   R   RY   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRl   )  s   t   Chromec           B   s2   e  Z d  Z d d g Z d Z d Z d Z e Z RS(   s)   Launcher class for Google Chrome browser.s   %actions   %sR;   s   --new-window(	   R   R   R?   Rh   Re   Rf   Rg   R   RY   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRm   3  s   t   Operac           B   s2   e  Z d  Z d d g Z d Z d Z d Z e Z RS(   s!   Launcher class for Opera browser.s   %actions   %sR;   s   --new-window(	   R   R   R?   Rh   Re   Rf   Rg   R   RY   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRn   ?  s   t   Elinksc           B   s8   e  Z d  Z d d g Z d Z d Z d Z e Z e Z	 RS(   s#   Launcher class for Elinks browsers.s   -remotes   openURL(%s%action)R;   s   ,new-windows   ,new-tab(
   R   R   R?   Rh   Re   Rf   Rg   R   RY   R\   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRo   I  s   t	   Konquerorc           B   s   e  Z d  Z d e d „ Z RS(   s±   Controller for the KDE File Manager (kfm, or Konqueror).

    See the output of ``kfmclient --commands``
    for more information on the Konqueror remote-control interface.
    i    c         C   sw  | d k r d } n d } t  t j d ƒ } t t d d  ƒ } | sZ t t d d  ƒ } n  y4 t j d | | g d t d	 | d
 | d | ƒ} Wn t k
 r¡ n X| j	 ƒ  t Sy: t j d d | g d t d	 | d
 | d | d | ƒ} Wn t k
 rý n X| j
 ƒ  d  k rt Sy: t j d d | g d t d	 | d
 | d | d | ƒ} Wn t k
 rbt SX| j
 ƒ  d  k Sd  S(   Ni   t   newTabt   openURLs   r+RN   RO   t	   kfmclientRC   RT   RU   RV   t	   konquerors   --silentRP   t   kfms   -d(   RZ   R#   R[   RQ   R   RG   RH   R   RJ   RI   RR   R   (   R<   R   R    R!   Ri   R[   RN   RM   (    (    s    /usr/lib/python2.7/webbrowser.pyR   ^  s@    	
(   R   R   R?   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRp   W  s   t   Grailc           B   s)   e  Z d  „  Z d „  Z d e d „ Z RS(   c         C   s  d d  l  } d d  l } d d  l } d d  l } t j j | j ƒ  d ƒ } | j t j	 ƒ  ƒ d } t j j | | d ƒ } | j  | ƒ } | s– d  S| j | j | j ƒ }	 x_ | D]W }
 y |	 j |
 ƒ Wn9 | j k
 ry t j |
 ƒ Wqt k
 rqXqµ X|	 Sqµ Wd  S(   Niÿÿÿÿs   .grail-unixi    s   -*(   t   globt   pwdt   sockett   tempfileR#   R$   R7   t
   gettempdirt   getpwuidt   getuidR   t   AF_UNIXt   SOCK_STREAMt   connectt   errort   unlinkt   IOError(   R<   Rw   Rx   Ry   Rz   t   tempdirt   usert   filenamet   maybest   st   fn(    (    s    /usr/lib/python2.7/webbrowser.pyt   _find_grail_rc”  s*    	c         C   s1   |  j  ƒ  } | s d S| j | ƒ | j ƒ  d S(   Ni    i   (   RŠ   t   sendt   close(   R<   Ri   Rˆ   (    (    s    /usr/lib/python2.7/webbrowser.pyt   _remote®  s    
i    c         C   s3   | r |  j  d | ƒ } n |  j  d | ƒ } | S(   Ns   LOADNEW s   LOAD (   R   (   R<   R   R    R!   t   ok(    (    s    /usr/lib/python2.7/webbrowser.pyR   ¶  s    (   R   R   RŠ   R   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyRv     s   		c       	   C   sd  t  d ƒ r% t d d  t d ƒ ƒ n  d t j k rY t  d ƒ rY t d d  t d ƒ ƒ n  d t j k r t  d ƒ r t d d  t d ƒ ƒ n  d t j k rÁ t  d ƒ rÁ t d t t d ƒ ƒ n  t  d ƒ ræ t d d  t d ƒ ƒ n  x3 d D]+ }  t  |  ƒ rí t |  d  t |  ƒ ƒ qí qí Wt  d ƒ rAt d t t d ƒ ƒ n% t  d ƒ rft d t t d ƒ ƒ n  x3 d D]+ }  t  |  ƒ rmt |  d  t |  ƒ ƒ qmqmWt  d ƒ rÁt d d  t d ƒ ƒ n  x3 d D]+ }  t  |  ƒ rÈt |  d  t	 |  ƒ ƒ qÈqÈWt  d ƒ rt d d  t
 d ƒ ƒ n  t  d ƒ rAt d d  t d ƒ ƒ n  t  d ƒ r`t d t d  ƒ n  d  S(    Ns   xdg-opent   GNOME_DESKTOP_SESSION_IDs	   gvfs-opens
   gnome-opent   KDE_FULL_SESSIONRs   s   x-www-browsers   mozilla-firefoxt   firefoxs   mozilla-firebirdt   firebirdt	   iceweaselt   iceapet	   seamonkeyt   mozillat   netscapeRu   Rt   t   galeont   epiphanyt	   skipstones   google-chromet   chromet   chromiums   chromium-browsert   operat   mosaict   grail(	   s   mozilla-firefoxR‘   s   mozilla-firebirdR’   R“   R”   R•   R–   R—   (   R˜   R™   (   s   google-chromeR›   Rœ   s   chromium-browser(   R"   R   R   R   R#   R5   Rp   Rk   Rl   Rm   Rn   Rv   (   R   (    (    s    /usr/lib/python2.7/webbrowser.pyt   register_X_browsersÅ  sD      
t   DISPLAYt   TERMs   www-browsert   linkst   elinkst   lynxt   w3mt   WindowsDefaultc           B   s   e  Z d  e d „ Z RS(   i    c         C   s.   y t  j | ƒ Wn t k
 r% t SXt Sd  S(   N(   R#   t	   startfilet   WindowsErrorR   R   (   R<   R   R    R!   (    (    s    /usr/lib/python2.7/webbrowser.pyR     s
    (   R   R   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyR§     s   s   windows-defaultt   PROGRAMFILESs   C:\Program Filess   Internet Explorer\IEXPLORE.EXER‘   R’   R•   R–   R—   R   t   darwint   MacOSXc           B   s&   e  Z d  Z d „  Z d e d „ Z RS(   s{  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.
        c         C   s   | |  _  d  S(   N(   R   (   R<   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR=   D  s    i    c   	      C   s÷   d | k s t  ‚ d | k r+ d | } n  t t | ƒ ƒ } |  j d k re d | j d d ƒ } nR |  j d k r} d	 } n d
 | d } d | j d d ƒ } d |  j | | f } t j d d ƒ } | d  k rÙ t S| j	 | ƒ | j
 ƒ  } | S(   Nt   't   :s   file:t   defaults   open location "%s"t   "s   %22t   OmniWebR;   s   toWindow %di   s   OpenURL "%s"s‰   tell application "%s"
                                activate
                                %s %s
                            end tellt	   osascriptt   w(   t   AssertionErrorRX   t   boolR   RD   R#   t   popenR   R   t   writeRŒ   (	   R<   R   R    R!   t   scriptt   toWindowR'   t   osapipeRc   (    (    s    /usr/lib/python2.7/webbrowser.pyR   G  s"    	(   R   R   R?   R=   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyR¬   :  s   		t   MacOSXOSAScriptc           B   s    e  Z d  „  Z d e d „ Z RS(   c         C   s   | |  _  d  S(   N(   t   _name(   R<   R   (    (    s    /usr/lib/python2.7/webbrowser.pyR=   i  s    i    c         C   s‡   |  j  d k r( d | j d d ƒ } n d |  j  | j d d ƒ f } t j d d ƒ } | d  k ri t S| j | ƒ | j ƒ  } | S(   NR¯   s   open location "%s"R°   s   %22sž   
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   R²   R³   (   R¼   RD   R#   R¶   R   R   R·   RŒ   (   R<   R   R    R!   R¸   Rº   Rc   (    (    s    /usr/lib/python2.7/webbrowser.pyR   l  s    (   R   R   R=   R   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyR»   h  s   	t   safariR›   R¯   t   os2t   os2netscapet   starts   %st   BROWSERR;   c    	      C   s  d d  l  }  d t j d } y# |  j  t j d d ƒ \ } } Wn= |  j k
 r } t j | IJt j | IJt j d ƒ n Xd } x> | D]6 \ } } | d k r® d } q | d k r d } q q Wt | ƒ d k rö t j | IJt j d ƒ n  | d } t | | ƒ d	 GHd  S(
   NiÿÿÿÿsD   Usage: %s [-n | -t] url
    -n: open new window
    -t: open new tabi    i   t   ntds   -ns   -ti   s   (   t   getoptRE   t   argvR   RV   t   exitt   lenR   (	   RÃ   t   usaget   optsR@   t   msgt   new_wint   ot   aR   (    (    s    /usr/lib/python2.7/webbrowser.pyt   main§  s(    # 	 
t   __main__(6   R?   R#   R   RE   R.   RG   R]   t   __all__t	   ExceptionR    R   R
   R   R   R   R   R   R   R   R   RF   R-   R"   t   objectR:   R   R   RS   Rk   t   NetscapeRl   Rm   t   ChromiumRn   Ro   Rp   Rv   R    R5   R§   R$   R7   t   iexploreR   R¬   R»   R   R6   t   _userchoicest   reverseRL   R'   RÍ   R   (    (    (    s    /usr/lib/python2.7/webbrowser.pyt   <module>   s¨   		 			P

	
95	>
	 .	
#	