-í
ç¶<c       sù    d  Z    d k Z  d k Z  d k Z  d k Z  d k Z  d k Z  d k Z ! d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d g Z ) d Z	 + d  Z
 . e i d! j o / d" k l Z l Z ns 0 e i d# j o 1 d" k l Z l Z nF 2 e i d$ j o 3 d" k l Z l Z n 5 d% „  Z 7 d& „  Z B e a C e d' „ Z L e e e d( „ Z Q d) „  Z V h  Z W d f  d* „  ƒ  YZ d e f d+ „  ƒ  YZ Že a d, „  Z –e a —d- „  Z že a Ÿd. „  Z §e a ¨d/ „  Z  µd0 f  d1 „  ƒ  YZ! þd2 f  d3 „  ƒ  YZ" d4 e" f d5 „  ƒ  YZ# #d6 e" f d7 „  ƒ  YZ$ -d8 e" f d9 „  ƒ  YZ% <d: „  Z& †d; „  Z' ’d< „  Z( še a) ›d= „  Z* ¨e a+ ©d> „  Z, ´e a- µd? „  Z. Àe a/ Ád@ „  Z0 Íe a1 ÎdA „  Z2 Ùe a3 ÚdB dC „ Z4 ïe a5 ðdD „  Z6 ûe a7 üdE „  Z8 dF „  Z9 e a: dG „  Z; dH „  Z< dI „  Z= 2dJ „  Z> 9dK Z? =e? dL Z@ >e aA @dM „  ZB MdL dN „ ZC ldO dP „ ZD vdQ dR „ ZE ·dS „  ZF Çe i d! j o ÈdT „  ZG ædU „  ZH nQ ée i d# j o( êdV „  ZI dW „  ZG  dX „  ZH n WeF ZG YdY „  ZH ]dZ „  ZJ nd[ „  ZK tg  d\ „ ZL •d] „  ZM ±eN d^ j o ²eM ƒ  n d S(_   s»  Open an arbitrary URL.

See the following document for more info on URLs:
"Names and Addresses, URIs, URLs, URNs, URCs", at
http://www.w3.org/pub/WWW/Addressing/Overview.html

See also the HTTP spec (from which the error codes are derived):
"HTTP - Hypertext Transfer Protocol", at
http://www.w3.org/pub/WWW/Protocols/

Related standards and specs:
- RFC1808: the "relative URL" spec. (authoritative status)
- RFC1738 - the "URL standard". (authoritative status)
- RFC1630 - the "URI spec". (informational status)

The object returned by URLopener().open(file) will differ per
protocol.  All you know is that is has methods read(), readline(),
readlines(), fileno(), close() and info().  The read*(), fileno()
and close() methods work like those of open files.
The info() method returns a mimetools.Message object which can be
used to query various info about the object, if available.
(mimetools.Message objects are queried with the getheader() method.)
Ns   urlopens	   URLopeners   FancyURLopeners   urlretrieves
   urlcleanups   quotes
   quote_pluss   unquotes   unquote_pluss	   urlencodes   url2pathnames   pathname2urls   splittags	   localhosts   thishosts	   ftperrorss   basejoins   unwraps	   splittypes	   splithosts	   splitusers   splitpasswds	   splitports
   splitnports
   splitquerys	   splitattrs
   splitvalues   splitgophertypes
   getproxiess   1.15i
   s   mac(   s   url2pathnames   pathname2urls   nts   riscosc    s   5 6 t  |  ƒ Sd  S(   N(   s   unquotes   pathname(   s   pathname(    (    s   /usr/lib/python2.2/urllib.pys   url2pathname5 s   c    s   7 8 t  |  ƒ Sd  S(   N(   s   quotes   pathname(   s   pathname(    (    s   /usr/lib/python2.2/urllib.pys   pathname2url7 s   c    s_   C D E F t  o G t ƒ  a  n H | t j o I t  i |  ƒ Sn K t  i |  | ƒ Sd S(   s.   urlopen(url [, data]) -> open file-like objectN(   s
   _urlopeners   FancyURLopeners   datas   Nones   opens   url(   s   urls   data(    (    s   /usr/lib/python2.2/urllib.pys   urlopenC s   c    s>   L M N t  o O t ƒ  a  n P t  i |  | | | ƒ Sd  S(   N(   s
   _urlopeners   FancyURLopeners   retrieves   urls   filenames
   reporthooks   data(   s   urls   filenames
   reporthooks   data(    (    s   /usr/lib/python2.2/urllib.pys   urlretrieveL s   c      s"   Q R t  o S t  i ƒ  n d  S(   N(   s
   _urlopeners   cleanup(    (    (    s   /usr/lib/python2.2/urllib.pys
   urlcleanupQ s   
c      s:  W t  Z d  Z ] _ e Z a d e Z d e d „ Z { d „  Z ~ d „  Z	  d „  Z
  d „  Z • e d „ Z ¸ e d „ Z ½ e d	 „ Z Ã e e e d
 „ Z ù e d „ Z 1e d „ Z @d „  Z Fe e d ƒ o Ge d „ Z n €d „  Z d „  Z —d „  Z ³d „  Z ëe d „ Z RS(   s,  Class to open URLs.
    This is a class rather than just a subroutine because we may need
    more than one set of global protocol-specific options.
    Note -- this is a base class for those who don't want the
    automatic handling of errors type 302 (relocated) and 401
    (authorization needed).s   Python-urllib/%sc    sÌ   d e | t j o f t ƒ  } n g t o t | d ƒ p
 t d ‚ h | |  _  i | i d ƒ |  _	 j | i d ƒ |  _
 k d |  i f g |  _ l g  |  _ m t i |  _ n t |  _ u t |  _ d  S(   Ns   has_keys   proxies must be a mappings   key_files	   cert_files
   User-agent(   s   proxiess   Nones
   getproxiess	   __debug__s   hasattrs   AssertionErrors   selfs   x509s   gets   key_files	   cert_files   versions
   addheaderss   _URLopener__tempfiless   oss   unlinks   _URLopener__unlinks	   tempcaches   ftpcache(   s   selfs   proxiess   x509(    (    s   /usr/lib/python2.2/urllib.pys   __init__d s   $c    s   { | |  i ƒ  d  S(   N(   s   selfs   close(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   __del__{ s   c    s   ~  |  i ƒ  d  S(   N(   s   selfs   cleanup(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   close~ s   c    s    … |  i o[ † xG |  i D† ]9 } ‡ y ˆ |  i | ƒ Wn ‰ t j
 o
 Š n Xq W‹ |  i 2n Œ |  i o  |  i i ƒ  n d  S(   N(   s   selfs   _URLopener__tempfiless   files   _URLopener__unlinks   OSErrors	   tempcaches   clear(   s   selfs   file(    (    s   /usr/lib/python2.2/urllib.pys   cleanup s    	c    s    ‘ ’ |  i i | ƒ d S(   sd   Add a header to be used by the HTTP interface only
        e.g. u.addheader('Accept', 'sound/basic')N(   s   selfs
   addheaderss   appends   args(   s   selfs   args(    (    s   /usr/lib/python2.2/urllib.pys	   addheader s   c    s5  • – — t  t | ƒ ƒ } ˜ |  i o |  i i | ƒ o? ™ |  i | \ } } š t | d ƒ } › t
 | | | ƒ Sn œ t | ƒ \ } }
  | o ž d } n Ÿ |  i i | ƒ oM   |  i | } ¡ t | ƒ \ } } ¢ t | ƒ \ } } £ | | f }
 n
 ¥ t } ¦ d | }	 § | |  _ ¨ d |	 j o ª d i |	 i d ƒ ƒ }	 n « t |  |	 ƒ o; ¬ | o ­ |  i | | | ƒ Sn ¯ |  i | | ƒ Sn ° yG ± | t j o ² t |  |	 ƒ |
 ƒ Sn ´ t |  |	 ƒ |
 | ƒ SWn: µ t i j
 o( } ¶ t! d | f t" i# ƒ  d ‚ n Xd S(	   s6   Use URLopener().open(file) instead of open(file, 'r').s   rbs   files   open_s   -s   _s   socket errori   N($   s   unwraps   toBytess   fullurls   selfs	   tempcaches   has_keys   filenames   headerss   opens   fps
   addinfourls	   splittypes   urltypes   urls   proxiess   proxys	   proxyhosts	   splithosts   hosts   selectors   Nones   names   types   joins   splits   hasattrs   open_unknown_proxys   datas   open_unknowns   getattrs   sockets   errors   msgs   IOErrors   syss   exc_info(   s   selfs   fullurls   datas   fps	   proxyhosts   selectors   hosts   proxys   urltypes   names   urls   filenames   headerss   msg(    (    s   /usr/lib/python2.2/urllib.pys   open• s:    	
c    s4   ¸ ¹ º t  | ƒ \ } } » t d d | f ‚ d S(   s/   Overridable interface to open unknown URL type.s	   url errors   unknown url typeN(   s	   splittypes   fullurls   types   urls   IOError(   s   selfs   fullurls   datas   urls   type(    (    s   /usr/lib/python2.2/urllib.pys   open_unknown¸ s   c    s8   ½ ¾ ¿ t  | ƒ \ } } À t d d | | f ‚ d S(   s/   Overridable interface to open unknown URL type.s	   url errors   invalid proxy for %sN(   s	   splittypes   fullurls   types   urls   IOErrors   proxy(   s   selfs   proxys   fullurls   datas   urls   type(    (    s   /usr/lib/python2.2/urllib.pys   open_unknown_proxy½ s   c    sP  Ã Å Æ t  t | ƒ ƒ } Ç |  i o |  i i | ƒ o È |  i | Sn É t | ƒ \ } } Ê | o | p
 | d j om Ë yH Ì |  i
 | ƒ } Í | i ƒ  } Î ~ Ï t t | ƒ d ƒ | f SWn Ð t j
 o }	 Ñ n Xn Ò |  i | | ƒ } Ó | i ƒ  } Ô | o· Õ d k } Ö t | ƒ \ } } × t | p d ƒ \ } } Ø t | p d ƒ \ } } Ù t | p d ƒ \ } } Ú t i i | ƒ d } Û | i | ƒ } Ü |  i i | ƒ n Ý | | f }
 Þ |  i t! j	 o ß |
 |  i | <n à t | d ƒ } á d d } â d } ã d } ä | oA å | i d	 ƒ o æ t' | d
 ƒ } n ç | d | | ƒ n è | i( | ƒ } é | o ê | d | | ƒ n ë x_ ë | oT ì | i* | ƒ í | i( | ƒ } î | d } ï | o ð | | | | ƒ n qÀWñ | i+ ƒ  ò | i+ ƒ  ó ~ ô ~ õ |
 Sd S(   sq   retrieve(url) returns (filename, None) for a local object
        or (tempfilename, headers) for a remote object.s   filei   Ns    s   wbi   i   iÿÿÿÿs   content-lengths   Content-Lengthi    (,   s   unwraps   toBytess   urls   selfs	   tempcaches   has_keys	   splittypes   types   url1s   filenames   open_local_files   fps   infos   hdrss   url2pathnames	   splithosts   IOErrors   msgs   opens   datas   headerss   tempfiles   garbages   paths
   splitquerys	   splitattrs   oss   splitexts   suffixs   mktemps   _URLopener__tempfiless   appends   results   Nones   tfps   bss   sizes   blocknums
   reporthooks   ints   reads   blocks   writes   close(   s   selfs   urls   filenames
   reporthooks   datas   fps   blocknums   hdrss   garbages   msgs   results   bss   paths   suffixs   tfps   headerss   tempfiles   url1s   sizes   types   block(    (    s   /usr/lib/python2.2/urllib.pys   retrieveÃ sd     !		

 

c    s{  ù ú û d k  } ü t } ý t | ƒ t i j oT þ t | ƒ \ } }
 ÿ | o(  t
 | ƒ \ } } t | ƒ } n | } nÓ | \ } }
 t |
 ƒ \ } } | } t } | i ƒ  d j o 	t } nz t | ƒ \ } } | o t
 | ƒ \ } } n | o d | | | f }
 n t | ƒ o | } n | o t d d f ‚ n | o( d k } | i | ƒ i ƒ  }	 n
 t }	 | i | ƒ } | t j	 oG | i d |
 ƒ | i d d ƒ | i d	 d
 t | ƒ ƒ n  | i d |
 ƒ !|	 o !| i d d |	 ƒ n "| o "| i d | ƒ n #x' |  i D#] } #t  | i | ƒ q…W$| i! ƒ  %| t j	 o &| i" | ƒ n '| i# ƒ  \ } } } (| i' ƒ  } )| d j o *t) | | d | ƒ SnP ,| t j o  -|  i* | | | | | ƒ Sn  /|  i* | | | | | | ƒ Sd S(   s   Use HTTP protocol.Ns   https	   %s://%s%ss
   http errors   no host givens   POSTs   Content-types!   application/x-www-form-urlencodeds   Content-lengths   %ds   GETs   Authorizations   Basic %ss   HostiÈ   s   http:(+   s   httplibs   Nones   user_passwds   types   urls   typess
   StringTypes	   splithosts   hosts   selectors	   splitusers   unquotes   realhosts	   splittypes   urltypes   rests   lowers   proxy_bypasss   IOErrors   base64s   encodestrings   strips   auths   HTTPs   hs   datas
   putrequests	   putheaders   lens   selfs
   addheaderss   argss   applys
   endheaderss   sends   getreplys   errcodes   errmsgs   headerss   getfiles   fps
   addinfourls
   http_error(   s   selfs   urls   datas   base64s   argss   rests   hosts   errcodes   fps   auths   selectors   headerss   httplibs   urltypes   user_passwds   hs   realhosts   errmsg(    (    s   /usr/lib/python2.2/urllib.pys	   open_httpù sf   	
		

 
	!
 
  	  c 
   s¾   146d | } 7t |  | ƒ ox 8t |  | ƒ } 9| t j o :| | | | | | ƒ }	 n <| | | | | | | ƒ }	 =|	 o =|	 Sn n >|  i | | | | | ƒ Sd S(   s›   Handle http errors.
        Derived class can override this, or provide specific handlers
        named http_error_DDD where DDD is the 3-digit error code.s   http_error_%dN(   s   errcodes   names   hasattrs   selfs   getattrs   methods   datas   Nones   urls   fps   errmsgs   headerss   results   http_error_default(
   s   selfs   urls   fps   errcodes   errmsgs   headerss   datas   names   methods   result(    (    s   /usr/lib/python2.2/urllib.pys
   http_error1s   
 c    s>   @AB| i ƒ  } C| i ƒ  Dt d | | | f ‚ d S(   s>   Default error handler: close the connection and raise IOError.s
   http errorN(   s   fps   reads   voids   closes   IOErrors   errcodes   errmsgs   headers(   s   selfs   urls   fps   errcodes   errmsgs   headerss   void(    (    s   /usr/lib/python2.2/urllib.pys   http_error_default@s   s   sslc    s|  GHId k  }
 Jt } Kt | ƒ t i j oT Lt | ƒ \ } } M| o( Nt
 | ƒ \ } } Ot | ƒ } n P| } n¶ R| \ } } St | ƒ \ } } T| } Ut } V| i ƒ  d j o Wt } n] Yt | ƒ \ } } Z| o [t
 | ƒ \ } } n \| o ]d | | | f } n _| o _t d d f ‚ n `| o( ad k } b| i | ƒ i ƒ  } n
 dt } e|
 i | d fd |  i gd |  i ƒ} h| t j	 oJ i| i d	 | ƒ j| i d
 kd ƒ l| i d d t | ƒ ƒ n n| i d | ƒ o| o o| i d | ƒ n p| o p| i d | ƒ n qx' |  i Dq] } qt! | i | ƒ qƒWr| i" ƒ  s| t j	 o t| i# | ƒ n u| i$ ƒ  \ } } }	 v| i( ƒ  } w| d j o xt* | |	 d | ƒ SnS z| t j o  {|  i+ | | | | |	 ƒ Sn# }|  i+ | | | | |	 ~| ƒ Sd S(   s   Use HTTPS protocol.Ns   httpss	   %s://%s%ss   https errors   no host giveni    s   key_files	   cert_files   POSTs   Content-types!   application/x-www-form-urlencodeds   Content-lengths   %ds   GETs   Authorization: Basic %ss   HostiÈ   s   https:(,   s   httplibs   Nones   user_passwds   types   urls   typess
   StringTypes	   splithosts   hosts   selectors	   splitusers   unquotes   realhosts	   splittypes   urltypes   rests   lowers   IOErrors   base64s   encodestrings   strips   auths   HTTPSs   selfs   key_files	   cert_files   hs   datas
   putrequests	   putheaders   lens
   addheaderss   argss   applys
   endheaderss   sends   getreplys   errcodes   errmsgs   headerss   getfiles   fps
   addinfourls
   http_error(   s   selfs   urls   datas   argss   rests   hosts   errcodes   fps   selectors   headerss   httplibs   urltypes   user_passwds   hs   base64s   realhosts   auths   errmsg(    (    s   /usr/lib/python2.2/urllib.pys
   open_httpsGsj   	
		

 
	
!
 
  	  c    sø   €‚d k  } ƒt | ƒ \ } } „| o „t d d f ‚ n …t | ƒ } †t | ƒ \ } } ‡t	 | ƒ \ } } ˆt | ƒ } ‰| o+ Št | ƒ } ‹| i | | | ƒ } n | i | | ƒ } Žt | t ƒ  d | ƒ Sd S(   s   Use Gopher protocol.Ns   gopher errors   no host givens   gopher:(   s	   gopherlibs	   splithosts   urls   hosts   selectors   IOErrors   unquotes   splitgophertypes   types
   splitquerys   querys
   send_querys   fps   send_selectors
   addinfourls	   noheaders(   s   selfs   urls	   gopherlibs   selectors   hosts   fps   querys   type(    (    s   /usr/lib/python2.2/urllib.pys   open_gopher€s    
c    sV   ‘’| d  d j o | d d !d j o “|  i | ƒ Sn •|  i | ƒ Sd S(   s/   Use local file or FTP depending on form of URL.i   s   //i   s   /N(   s   urls   selfs   open_ftps   open_local_file(   s   selfs   url(    (    s   /usr/lib/python2.2/urllib.pys	   open_files   (c    sÖ  —˜™d k  } d k } d k } d k } št | ƒ \ } } ›t | ƒ }	 œt
 i |	 ƒ } | t i } ž| i | t i ƒ } Ÿ| i | ƒ d }  | i | i d | p d | | f ƒ ƒ } £| oQ ¤| } ¥| d  d j o ¦d | } n §t t |	 d ƒ ¨| | ƒ Sn ©t | ƒ \ } }
 ª|
 o t i | ƒ t ƒ  t ƒ  f j oQ ¬| } ­| d  d j o ®d | } n ¯t t |	 d ƒ °| | ƒ Sn ±t d	 d
 f ‚ d S(   s   Use local file.Ni    s6   Content-Type: %s
Content-Length: %d
Last-modified: %s
s
   text/plaini   s   /s   file://s   rbs   local file errors   not on local host(    s	   mimetypess	   mimetoolss   rfc822s   StringIOs	   splithosts   urls   hosts   files   url2pathnames	   localnames   oss   stats   statss   ST_SIZEs   sizes
   formatdates   ST_MTIMEs   modifieds
   guess_types   mtypes   Messages   headerss   urlfiles
   addinfourls   opens	   splitports   ports   sockets   gethostbynames	   localhosts   thishosts   IOError(   s   selfs   urls	   mimetoolss	   mimetypess   rfc822s   urlfiles   mtypes   hosts   files	   localnames   ports   sizes   statss   StringIOs   modifieds   headers(    (    s   /usr/lib/python2.2/urllib.pys   open_local_file—s.   '/	-	c    sO  ³´µd k  } d k } d k } ¶t | ƒ \ } } ·| o ·t d d f ‚ n ¸t | ƒ \ } } ¹t
 | ƒ \ }
 } º|
 o ºt |
 ƒ \ }
 }	 n
 »t }	 ¼t | ƒ } ½t |
 p d ƒ }
 ¾t |	 p d ƒ }	 ¿t i | ƒ } À| o Ád k } Â| i } n Ät | ƒ } Åt | ƒ \ } } Æt | ƒ } Ç| i d ƒ } È| d  | d f \ } } É| o	 | d o É| d } n Ê| o	 | d o Êd | d <n Ë|
 | | d i | ƒ f } Ít |  i ƒ t j ob ÏxX |  i i  ƒ  DÏ]D } Ð| | j o. Ñ|  i | } Ò|  i | =Ó| i# ƒ  n qWn ÔyžÕ|  i i$ | ƒ o& Öt% |
 |	 | | | ƒ |  i | <n Ø| o Ød	 } n
 Ùd
 } Úxn | DÚ]c } Ût( | ƒ \ } } Ü| i* ƒ  d j o | d d d d
 d d	 f j o Þ| i+ ƒ  } n qÛWß|  i | i, | | ƒ \ } } à| i/ d | ƒ d } ád } â| o ã| d | 7} n ä| t j	 o
 | d j o å| d | 7} n æ| i2 | i | ƒ ƒ } çt3 | | d | ƒ SWn: èt4 ƒ  j
 o( } ét d | f t6 i7 ƒ  d ‚ n Xd S(   s   Use FTP protocol.Ns	   ftp errors   no host givens    s   /iÿÿÿÿi    i   s   Ds   Is   types   as   As   is   ds   ftp:s   Content-Type: %s
s   Content-Length: %d
i   (8   s	   mimetypess	   mimetoolss   StringIOs	   splithosts   urls   hosts   paths   IOErrors	   splitports   ports	   splitusers   users   splitpasswds   passwds   Nones   unquotes   sockets   gethostbynames   ftplibs   FTP_PORTs   ints	   splitattrs   attrss   splits   dirss   files   joins   keys   lens   selfs   ftpcaches   MAXFTPCACHEs   keyss   ks   vs   closes   has_keys
   ftpwrappers   types   attrs
   splitvalues   values   lowers   uppers   retrfiles   fps   retrlens
   guess_types   mtypes   headerss   Messages
   addinfourls	   ftperrorss   msgs   syss   exc_info(   s   selfs   urls	   mimetoolss   ftplibs	   mimetypess   keys   mtypes   fps   hosts   passwds   users   files   paths   dirss   ports   attrs   StringIOs   msgs   values   retrlens   headerss   vs   types   ks   attrs(    (    s   /usr/lib/python2.2/urllib.pys   open_ftp³sp    
 	   	& 	
 	5"	
c    s  ëìôd k  } d k } d k }
 õy ö| i d d ƒ \ } } Wn( ÷t j
 o øt d d f ‚ n Xù| o úd } n û| i	 d ƒ } ü| d j o d	 | | j o" ý| | d } þ| |  } n
  d
 } g  } | i d |
 i d |
 i |
 i ƒ  ƒ ƒ ƒ | i d | ƒ | d j o" d k } | i | ƒ } n 	t | ƒ } 
| i d t | ƒ ƒ | i d
 ƒ | i | ƒ d i | ƒ } | i  | ƒ } | i | d ƒ }	 t | _ t | |	 | ƒ Sd S(   s   Use "data" URL.Ns   ,i   s
   data errors   bad data URLs   text/plain;charset=US-ASCIIs   ;i    s   =s    s   Date: %ss   %a, %d %b %Y %T GMTs   Content-type: %ss   base64s   Content-length: %ds   
(   s   StringIOs	   mimetoolss   times   urls   splits   types   datas
   ValueErrors   IOErrors   rfinds   semis   encodings   msgs   appends   strftimes   gmtimes   base64s   decodestrings   unquotes   lens   joins   fs   Messages   headerss   Nones   filenos
   addinfourl(   s   selfs   urls   datas	   mimetoolss   base64s   fs   semis   encodings   StringIOs   headerss   times   msgs   type(    (    s   /usr/lib/python2.2/urllib.pys	   open_dataës:   !		(   s   __name__s
   __module__s   __doc__s   Nones   _URLopener__tempfiless   __version__s   versions   __init__s   __del__s   closes   cleanups	   addheaders   opens   open_unknowns   open_unknown_proxys   retrieves	   open_https
   http_errors   http_error_defaults   hasattrs   sockets
   open_httpss   open_gophers	   open_files   open_local_files   open_ftps	   open_data(    (    (    s   /usr/lib/python2.2/urllib.pys	   URLopenerW s,   	#6898c      sž   t  Z d  Z d „  Z d „  Z !e d „ Z 1d „  Z Ae d „ Z Ee d „ Z	 \e d „ Z
 ie d „ Z sd	 d
 „ Z ~d „  Z RS(   s?   Derived class with handlers for errors we can handle (perhaps).c    sE   t  t i |  f | ƒ h  |  _ d |  _ d |  _ d  S(   Ni    i
   (   s   applys	   URLopeners   __init__s   selfs   argss
   auth_caches   triess   maxtries(   s   selfs   args(    (    s   /usr/lib/python2.2/urllib.pys   __init__s   c    s!   t  | | d | ƒ Sd S(   s3   Default error handling -- don't raise an exception.s   http:N(   s
   addinfourls   fps   headerss   url(   s   selfs   urls   fps   errcodes   errmsgs   headers(    (    s   /usr/lib/python2.2/urllib.pys   http_error_defaults   c 	   sÎ   !"#|  i d 7_ $|  i o |  i |  i j o[ %t |  d ƒ o &|  i } n (|  i } )d |  _ *| | | d +d | ƒ Sn ,|  i
 | | | | | -| ƒ } .d |  _ /| Sd S(   s%   Error 302 -- relocated (temporarily).i   s   http_error_500i    iô  s)   Internal Server Error: Redirect RecursionN(   s   selfs   triess   maxtriess   hasattrs   http_error_500s   meths   http_error_defaults   urls   fps   headerss   redirect_internals   errcodes   errmsgs   datas   result(	   s   selfs   urls   fps   errcodes   errmsgs   headerss   datas   meths   result(    (    s   /usr/lib/python2.2/urllib.pys   http_error_302!s    c 	   sÆ   12| i d ƒ o 3| d } n, 4| i d ƒ o 5| d } n 7d  S8| i ƒ  } 9| i ƒ  ;t |  i	 d | | ƒ } <| t j o =|  i | ƒ Sn ?|  i | | ƒ Sd  S(   Ns   locations   uris   :(   s   headerss   has_keys   newurls   fps   reads   voids   closes   basejoins   selfs   types   urls   datas   Nones   open(	   s   selfs   urls   fps   errcodes   errmsgs   headerss   datas   newurls   void(    (    s   /usr/lib/python2.2/urllib.pys   redirect_internal1s   c    s)   ABC|  i | | | | | | ƒ Sd S(   s*   Error 301 -- also relocated (permanently).N(   s   selfs   http_error_302s   urls   fps   errcodes   errmsgs   headerss   data(   s   selfs   urls   fps   errcodes   errmsgs   headerss   data(    (    s   /usr/lib/python2.2/urllib.pys   http_error_301As   c    sQ  EHI| i d ƒ o& Jt i |  | | K| | | ƒ n L| d }
 Md k
 }	 N|	 i d |
 ƒ } O| o& Pt i |  | | Q| | | ƒ n R| i ƒ  \ } } S| i ƒ  d j o& Tt i |  | | U| | | ƒ n Vd |  i d } W| t j o Xt |  | ƒ | | ƒ Sn Zt |  | ƒ | | | ƒ Sd S(   s½   Error 401 -- authentication required.
        See this URL for a description of the basic authentication scheme:
        http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-00.txts   www-authenticateNs!   [ 	]*([^ 	]+)[ 	]+realm="([^"]*)"s   basics   retry_s   _basic_auth(   s   headerss   has_keys	   URLopeners   http_error_defaults   selfs   urls   fps   errcodes   errmsgs   stuffs   res   matchs   groupss   schemes   realms   lowers   types   names   datas   Nones   getattr(   s   selfs   urls   fps   errcodes   errmsgs   headerss   datas   realms   names   res   stuffs   schemes   match(    (    s   /usr/lib/python2.2/urllib.pys   http_error_401Es$   c 
   só   \]t  | ƒ \ } }	 ^| i d ƒ d } _| | } `|  i | | | ƒ \ } } a| p | o at Sn bt | d d ƒd t | d d ƒd | } cd | |	 } d| t j o e|  i | ƒ Sn g|  i | | ƒ Sd  S(   Ns   @i   s   safes    s   :s   http://(   s	   splithosts   urls   hosts   selectors   finds   is   selfs   get_user_passwds   realms   users   passwds   Nones   quotes   newurls   datas   open(
   s   selfs   urls   realms   datas   newurls   is   hosts   passwds   users   selector(    (    s   /usr/lib/python2.2/urllib.pys   retry_http_basic_auth\s    1c 
   sÏ   ijt  | ƒ \ } }	 k| i d ƒ d } l| | } m|  i | | | ƒ \ } } n| p | o nt Sn ot | d d ƒd t | d d ƒd | } pd | |	 } q|  i | | ƒ Sd  S(   Ns   @i   s   safes    s   :s   //(   s	   splithosts   urls   hosts   selectors   finds   is   selfs   get_user_passwds   realms   users   passwds   Nones   quotes   newurls
   open_httpss   data(
   s   selfs   urls   realms   datas   newurls   is   hosts   passwds   users   selector(    (    s   /usr/lib/python2.2/urllib.pys   retry_https_basic_authis    1i    c    s´   st| d | i ƒ  } u|  i i | ƒ o- v| o w|  i | =n y|  i | Sn z|  i | | ƒ \ } } {| p | o {| | f |  i | <n || | f Sd  S(   Ns   @(   s   realms   hosts   lowers   keys   selfs
   auth_caches   has_keys   clear_caches   prompt_user_passwds   users   passwd(   s   selfs   hosts   realms   clear_caches   users   keys   passwd(    (    s   /usr/lib/python2.2/urllib.pys   get_user_passwdss   
 c    sŒ   ~€d k  } yI ‚t d | | f ƒ } „| i  d | | | f ƒ } †| | f SWn' ‡t j
 o ˆH‰t t f Sn Xd S(   s#   Override this in a GUI environment!Ns   Enter username for %s at %s: s#   Enter password for %s in %s at %s: (   s   getpasss	   raw_inputs   realms   hosts   users   passwds   KeyboardInterrupts   None(   s   selfs   hosts   realms   getpasss   users   passwd(    (    s   /usr/lib/python2.2/urllib.pys   prompt_user_passwd~s   (   s   __name__s
   __module__s   __doc__s   __init__s   http_error_defaults   Nones   http_error_302s   redirect_internals   http_error_301s   http_error_401s   retry_http_basic_auths   retry_https_basic_auths   get_user_passwds   prompt_user_passwd(    (    (    s   /usr/lib/python2.2/urllib.pys   FancyURLopeners   
c      s5   ‘’t  o “t i d ƒ a  n ”t  Sd S(   s8   Return the IP address of the magic hostname 'localhost'.s	   localhostN(   s
   _localhosts   sockets   gethostbyname(    (    (    s   /usr/lib/python2.2/urllib.pys	   localhosts
   c      s;   —˜™št  o ›t i t i ƒ  ƒ a  n œt  Sd S(   s*   Return the IP address of the current host.N(   s	   _thishosts   sockets   gethostbynames   gethostname(    (    (    s   /usr/lib/python2.2/urllib.pys   thishost—s
   c     s;   Ÿ ¡¢t  o £d k }  ¤|  i a  n ¥t  Sd S(   s1   Return the set of errors raised by the FTP class.N(   s
   _ftperrorss   ftplibs
   all_errors(   s   ftplib(    (    s   /usr/lib/python2.2/urllib.pys	   ftperrorsŸs   c     sf   ¨©ª«t  oG ¬d k }  ­d k } ®|  i | i ƒ  d ƒ a  ¯t  i i ƒ  n °t  Sd S(   s)   Return an empty mimetools.Message object.Ni    (   s
   _noheaderss	   mimetoolss   StringIOs   Messages   fps   close(   s	   mimetoolss   StringIO(    (    s   /usr/lib/python2.2/urllib.pys	   noheaders¨s   s
   ftpwrapperc      sP   µt  Z d  Z ¶¸d „  Z Àd „  Z Éd „  Z îd „  Z ÷d „  Z RS(   s;   Class used by open_ftp() for cache of open FTP connections.c    sP   ¸¹| |  _  º| |  _ »| |  _ ¼| |  _ ½| |  _ ¾|  i ƒ  d  S(   N(   s   users   selfs   passwds   hosts   ports   dirss   init(   s   selfs   users   passwds   hosts   ports   dirs(    (    s   /usr/lib/python2.2/urllib.pys   __init__¸s   c    s–   ÀÁd  k  } Âd |  _ Ã| i ƒ  |  _ Ä|  i i |  i |  i ƒ Å|  i i |  i	 |  i
 ƒ Æx' |  i DÆ] } Ç|  i i | ƒ qr Wd  S(   Ni    (   s   ftplibs   selfs   busys   FTPs   ftps   connects   hosts   ports   logins   users   passwds   dirss   dirs   cwd(   s   selfs   ftplibs   dir(    (    s   /usr/lib/python2.2/urllib.pys   initÀs    	c    sS  ÉÊd  k  } Ë|  i ƒ  Ì| d d f j o Ìd } d } n Íd | } d } Îy Ï|  i i | ƒ Wn9 Ð| i j
 o' Ñ|  i	 ƒ  Ò|  i i | ƒ n XÓt
 } Ô| o | oò Öy ×|  i i | ƒ Wn: Ø| i j
 o( } Ùt d | f t i ƒ  d ‚ n XÛ|  i i | ƒ Ýy& Þd	 | } ß|  i i | ƒ } WnX à| i j
 oF } át | ƒ d
  d j o# ât d | f t i ƒ  d ‚ n n Xn ã| oP å|  i i d ƒ ç| o çd | } n
 èd } é|  i i | ƒ } n êd |  _ ìt | d i d ƒ í|  i ƒ | d f Sd  S(   Ns   ds   Ds   TYPE Ai   s   TYPE i    s	   ftp errori   s   RETR i   s   550s   LIST s   LISTs   rb(   s   ftplibs   selfs   endtransfers   types   cmds   isdirs   ftps   voidcmds
   all_errorss   inits   Nones   conns   files   nlsts
   error_perms   reasons   IOErrors   syss   exc_infos   ntransfercmds   strs   busys   addclosehooks   makefile(   s   selfs   files   types   isdirs   ftplibs   cmds   reasons   conn(    (    s   /usr/lib/python2.2/urllib.pys   retrfileÉs@    	$,
 	c    sb   îï|  i o ðd  Sn ñd |  _ òy ó|  i i ƒ  Wn ôt ƒ  j
 o
 õn Xd  S(   Ni    (   s   selfs   busys   ftps   voidresps	   ftperrors(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   endtransferîs   c    sJ   ÷ø|  i ƒ  ùy ú|  i i ƒ  Wn ût ƒ  j
 o
 ün Xd  S(   N(   s   selfs   endtransfers   ftps   closes	   ftperrors(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   close÷s
   (   s   __name__s
   __module__s   __doc__s   __init__s   inits   retrfiles   endtransfers   close(    (    (    s   /usr/lib/python2.2/urllib.pys
   ftpwrapperµs   	%	s   addbasec      s8   þt  Z d  Z ÿd „  Z d „  Z d „  Z RS(   s(   Base class for addinfo and addclosehook.c    s   | |  _  |  i  i |  _ |  i  i |  _ t |  i  d ƒ o |  i  i |  _ n t |  i  d ƒ o |  i  i |  _ n d  S(   Ns	   readliness   fileno(   s   fps   selfs   reads   readlines   hasattrs	   readliness   fileno(   s   selfs   fp(    (    s   /usr/lib/python2.2/urllib.pys   __init__s     c    s,   	d |  i i t |  ƒ |  i f Sd  S(   Ns   <%s at %s whose fp = %s>(   s   selfs	   __class__s   __name__s   ids   fp(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   __repr__s   c    sd   t  |  _ t  |  _ t  |  _ t  |  _ |  i o |  i i ƒ  n t  |  _ d  S(   N(   s   Nones   selfs   reads   readlines	   readliness   filenos   fps   close(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   closes    (   s   __name__s
   __module__s   __doc__s   __init__s   __repr__s   close(    (    (    s   /usr/lib/python2.2/urllib.pys   addbaseþs   s   addclosehookc      s,   t  Z d  Z d „  Z d „  Z RS(   s*   Class to add a close hook to an open file.c    s2   t  i |  | ƒ | |  _ | |  _ d  S(   N(   s   addbases   __init__s   selfs   fps	   closehooks   hookargs(   s   selfs   fps	   closehooks   hookargs(    (    s   /usr/lib/python2.2/urllib.pys   __init__s   c    sV   t  i |  ƒ |  i o2 t |  i |  i ƒ  t |  _ !t |  _ n d  S(   N(   s   addbases   closes   selfs	   closehooks   applys   hookargss   None(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   closes
   (   s   __name__s
   __module__s   __doc__s   __init__s   close(    (    (    s   /usr/lib/python2.2/urllib.pys   addclosehooks   s   addinfoc      s,   #t  Z d  Z $&d „  Z *d „  Z RS(   s.   class to add an info() method to an open file.c    s&   &'t  i |  | ƒ (| |  _ d  S(   N(   s   addbases   __init__s   selfs   fps   headers(   s   selfs   fps   headers(    (    s   /usr/lib/python2.2/urllib.pys   __init__&s   c    s   *+|  i Sd  S(   N(   s   selfs   headers(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   info*s   (   s   __name__s
   __module__s   __doc__s   __init__s   info(    (    (    s   /usr/lib/python2.2/urllib.pys   addinfo#s   s
   addinfourlc      s8   -t  Z d  Z .0d „  Z 5d „  Z 8d „  Z RS(   s9   class to add info() and geturl() methods to an open file.c    s2   01t  i |  | ƒ 2| |  _ 3| |  _ d  S(   N(   s   addbases   __init__s   selfs   fps   headerss   url(   s   selfs   fps   headerss   url(    (    s   /usr/lib/python2.2/urllib.pys   __init__0s   c    s   56|  i Sd  S(   N(   s   selfs   headers(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   info5s   c    s   89|  i Sd  S(   N(   s   selfs   url(   s   self(    (    s   /usr/lib/python2.2/urllib.pys   geturl8s   (   s   __name__s
   __module__s   __doc__s   __init__s   infos   geturl(    (    (    s   /usr/lib/python2.2/urllib.pys
   addinfourl-s   c 	   s°  <=>t  | ƒ \ } } ?| o A| Sn Bt | ƒ \ } } Ct  |  ƒ \ } } D| o, F| o F| d | | Sn J| Sn Kt | ƒ \ } } Lt | ƒ \ } } Mt
 | ƒ \ } } N| d  d j o-P| d  d d f j o Rt | ƒ } n U| i d ƒ } V| d j  o$ X| o Zd } n
 ]d } n `| | d  } bx’ b| o | d  d	 j ov c| d } d| d
  i d ƒ } e| d j o f| | d  } n+ g| d j o hd } iPn
 kd } qmWm| | } n n| o | o | d d j o od | } n p| o | o p| d | | SnB q| o q| d | Sn% r| o rd | | Sn s| Sd S(   s;   Utility to combine a URL with a base URL to form a new URL.s   ://i   s   /s   #s   ?i    s    i   s   ../iÿÿÿÿs   :s   //N(   s	   splittypes   urls   types   paths	   splithosts   hosts   bases   basepaths   splittags   basetags
   splitquerys	   basequerys   lens   is   rfind(	   s   bases   urls   is   basepaths	   basequerys   hosts   basetags   paths   type(    (    s   /usr/lib/python2.2/urllib.pys   basejoin<sT   


 
 	" 
 
 c    s}   †‡Št  |  ƒ t i j oS ‹y Œ|  i d ƒ }  Wn3 t j
 o$ Žt d t |  ƒ d ƒ ‚ n Xn |  Sd S(   s   toBytes(u"URL") --> 'URL'.s   ASCIIs   URL s    contains non-ASCII charactersN(   s   types   urls   typess   UnicodeTypes   encodes   UnicodeErrors   repr(   s   url(    (    s   /usr/lib/python2.2/urllib.pys   toBytes†s   &c    sŠ   ’“”|  i ƒ  }  •|  d  d j o |  d d j o –|  d d !i ƒ  }  n —|  d  d j o —|  d i ƒ  }  n ˜|  Sd S(   s8   unwrap('<URL:type://host/path>') --> 'type://host/path'.i   s   <iÿÿÿÿs   >i   s   URL:N(   s   urls   strip(   s   url(    (    s   /usr/lib/python2.2/urllib.pys   unwrap’s   % c    sŸ   ›œžt  t j o" Ÿd k }  | i d ƒ a  n ¢t  i |  ƒ } £| o7 ¤| i d ƒ } ¥| i ƒ  |  t	 | ƒ d f Sn ¦t |  f Sd S(   s:   splittype('type:opaquestring') --> 'type', 'opaquestring'.Ns
   ^([^/:]+):i   (
   s	   _typeprogs   Nones   res   compiles   matchs   urls   groups   schemes   lowers   len(   s   urls   res   schemes   match(    (    s   /usr/lib/python2.2/urllib.pys	   splittype›s   
%c    s   ©ª«¬t  t j o" ­d k } ®| i d ƒ a  n °t  i |  ƒ } ±| o ±| i d d ƒ Sn ²t |  f Sd S(   s;   splithost('//host[:port]/path') --> 'host[:port]', '/path'.Ns   ^//([^/]*)(.*)$i   i   (   s	   _hostprogs   Nones   res   compiles   matchs   urls   group(   s   urls   matchs   re(    (    s   /usr/lib/python2.2/urllib.pys	   splithost©s   
 c    sˆ   µ¶·¸t  t j o" ¹d k } º| i d ƒ a  n ¼t  i |  ƒ } ½| o  ½t t | i d d ƒ ƒ Sn ¾t |  f Sd S(   sJ   splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.Ns   ^([^@]*)@(.*)$i   i   (	   s	   _userprogs   Nones   res   compiles   matchs   hosts   maps   unquotes   group(   s   hosts   res   match(    (    s   /usr/lib/python2.2/urllib.pys	   splituserµs   
  c    s   ÁÂÃÄt  t j o" Åd k } Æ| i d ƒ a  n Èt  i |  ƒ } É| o É| i d d ƒ Sn Ê|  t f Sd S(   s/   splitpasswd('user:passwd') -> 'user', 'passwd'.Ns   ^([^:]*):(.*)$i   i   (   s   _passwdprogs   Nones   res   compiles   matchs   users   group(   s   users   res   match(    (    s   /usr/lib/python2.2/urllib.pys   splitpasswdÁs   
 c    s   ÎÏÐÑt  t j o" Òd k } Ó| i d ƒ a  n Õt  i |  ƒ } Ö| o Ö| i d d ƒ Sn ×|  t f Sd S(   s*   splitport('host:port') --> 'host', 'port'.Ns   ^(.*):([0-9]+)$i   i   (   s	   _portprogs   Nones   res   compiles   matchs   hosts   group(   s   hosts   res   match(    (    s   /usr/lib/python2.2/urllib.pys	   splitportÎs   
 iÿÿÿÿc    sç   ÚÞßàt  t j o" ád k } â| i d ƒ a  n ät  i |  ƒ } å| o æ| i d d ƒ \ }  } çy. è| o èt d ‚ n ét	 | ƒ } Wn êt j
 o ët } n Xì|  | f Sn í|  | f Sd S(   sÛ   Split host and port, returning numeric port.
    Return given default port if no ':' found; defaults to -1.
    Return numerical port if a valid number are found after ':'.
    Return None if ':' but not a valid number.Ns   ^(.*):(.*)$i   i   s	   no digits(   s
   _nportprogs   Nones   res   compiles   matchs   hosts   groups   ports
   ValueErrors   ints   nports   defport(   s   hosts   defports   res   nports   matchs   port(    (    s   /usr/lib/python2.2/urllib.pys
   splitnportÚs    
 c    s   ðñòót  t j o" ôd k } õ| i d ƒ a  n ÷t  i |  ƒ } ø| o ø| i d d ƒ Sn ù|  t f Sd S(   s/   splitquery('/path?query') --> '/path', 'query'.Ns   ^(.*)\?([^?]*)$i   i   (   s
   _queryprogs   Nones   res   compiles   matchs   urls   group(   s   urls   res   match(    (    s   /usr/lib/python2.2/urllib.pys
   splitqueryðs   
 c    s   üýþÿt  t j o"  d k } | i d ƒ a  n t  i |  ƒ } | o | i d d ƒ Sn |  t f Sd S(   s)   splittag('/path#tag') --> '/path', 'tag'.Ns   ^(.*)#([^#]*)$i   i   (   s   _tagprogs   Nones   res   compiles   matchs   urls   group(   s   urls   res   match(    (    s   /usr/lib/python2.2/urllib.pys   splittagüs   
 c    s1   	
|  i d ƒ } | d | d f Sd S(   sk   splitattr('/path;attr1=value1;attr2=value2;...') ->
        '/path', ['attr1=value1', 'attr2=value2', ...].s   ;i    i   N(   s   urls   splits   words(   s   urls   words(    (    s   /usr/lib/python2.2/urllib.pys	   splitattrs   c    s   t  t j o" d k } | i d ƒ a  n t  i |  ƒ } | o | i d d ƒ Sn |  t f Sd S(   s-   splitvalue('attr=value') --> 'attr', 'value'.Ns   ^([^=]*)=(.*)$i   i   (   s
   _valueprogs   Nones   res   compiles   matchs   attrs   group(   s   attrs   res   match(    (    s   /usr/lib/python2.2/urllib.pys
   splitvalues   
 c    sR   |  d  d j o |  d d !o |  d |  d f Sn t |  f Sd S(   s2   splitgophertype('/Xselector') --> 'X', 'selector'.i   s   /i   N(   s   selectors   None(   s   selector(    (    s   /usr/lib/python2.2/urllib.pys   splitgophertypes   "c    sú    !t  } "t } #|  i d ƒ } $| d g } %| i } &| d ='x | D']… } (| d d !o] )y, *| | | | d  d ƒ ƒ | d ƒ Wn' ,t j
 o -| d | ƒ n Xn /| d | ƒ qZ W0d i | ƒ Sd S(   s"   unquote('abc%20def') -> 'abc def'.s   %i    i   i   i   s    N(   s   chrs   mychrs   ints   myatois   ss   splits   lists   ress   appends   myappends   items
   ValueErrors   join(   s   ss   items   ress   myappends   lists   mychrs   myatoi(    (    s   /usr/lib/python2.2/urllib.pys   unquotes    		

 	,c    sF   234d |  j o 6d i |  i d ƒ ƒ }  n 7t |  ƒ Sd S(   s%   unquote('%7e/abc+def') -> '~/abc def's   +s    N(   s   ss   joins   splits   unquote(   s   s(    (    s   /usr/lib/python2.2/urllib.pys   unquote_plus2s   sA   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-s   /c    sÉ   @ABt  t j o1 Ch  a  Dx t DD] } E| t  | <q) Wn Ft |  ƒ } GxY t t | ƒ ƒ DG]B } H| | } It  i
 | ƒ o Jd t | ƒ | | <n ql WKd i | ƒ Sd  S(   Ns   %%%02Xs    (   s
   _fast_safes   Nones   _fast_safe_tests   cs   lists   ss   ress   ranges   lens   is   has_keys   ords   join(   s   ss   is   ress   c(    (    s   /usr/lib/python2.2/urllib.pys   _fast_quote@s   	
 	 	c    s²   Mabt  | } ct | j o dt |  ƒ Sn et |  ƒ } fxU t t | ƒ ƒ Df]> } g| | } h| | j o id t | ƒ | | <n qY Wjd i | ƒ Sd S(   s  quote('abc def') -> 'abc%20def'

    Each part of a URL, e.g. the path info, the query, etc., has a
    different set of reserved characters that must be quoted.

    RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax lists
    the following reserved characters.

    reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                  "$" | ","

    Each of these characters is reserved in some component of a URL,
    but not necessarily in all of them.

    By default, the quote function is intended for quoting the path
    section of a URL.  Thus, it will not encode '/'.  This character
    is reserved, but in typical usage the quote function is being
    called on a path where the existing slash characters are used as
    reserved characters.
    s   %%%02Xs    N(   s   always_safes   safes   _fast_safe_tests   _fast_quotes   ss   lists   ress   ranges   lens   is   cs   ords   join(   s   ss   safes   cs   is   res(    (    s   /usr/lib/python2.2/urllib.pys   quoteMs    	s    c    s   lmnd |  j oc o|  i d ƒ } px7 t t | ƒ ƒ Dp]  } qt | | | ƒ | | <q> Wrd i | ƒ Sn tt |  | ƒ Sd S(   s9   Quote the query fragment of a URL; replacing ' ' with '+'s    s   +N(	   s   ss   splits   ls   ranges   lens   is   quotes   safes   join(   s   ss   safes   is   l(    (    s   /usr/lib/python2.2/urllib.pys
   quote_plusls    	i    c 
   s¡  vt  |  d ƒ o ƒ|  i ƒ  }  nŽ ‡yJ ‰t |  ƒ } ‹t |  ƒ o t |  d ƒ t i j o Œt ‚ n Wn= ‘t j
 o. ’t	 i
 ƒ  \ } } } “t d | ‚ n X•g  } –| oc ˜xY |  D˜]N \ } } ™t t | ƒ ƒ } št t | ƒ ƒ } ›| i | d | ƒ q× Wn^xW|  D]L\ } } žt t | ƒ ƒ } Ÿt | ƒ t i j o+  t | ƒ } ¡| i | d | ƒ nè ¢t | ƒ t i j o7 ¦t | i d d ƒ ƒ } §| i | d | ƒ n˜ ©y «t | ƒ } WnC ¬t j
 o4 ®t t | ƒ ƒ } ¯| i | d | ƒ n= X²x5 | D²]* }	 ³| i | d t t |	 ƒ ƒ ƒ qXWq:W´d i | ƒ Sd S(	   sv  Encode a sequence of two-element tuples or dictionary into a URL query string.

    If any values in the query arg are sequences and doseq is true, each
    sequence element is converted to a separate parameter.

    If the query arg is a sequence of two-element tuples, the order of the
    parameters in the output will match the order of parameters in the
    input.
    s   itemsi    s1   not a valid non-string sequence or mapping objects   =s   ASCIIs   replaces   &N(   s   hasattrs   querys   itemss   lens   xs   types   typess	   TupleTypes	   TypeErrors   syss   exc_infos   tys   vas   tbs   ls   doseqs   ks   vs
   quote_pluss   strs   appends
   StringTypes   UnicodeTypes   encodes   elts   join(
   s   querys   doseqs   vas   tys   tbs   ks   vs   ls   xs   elt(    (    s   /usr/lib/python2.2/urllib.pys	   urlencodevsF   	*	
  
 
 	,c     s   ·¿Àh  }  Áx_ t i i ƒ  DÁ]K \ } } Â| i ƒ  } Ã| o | d d j o Ä| |  | d  <n q" WÅ|  Sd S(   s  Return a dictionary of scheme -> proxy server URL mappings.

    Scan the environment for variables named <scheme>_proxy;
    this seems to be the standard convention.  If you need a
    different way, you can pass a proxies dictionary to the
    [Fancy]URLopener constructor.

    iúÿÿÿs   _proxyN(   s   proxiess   oss   environs   itemss   names   values   lower(   s   proxiess   names   value(    (    s   /usr/lib/python2.2/urllib.pys   getproxies_environment·s   	 c     sì   ÈÏÐy Ñd k  }  Wn Òt j
 o Óh  Sn XÕy Ö|  i ƒ  } Wn  ×|  i j
 o Øh  Sn XÙh  } Û| i d ƒ o | d oH Üy Ý| d } Wn Þ|  i j
 o
 ßn Xád | | d <n ä| Sd S(   sÜ   Return a dictionary of scheme -> proxy server URL mappings.

        By convention the mac uses Internet Config to store
        proxies.  An HTTP proxy, for instance, is stored under
        the HttpProxy key.

        Ns   UseHTTPProxys   HTTPProxyHosts	   http://%ss   http(   s   ics   ImportErrors   ICs   configs   errors   proxiess   has_keys   value(   s   ics   proxiess   configs   value(    (    s   /usr/lib/python2.2/urllib.pys
   getproxiesÈs"   	c    s   æçd Sd  S(   Ni    (    (   s   x(    (    s   /usr/lib/python2.2/urllib.pys   proxy_bypassæs   c  	   sÊ  êïðh  } ñy òd k } Wn ót j
 o õ| Sn XöyU÷| i | i ød ƒ } ù| i | úd ƒ d } û| oýt | i | þd ƒ d ƒ } ÿd | j o† x| | i
 d ƒ D]h } | i
 d d ƒ \ }  } d k } | i d	 | ƒ o d
 |  | f } n | | |  <qÎ WnH 
| d  d j o | | d <n# d | | d <d | | d <n | i ƒ  Wn" t t t f j
 o
 n X| Sd S(   sx   Return a dictionary of scheme -> proxy server URL mappings.

        Win32 uses the registry to store proxies.

        Ns;   Software\Microsoft\Windows\CurrentVersion\Internet Settingss   ProxyEnablei    s   ProxyServers   =s   ;i   s   ^([^/:]+)://s   %s://%si   s   http:s   https	   http://%ss   ftp://%ss   ftp(   s   proxiess   _winregs   ImportErrors   OpenKeys   HKEY_CURRENT_USERs   internetSettingss   QueryValueExs   proxyEnables   strs   proxyServers   splits   ps   protocols   addresss   res   matchs   Closes   WindowsErrors
   ValueErrors	   TypeError(	   s   protocols   res   internetSettingss   ps   proxyServers   _winregs   addresss   proxiess   proxyEnable(    (    s   /usr/lib/python2.2/urllib.pys   getproxies_registryês<   	
 	c      s   t  ƒ  p t ƒ  Sd S(   s¥   Return a dictionary of scheme -> proxy server URL mappings.

        Returns settings gathered from the environment, if specified,
        or the registry.

        N(   s   getproxies_environments   getproxies_registry(    (    (    s   /usr/lib/python2.2/urllib.pys
   getproxiess   c    s   !y( "d  k  } #d  k } $d  k }
 Wn %t j
 o 'd Sn X(y] )| i | i *d ƒ } +| i | ,d ƒ d }	 -t	 | i | .d ƒ d ƒ } Wn 0t j
 o 1d Sn X2|	 p | o 3d Sn 5|  g }  6y> 7|
 i |  d ƒ } 8| |  j o 9|  i | ƒ n Wn :|
 i j
 o
 ;n X?| i d ƒ } @d } Axu A| t | ƒ j  o^ B| | d j o9 Cd d |
 i ƒ  |
 i |
 i ƒ  ƒ g | | | d	 +n H| d	 7} qyWKxŽ | DK]ƒ } L| i d
 d ƒ } M| i d d ƒ } N| i d d
 ƒ } Ox8 |  DO]- } Q| i | | | i ƒ o Rd	 Sn qJWqøWSd Sd  S(   Ni    s;   Software\Microsoft\Windows\CurrentVersion\Internet Settingss   ProxyEnables   ProxyOverrides   ;s   <local>s	   localhosts	   127.0.0.1i   s   .s   \.s   *s   .*s   ?(   s   _winregs   res   sockets   ImportErrors   OpenKeys   HKEY_CURRENT_USERs   internetSettingss   QueryValueExs   proxyEnables   strs   proxyOverrides   WindowsErrors   hosts   gethostbynames   addrs   appends   errors   splits   is   lens   gethostnames   tests   replaces   vals   matchs   I(   s   hosts   addrs   vals   is   proxyOverrides   internetSettingss   res   _winregs   tests   proxyEnables   socket(    (    s   /usr/lib/python2.2/urllib.pys   proxy_bypass sR   	 9
 	
 	c    s   YZd Sd  S(   Ni    (    (   s   host(    (    s   /usr/lib/python2.2/urllib.pys   proxy_bypassYs   c     så   ]^d  k  } _d } `x* t d ƒ D`] } `| t | ƒ } q( Wa| d } b| i  ƒ  } ct | ƒ }  dt |  ƒ } e| i  ƒ  } f| | j o gd GHn h| GHi|  GHj| GHkt | | d ƒ Gd GHd  S(   Ns    i   i   s   Wrong!i   s   sec(   s   times   ss   ranges   is   chrs   t0s   quotes   qss   unquotes   uqss   t1s   round(   s   qss   is   t0s   t1s   ss   times   uqs(    (    s   /usr/lib/python2.2/urllib.pys   test1]s    	 	 			c    s   npd |  | | f GHd  S(   Ns0   Block number: %d, Block size: %d, Total size: %d(   s   blocknums	   blocksizes	   totalsize(   s   blocknums	   blocksizes	   totalsize(    (    s   /usr/lib/python2.2/urllib.pys
   reporthookns   c    sœ  tu|  oC vd d d d d g }  ~t t d ƒ o |  i d ƒ n n €z3x|  D]} ‚d d	 G| Gd d	 GHƒt | t t ƒ \ } } „| GH…| oE †d
 GH‡x+ | i
 ƒ  D‡] } ‡| d G| | GHqÇ Wˆd
 GHn ‰t | d ƒ } Š| i ƒ  } ‹~ Œd | j o. t i d d ƒ } Ž| i | d ƒ } n | GHt t f \ } } qa W‘d d GHWd  ’“t ƒ  Xd  S(   Ns   /etc/passwds   file:/etc/passwds   file://localhost/etc/passwds&   ftp://ftp.python.org/pub/python/READMEs    http://www.python.org/index.htmls
   open_httpss!   https://synergy.as.cmu.edu/~geek/s   -i
   s   ======s   :s   rbs   s    i(   (   s   argss   hasattrs	   URLopeners   appends   urls   urlretrieves   Nones
   reporthooks   fns   hs   keyss   ks   opens   fps   reads   datas   strings	   maketranss   tables	   translates
   urlcleanup(   s   argss   fps   urls   hs   ks   datas   fns   table(    (    s   /usr/lib/python2.2/urllib.pys   testts6   
 	
 	 c  	   sm  •–d  k  } d  k } —y& ˜| i  | i d d ƒ \ } } Wn2 ™| i j
 o  } š| GH›d GHœd  Sn Xd } žxj | Dž]_ \ } }  Ÿ| d j o  | d } n ¡| d j o" ¢d GH£d G¤d	 GH¥d  Sn q‰ W¦| o/ §| d j o ¨t
 ƒ  n ©t | ƒ nB «| o ¬d GHn ­x$ | D­] } ®t | ƒ i ƒ  GqIWd  S(
   Ni   s   ths   Use -h for helpi    s   -ts   -hs&   Usage: python urllib.py [-t] [url ...]s   -t runs self-test;s'   otherwise, contents of urls are printed(   s   getopts   syss   argvs   optss   argss   errors   msgs   ts   os   as   test1s   tests   urls   urlopens   read(	   s   as   urls   argss   os   syss   msgs   ts   getopts   opts(    (    s   /usr/lib/python2.2/urllib.pys   main•s4   &	
 

 	s   __main__(O   s   __doc__s   strings   sockets   oss   stats   times   syss   typess   __all__s   __version__s   MAXFTPCACHEs   names   macurl2paths   url2pathnames   pathname2urls
   nturl2paths
   rourl2paths   Nones
   _urlopeners   urlopens   urlretrieves
   urlcleanups   ftpcaches	   URLopeners   FancyURLopeners
   _localhosts	   localhosts	   _thishosts   thishosts
   _ftperrorss	   ftperrorss
   _noheaderss	   noheaderss
   ftpwrappers   addbases   addclosehooks   addinfos
   addinfourls   basejoins   toBytess   unwraps	   _typeprogs	   splittypes	   _hostprogs	   splithosts	   _userprogs	   splitusers   _passwdprogs   splitpasswds	   _portprogs	   splitports
   _nportprogs
   splitnports
   _queryprogs
   splitquerys   _tagprogs   splittags	   splitattrs
   _valueprogs
   splitvalues   splitgophertypes   unquotes   unquote_pluss   always_safes   _fast_safe_tests
   _fast_safes   _fast_quotes   quotes
   quote_pluss	   urlencodes   getproxies_environments
   getproxiess   proxy_bypasss   getproxies_registrys   test1s
   reporthooks   tests   mains   __name__(9   s
   splitnports   unquotes
   getproxiess	   URLopeners	   urlencodes   basejoins	   splithosts   ftpcaches   addinfos
   addinfourls	   splitports   __all__s
   splitvalues	   splitusers   splitgophertypes   thishosts   unwraps	   noheaderss   splittags   toBytess	   splitattrs   __version__s	   localhosts   splitpasswds	   splittypes   stats   strings   addclosehooks   urlopens   quotes
   urlcleanups   _fast_safe_tests   addbases   syss
   quote_pluss   tests   urlretrieves
   ftpwrappers   typess   url2pathnames   FancyURLopeners   mains   sockets
   splitquerys   getproxies_environments   getproxies_registrys   proxy_bypasss   always_safes
   reporthooks   pathname2urls   test1s   times   MAXFTPCACHEs	   ftperrorss   _fast_quotes   oss   unquote_plus(    (    s   /usr/lib/python2.2/urllib.pys   ? s®   `					ÿ ¾z				I
J											
A-	7	!