‡Æ
Nö9c    	   s    d  Z    d k Z  d k Z  d k Z  d k Z  d Z ! d Z $ e i d j o % d k l	 Z	 l
 Z
 nF & e i d j o ' d k l	 Z	 l
 Z
 n ) d „  Z	 + d „  Z
 6 e Z 7 e d	 „ Z @ e e e d
 „ Z E d „  Z J h  Z K d f  d „  ƒ  YZ ýd e f d „  ƒ  YZ ae Z bd „  Z ie Z jd „  Z qe Z rd „  Z ze Z {d „  Z ˆd f  d „  ƒ  YZ Ñd f  d „  ƒ  YZ çd e f d „  ƒ  YZ öd e f d „  ƒ  YZ  d e f d „  ƒ  YZ  d „  Z! Wd „  Z" _e Z# `d  „  Z$ me Z% nd! „  Z& ye Z' zd" „  Z( …e Z) †d# „  Z* ’e Z+ “d$ „  Z, že Z- Ÿd& d% „ Z. ´e Z/ µd' „  Z0 Àe Z1 Ád( „  Z2 Ìd) „  Z3 Òe Z4 Ód* „  Z5 Þd+ „  Z6 äd, „  Z7 ÷d- „  Z8 þd. Z9 e9 d/ Z: e Z; d0 „  Z< d/ d1 „ Z= 1d3 d2 „ Z> ;d4 „  Z? Ed5 „  Z@ Ue i d j o Vd6 „  ZA n9 te i d j o ud7 „  ZB žd8 „  ZA n
 ¨e@ ZA ¬d9 „  ZC ½d: „  ZD Âg  d; „ ZE ãd< „  ZF ÿeG d= j o  eF ƒ  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   1.13i
   s   mac(   s   url2pathnames   pathname2urls   ntc    s   ) * t  |  ƒ Sd  S(   N(   s   unquotes   pathname(   s   pathnames#   /mit/python/lib/python2.0/urllib.pys   url2pathname) s   c    s   + , t  |  ƒ Sd  S(   N(   s   quotes   pathname(   s   pathnames#   /mit/python/lib/python2.0/urllib.pys   pathname2url+ s   c    s_   7 8 9 : t  o ; t ƒ  a  n < | t j o = t  i |  ƒ Sn ? t  i |  | ƒ Sd S(   s.   urlopen(url [, data]) -> open file-like objectN(   s
   _urlopeners   FancyURLopeners   datas   Nones   opens   url(   s   urls   datas#   /mit/python/lib/python2.0/urllib.pys   urlopen7 s   c    s>   @ A B t  o C t ƒ  a  n D t  i |  | | | ƒ Sd  S(   N(   s
   _urlopeners   FancyURLopeners   retrieves   urls   filenames
   reporthooks   data(   s   urls   filenames
   reporthooks   datas#   /mit/python/lib/python2.0/urllib.pys   urlretrieve@ s   c      s"   E F t  o G t  i ƒ  n d  S(   N(   s
   _urlopeners   cleanup(    s#   /mit/python/lib/python2.0/urllib.pys
   urlcleanupE s   
s	   URLopenerc      s4  K d  Z  Q S e Z U d e Z X e d „ Z o d „  Z r d „  Z u d „  Z ƒ d „  Z	 ‰ e d „ Z
 ¬ e d „ Z ± e d	 „ Z · e e e d
 „ Z í e d „ Z "e d „ Z 1d „  Z 7e e d ƒ o 8e d „ Z n p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Ì   X Y | t j o Z t ƒ  } n [ t o t | d ƒ p
 t d ‚ \ | |  _  ] | i d ƒ |  _	 ^ | i d ƒ |  _
 _ d |  i f g |  _ ` g  |  _ a t i |  _ b t |  _ i 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   x509s#   /mit/python/lib/python2.0/urllib.pys   __init__X s   $c    s   o p |  i ƒ  d  S(   N(   s   selfs   close(   s   selfs#   /mit/python/lib/python2.0/urllib.pys   __del__o s   c    s   r s |  i ƒ  d  S(   N(   s   selfs   cleanup(   s   selfs#   /mit/python/lib/python2.0/urllib.pys   closer s   c    s†   u y |  i oQ z x= |  i d z r- } { y | |  i | ƒ Wn } ~ n Xq W |  i 2n € |  i o  |  i i ƒ  n d  S(   Ni    (   s   selfs   _URLopener__tempfiless   files   _URLopener__unlinks	   tempcaches   clear(   s   selfs   files#   /mit/python/lib/python2.0/urllib.pys   cleanupu 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   argss#   /mit/python/lib/python2.0/urllib.pys	   addheaderƒ s   c    s5  ‰ Š ‹ 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% ž t i t i | d ƒ 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   fullurls   selfs	   tempcaches   has_keys   filenames   headerss   opens   fps
   addinfourls	   splittypes   types   urls   proxiess   proxys	   proxyhosts	   splithosts   hosts   selectors   Nones   names   strings   joins   splits   hasattrs   open_unknown_proxys   datas   open_unknowns   getattrs   sockets   errors   msgs   IOErrors   syss   exc_info(   s   selfs   fullurls   datas   filenames   headerss   fps   types   urls   proxys	   proxyhosts   hosts   selectors   names   msgs#   /mit/python/lib/python2.0/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   types   urls#   /mit/python/lib/python2.0/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   types   urls#   /mit/python/lib/python2.0/urllib.pys   open_unknown_proxy± s   c    sK  · ¹ º 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   s   content-lengths   Content-Lengthi    (+   s   unwraps   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   types   url1s   fps   hdrss   msgs   headerss   tempfiles   garbages   paths   suffixs   results   tfps   bss   sizes   blocknums   blocks#   /mit/python/lib/python2.0/urllib.pys   retrieve· sd     !
	

 

c    sm  í î ï d k  } ð t } ñ t | ƒ t d ƒ j oT ò t | ƒ \ } } ó | o( ô t | ƒ \ } } õ t	 | ƒ } n ö | } n¹ ø | \ } } ù t | ƒ \ } }	 ú |	 } û t } ü t i | ƒ d j o ý t } n] ÿ t |	 ƒ \ } }	  | o t | ƒ \ } } n | o d | | |	 f } n | o t d d f ‚ n | o+ d k }
 t 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 r } t | i | ƒ qsW| i ƒ  | t j	 o | i  | d ƒ n | i! ƒ  \ } } } | i% ƒ  } | d j o t' | | d | ƒ SnP | t j o  |  i( | | | | | ƒ Sn   |  i( | | | | | | ƒ Sd S(   s   Use HTTP protocol.Ns    s   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   
iÈ   s   http:()   s   httplibs   Nones   user_passwds   types   urls	   splithosts   hosts   selectors	   splitusers   unquotes   realhosts	   splittypes   urltypes   rests   strings   lowers   IOErrors   base64s   strips   encodestrings   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   httplibs   user_passwds   hosts   selectors   realhosts   urltypes   rests   base64s   auths   hs   argss   errcodes   errmsgs   headerss   fps#   /mit/python/lib/python2.0/urllib.pys	   open_httpí sb   	
		

 
	!
 
  	  c 
   s¾   "%'d | } (t |  | ƒ ox )t |  | ƒ } *| 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   results#   /mit/python/lib/python2.0/urllib.pys
   http_error"s   
 c    s>   123| i ƒ  } 4| i ƒ  5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   voids#   /mit/python/lib/python2.0/urllib.pys   http_error_default1s   s   sslc    s„  89:d k  } ;t } <t | ƒ t d ƒ j oT =t | ƒ \ } } >| o( ?t | ƒ \ } } @t	 | ƒ } n A| } n¹ C| \ } } Dt | ƒ \ } }	 E|	 } Ft } Gt i | ƒ d j o Ht } n] Jt |	 ƒ \ } }	 K| o Lt | ƒ \ } } n M| o Nd | | |	 f } n P| o Pt d d f ‚ n Q| o+ Rd k }
 St i |
 i | ƒ ƒ } n
 Ut } V| i | d Wd |  i Xd	 |  i ƒ} Y| t j	 oJ Z| i d
 | ƒ [| i d \d ƒ ]| i d d t | ƒ ƒ n _| i d | ƒ `| o `| i d | ƒ n a| o a| i d | ƒ n bx) |  i d br } bt  | i | ƒ qŽWc| i! ƒ  d| t j	 o e| i" | d ƒ n f| i# ƒ  \ } } } g| i' ƒ  } h| d j o it) | | | ƒ SnP k| t j o  l|  i* | | | | | ƒ Sn  n|  i* | | | | | | ƒ Sd S(   s   Use HTTPS protocol.Ns    s   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   Hosts   
iÈ   (+   s   httplibs   Nones   user_passwds   types   urls	   splithosts   hosts   selectors	   splitusers   unquotes   realhosts	   splittypes   urltypes   rests   strings   lowers   IOErrors   base64s   strips   encodestrings   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   httplibs   user_passwds   hosts   selectors   realhosts   urltypes   rests   base64s   auths   hs   argss   errcodes   errmsgs   headerss   fps#   /mit/python/lib/python2.0/urllib.pys
   open_https8sh   	
		

 
	
!
 
  	  c    sø   pqrd k  } st | ƒ \ } } t| o tt d d f ‚ n ut | ƒ } vt | ƒ \ } } wt	 | ƒ \ } } xt | ƒ } y| o+ z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   hosts   selectors   types   querys   fps#   /mit/python/lib/python2.0/urllib.pys   open_gopherp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   urls#   /mit/python/lib/python2.0/urllib.pys	   open_file€s   (c    s†  ‡ˆ‰d k  } d k } d k } Š| i | ƒ d } ‹| i | i d | p d ƒ ƒ } t | ƒ \ } } Ž| oW | }	 | d  d j o ‘d | }	 n ’t t t | ƒ d ƒ “| |	 ƒ Sn ”t | ƒ \ } }
 •|
 o t i | ƒ t ƒ  t ƒ  f j oW —| }	 ˜| d  d j o ™d | }	 n št t t | ƒ d ƒ ›| |	 ƒ Sn œt d	 d
 f ‚ d S(   s   Use local file.Ni    s   Content-Type: %s
s
   text/plaini   s   /s   file://s   rbs   local file errors   not on local host(   s	   mimetypess	   mimetoolss   StringIOs
   guess_types   urls   mtypes   Messages   headerss	   splithosts   hosts   files   urlfiles
   addinfourls   opens   url2pathnames	   splitports   ports   sockets   gethostbynames	   localhosts   thishosts   IOError(   s   selfs   urls	   mimetypess	   mimetoolss   StringIOs   mtypes   headerss   hosts   files   urlfiles   ports#   /mit/python/lib/python2.0/urllib.pys   open_local_file‡s&   &	-	c  	  s  žŸ 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 | ƒ } ±t i | d ƒ }	 ²|	 d  |	 d f \ }	 }
 ³|	 o	 |	 d o ³|	 d }	 n ´|	 o	 |	 d o ´d |	 d <n µ| | | t i |	 d ƒ f } ·t |  i ƒ t j od ¹xZ |  i i ƒ  d ¹rD } º| | j o. »|  i | } ¼|  i | =½| i! ƒ  n q
Wn ¾yx¿|  i i" | ƒ o& Àt# | | | | |	 ƒ |  i | <n Â|
 o Âd } n
 Ãd	 } Äxv | d Äri } Åt& | ƒ \ } } Æt i( | ƒ d
 j o | d d d d	 d d f j o Èt i) | ƒ } n qÉWÉ|  i | i* |
 | ƒ \ } } Ê| t j	 o
 | d j o8 Ëd k- } d k. } Ì| i/ | i. d | ƒ ƒ } n Ït1 ƒ  } Ðt2 | | d | ƒ SWn: Ñt3 ƒ  j
 o( } Òt d | f t5 i6 ƒ  d ‚ n Xd S(   s   Use FTP protocol.s	   ftp errors   no host givens    Ns   /i   i    s   Ds   Is   types   as   As   is   ds   Content-Length: %d
s   ftp:i   (7   s	   splithosts   urls   hosts   paths   IOErrors	   splitports   ports	   splitusers   users   splitpasswds   passwds   Nones   unquotes   sockets   gethostbynames   ftplibs   FTP_PORTs   ints	   splitattrs   attrss   strings   splitfieldss   dirss   files   joins   keys   lens   selfs   ftpcaches   MAXFTPCACHEs   keyss   ks   vs   closes   has_keys
   ftpwrappers   types   attrs
   splitvalues   values   lowers   uppers   retrfiles   fps   retrlens	   mimetoolss   StringIOs   Messages   headerss	   noheaderss
   addinfourls	   ftperrorss   msgs   syss   exc_info(   s   selfs   urls   hosts   paths   ports   users   passwds   ftplibs   attrss   dirss   files   keys   ks   vs   types   attrs   values   fps   retrlens	   mimetoolss   StringIOs   headerss   msgs#   /mit/python/lib/python2.0/urllib.pys   open_ftpžsh    
 	  ! 	& 	 	8"#c    s  ÔÕÝd k  } d k } d k } Þy" ßt i | d d ƒ \ } } Wn( àt j
 o át	 d d f ‚ n Xâ| o ãd } n ät 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 | ƒ öt i |	 d ƒ }	 ÷| 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   strings   splits   urls   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   StringIOs	   mimetoolss   times   types   semis   encodings   msgs   base64s   fs   headerss#   /mit/python/lib/python2.0/urllib.pys	   open_dataÔs:   "!		(   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#   /mit/python/lib/python2.0/urllib.pys	   URLopenerK s,   		#6586s   FancyURLopenerc      sŒ   ýd  Z  þ d „  Z d „  Z e d „ Z e d „ Z e d „ Z /e d „ Z <e d „ Z Fd	 d „ Z	 Qd
 „  Z
 RS(   s?   Derived class with handlers for errors we can handle (perhaps).c    s-    t  t i |  f | ƒ h  |  _ d  S(   N(   s   applys	   URLopeners   __init__s   selfs   argss
   auth_cache(   s   selfs   argss#   /mit/python/lib/python2.0/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   headerss#   /mit/python/lib/python2.0/urllib.pys   http_error_defaults   c 	   sÂ   	| i d ƒ o | d } n, | i d ƒ o | d } n d S| i ƒ  } | i ƒ  t d | | ƒ } | t
 j o |  i | ƒ Sn |  i | | ƒ Sd S(   s%   Error 302 -- relocated (temporarily).s   locations   uriNs   http:(   s   headerss   has_keys   newurls   fps   reads   voids   closes   basejoins   urls   datas   Nones   selfs   open(	   s   selfs   urls   fps   errcodes   errmsgs   headerss   datas   newurls   voids#   /mit/python/lib/python2.0/urllib.pys   http_error_302s   c    s)   |  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   datas#   /mit/python/lib/python2.0/urllib.pys   http_error_301s   c    sì   !"| i d ƒ oÏ #| d } $d k } %| i d | ƒ }	 &|	 o“ '|	 i ƒ  \ }
 } (t i	 |
 ƒ d j oa )d |  i d } *| t j o +t |  | ƒ | | ƒ Sn -t |  | ƒ | | | ƒ Sn n n d 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   stuffs   res   matchs   groupss   schemes   realms   strings   lowers   selfs   types   names   datas   Nones   getattrs   url(   s   selfs   urls   fps   errcodes   errmsgs   headerss   datas   stuffs   res   matchs   schemes   realms   names#   /mit/python/lib/python2.0/urllib.pys   http_error_401s   
c 
   sÞ   /0t  | ƒ \ } } 1t i | d ƒ d } 2| | } 3|  i | | | ƒ \ } } 4| p | o 4t Sn 5| d | d | } 6d | | }	 7| t j o 8|  i |	 ƒ Sn :|  i |	 | ƒ Sd  S(   Ns   @i   s   :s   http://(   s	   splithosts   urls   hosts   selectors   strings   finds   is   selfs   get_user_passwds   realms   users   passwds   Nones   newurls   datas   open(
   s   selfs   urls   realms   datas   hosts   selectors   is   users   passwds   newurls#   /mit/python/lib/python2.0/urllib.pys   retry_http_basic_auth/s    c 
   s·   <=t  | ƒ \ } } >t i | d ƒ d } ?| | } @|  i | | | ƒ \ } } A| p | o At Sn B| d | d | } Cd | | }	 D|  i |	 ƒ Sd  S(   Ns   @i   s   :s   //(   s	   splithosts   urls   hosts   selectors   strings   finds   is   selfs   get_user_passwds   realms   users   passwds   Nones   newurls
   open_https(
   s   selfs   urls   realms   datas   hosts   selectors   is   users   passwds   newurls#   /mit/python/lib/python2.0/urllib.pys   retry_https_basic_auth<s    c    s·   FG| d t i | ƒ } H|  i i | ƒ o- I| o J|  i | =n L|  i | Sn M|  i	 | | ƒ \ } } N| p | o N| | f |  i | <n O| | f Sd  S(   Ns   @(   s   realms   strings   lowers   hosts   keys   selfs
   auth_caches   has_keys   clear_caches   prompt_user_passwds   users   passwd(   s   selfs   hosts   realms   clear_caches   keys   users   passwds#   /mit/python/lib/python2.0/urllib.pys   get_user_passwdFs   
 i    c    sŒ   QRSd k  } TyI Ut d | | f ƒ } W| i  d | | | f ƒ } Y| | f SWn' Z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   passwds#   /mit/python/lib/python2.0/urllib.pys   prompt_user_passwdQs   (   s   __doc__s   __init__s   http_error_defaults   Nones   http_error_302s   http_error_301s   http_error_401s   retry_http_basic_auths   retry_https_basic_auths   get_user_passwds   prompt_user_passwd(    s#   /mit/python/lib/python2.0/urllib.pys   FancyURLopenerýs   	
c      s5   bcdet  o ft i d ƒ a  n gt  Sd S(   s8   Return the IP address of the magic hostname 'localhost'.s	   localhostN(   s
   _localhosts   sockets   gethostbyname(    s#   /mit/python/lib/python2.0/urllib.pys	   localhostbs
   c      s;   jklmt  o nt i t i ƒ  ƒ a  n ot  Sd S(   s*   Return the IP address of the current host.N(   s	   _thishosts   sockets   gethostbynames   gethostname(    s#   /mit/python/lib/python2.0/urllib.pys   thishostjs
   c     s;   rstut  o vd k }  w|  i a  n xt  Sd S(   s1   Return the set of errors raised by the FTP class.N(   s
   _ftperrorss   ftplibs
   all_errors(   s   ftplibs#   /mit/python/lib/python2.0/urllib.pys	   ftperrorsr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   StringIOs#   /mit/python/lib/python2.0/urllib.pys	   noheaders{s   s
   ftpwrapperc      sJ   ˆ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   dirss#   /mit/python/lib/python2.0/urllib.pys   __init__‹s   c    s˜   “”d  k  } •d |  _ –| i ƒ  |  _ —|  i i |  i |  i ƒ ˜|  i i |  i	 |  i
 ƒ ™x) |  i d ™r } š|  i i | ƒ qt Wd  S(   Ni    (   s   ftplibs   selfs   busys   FTPs   ftps   connects   hosts   ports   logins   users   passwds   dirss   dirs   cwd(   s   selfs   ftplibs   dirs#   /mit/python/lib/python2.0/urllib.pys   init“s    	c    sM  œ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 | ƒ } WnR ³| i j
 o@ } ´| 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   busys   addclosehooks   makefile(   s   selfs   files   types   ftplibs   cmds   isdirs   conns   reasons#   /mit/python/lib/python2.0/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   selfs#   /mit/python/lib/python2.0/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   selfs#   /mit/python/lib/python2.0/urllib.pys   closeÊs
   (   s   __doc__s   __init__s   inits   retrfiles   endtransfers   close(    s#   /mit/python/lib/python2.0/urllib.pys
   ftpwrapperˆs   		%	s   addbasec      s2   Ñ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   fps#   /mit/python/lib/python2.0/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   selfs#   /mit/python/lib/python2.0/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   selfs#   /mit/python/lib/python2.0/urllib.pys   closeßs    (   s   __doc__s   __init__s   __repr__s   close(    s#   /mit/python/lib/python2.0/urllib.pys   addbaseÑs   	s   addclosehookc      s&   ç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   hookargss#   /mit/python/lib/python2.0/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   selfs#   /mit/python/lib/python2.0/urllib.pys   closeïs
   (   s   __doc__s   __init__s   close(    s#   /mit/python/lib/python2.0/urllib.pys   addclosehookçs   	s   addinfoc      s&   ö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   headerss#   /mit/python/lib/python2.0/urllib.pys   __init__ùs   c    s   ýþ|  i Sd  S(   N(   s   selfs   headers(   s   selfs#   /mit/python/lib/python2.0/urllib.pys   infoýs   (   s   __doc__s   __init__s   info(    s#   /mit/python/lib/python2.0/urllib.pys   addinfoös   	s
   addinfourlc      s2    d  Z  d „  Z d „  Z d „  Z RS(   s9   class to add info() and geturl() methods to an open file.c    s2   t  i |  | ƒ | |  _ | |  _ d  S(   N(   s   addbases   __init__s   selfs   fps   headerss   url(   s   selfs   fps   headerss   urls#   /mit/python/lib/python2.0/urllib.pys   __init__s   c    s   	|  i Sd  S(   N(   s   selfs   headers(   s   selfs#   /mit/python/lib/python2.0/urllib.pys   infos   c    s   |  i Sd  S(   N(   s   selfs   url(   s   selfs#   /mit/python/lib/python2.0/urllib.pys   geturls   (   s   __doc__s   __init__s   infos   geturl(    s#   /mit/python/lib/python2.0/urllib.pys
   addinfourl s   	c 	   s„  t  | ƒ \ } } | o | Sn t | ƒ \ } } t  |  ƒ \ } } | o, | o | d | | Sn | Sn t | ƒ \ } } t | ƒ \ } }  t
 | ƒ \ } } !| d  d j o4#| d  d d f j o %t | ƒ } n (t i | d ƒ } )| d j  o$ +| o -d } n
 0d } n 3| | d  } 5x– 5| o | d  d	 j oz 6| d } 7t i | d  d ƒ } 8| d j o 9| | d  } n+ :| d j o ;d } <Pn
 >d } qpW@| | } n A| o | o A| d | | SnB B| o B| d
 | Sn% C| o Cd | | Sn D| 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   ../s   :s   //N(   s	   splittypes   urls   types   paths	   splithosts   hosts   bases   basepaths   splittags   basetags
   splitquerys	   basequerys   lens   is   strings   rfind(	   s   bases   urls   types   paths   hosts   basepaths   basetags	   basequerys   is#   /mit/python/lib/python2.0/urllib.pys   basejoinsP   


 
 	 
 
 c    s•   WXYt  i |  ƒ }  Z|  d  d j o |  d d j o [t  i |  d d !ƒ }  n \|  d  d j o \t  i |  d ƒ }  n ]|  Sd S(   s8   unwrap('<URL:type://host/path>') --> 'type://host/path'.i   s   <s   >i   s   URL:N(   s   strings   strips   url(   s   urls#   /mit/python/lib/python2.0/urllib.pys   unwrapWs   & c    sŸ   `abct  t j o" dd k } e| i d ƒ a  n gt  i |  ƒ } h| o7 i| i d ƒ } j| i ƒ  |  t	 | ƒ d f Sn k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   matchs   schemes#   /mit/python/lib/python2.0/urllib.pys	   splittype`s   
%c    s   nopqt  t j o" rd k } s| i d ƒ a  n ut  i |  ƒ } v| o v| i d d ƒ Sn w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   res   matchs#   /mit/python/lib/python2.0/urllib.pys	   splithostns   
 c    sˆ   z{|}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   matchs#   /mit/python/lib/python2.0/urllib.pys	   splituserz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   matchs#   /mit/python/lib/python2.0/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   matchs#   /mit/python/lib/python2.0/urllib.pys	   splitport“s   
 c    sð   Ÿ£¤¥t  t j o" ¦d k } §| i d ƒ a  n ©t  i |  ƒ } ª| oˆ «| i d d ƒ \ }  } ¬y4 ­| o ­t i	 d ‚ n ®t i
 | ƒ } Wn" ¯t i	 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   strings
   atoi_errors   atois   nports   defport(   s   hosts   defports   res   matchs   ports   nports#   /mit/python/lib/python2.0/urllib.pys
   splitnportŸs    
 i   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   matchs#   /mit/python/lib/python2.0/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   matchs#   /mit/python/lib/python2.0/urllib.pys   splittagÁs   
 c    s4   ÌÎÏt  i |  d ƒ } Ð| d | d f Sd S(   sk   splitattr('/path;attr1=value1;attr2=value2;...') ->
        '/path', ['attr1=value1', 'attr2=value2', ...].s   ;i    i   N(   s   strings   splitfieldss   urls   words(   s   urls   wordss#   /mit/python/lib/python2.0/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   matchs#   /mit/python/lib/python2.0/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   selectors#   /mit/python/lib/python2.0/urllib.pys   splitgophertypeÞs   "c    sù   äåæt  } çt i } èt i |  d ƒ } é| d g } ê| i	 } ë| d =ìx† | d ìry } í| d d !oQ îy, ï| | | | d  d ƒ ƒ | d ƒ Wn ñò| d | ƒ n Xn ô| d | ƒ qb Wõt i | d ƒ Sd S(   s"   unquote('abc%20def') -> 'abc def'.s   %i    i   i   i   s    N(   s   chrs   mychrs   strings   atois   myatois   splits   ss   lists   ress   appends   myappends   items   join(   s   ss   mychrs   myatois   lists   ress   myappends   items#   /mit/python/lib/python2.0/urllib.pys   unquoteäs    	
 	,c    sL   ÷øùd |  j o% ût i t i |  d ƒ d ƒ }  n üt |  ƒ Sd S(   s%   unquote('%7e/abc+def') -> '~/abc def's   +s    N(   s   ss   strings   joins   splits   unquote(   s   ss#   /mit/python/lib/python2.0/urllib.pys   unquote_plus÷s   %sA   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-s   /c    sÐ   t  t j o3 h  a  	x  t d 	r } 
| t  | <q+ Wn t |  ƒ } x[ t t | ƒ ƒ d rB } | | } t  i
 | ƒ o d t | ƒ | | <n qp Wt i | d ƒ Sd  S(   Ni    s   %%%02xs    (   s
   _fast_safes   Nones   _fast_safe_tests   cs   lists   ss   ress   ranges   lens   is   has_keys   ords   strings   join(   s   ss   cs   ress   is#   /mit/python/lib/python2.0/urllib.pys   _fast_quotes   	 	 	c    s·   &'t  | } (t | j o )t |  ƒ Sn *t |  ƒ } +xW t t | ƒ ƒ d +r> } ,| | } -| | j o .d t | ƒ | | <n q[ W/t i | d ƒ 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.
    i    s   %%%02xs    N(   s   always_safes   safes   _fast_safe_tests   _fast_quotes   ss   lists   ress   ranges   lens   is   cs   ords   strings   join(   s   ss   safes   ress   is   cs#   /mit/python/lib/python2.0/urllib.pys   quotes    	c    s•   123d |  j ok 4t i |  d ƒ } 5x9 t t | ƒ ƒ d 5r  } 6t | | | ƒ | | <qC W7t i	 | d ƒ Sn 9t |  | ƒ Sd S(   s9   Quote the query fragment of a URL; replacing ' ' with '+'s    i    s   +N(
   s   ss   strings   splits   ls   ranges   lens   is   quotes   safes   join(   s   ss   safes   ls   is#   /mit/python/lib/python2.0/urllib.pys
   quote_plus1s    	s    c    s   ;<=g  } >xa |  i ƒ  d >rN \ } } ?t t | ƒ ƒ } @t t | ƒ ƒ } A| i | d | ƒ q! WBt i	 | d ƒ Sd S(   s<   Encode a dictionary of form entries into a URL query string.i    s   =s   &N(
   s   ls   dicts   itemss   ks   vs
   quote_pluss   strs   appends   strings   join(   s   dicts   ls   ks   vs#   /mit/python/lib/python2.0/urllib.pys	   urlencode;s   	 c     s†   EMNh  }  Oxf t i i ƒ  d OrP \ } } Pt i | ƒ } Q| o | d d j o R| |  | d  <n q$ WS|  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    i   s   _proxyN(   s   proxiess   oss   environs   itemss   names   values   strings   lower(   s   proxiess   names   values#   /mit/python/lib/python2.0/urllib.pys   getproxies_environmentEs   	 c     sì   V]^y _d k  }  Wn `t j
 o ah  Sn Xcy d|  i ƒ  } Wn  e|  i j
 o fh  Sn Xgh  } i| i d ƒ o | d oH jy k| d } Wn l|  i j
 o
 mn Xod | | d <n r| 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   configs   proxiess   values#   /mit/python/lib/python2.0/urllib.pys
   getproxiesVs"   	c     sœ  uz{h  }  |y }d k } Wn ~t j
 o €|  Sn Xy'‚| i | i ƒd ƒ } „| i | …d ƒ d } †| oÕ ˆt | i | ‰d ƒ d ƒ } Šd | j oX ŒxN | i
 d ƒ d Œr8 } | i
 d d ƒ \ } } Žd	 | | f |  | <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://%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   Closes   WindowsErrors
   ValueErrors	   TypeError(   s   proxiess   _winregs   internetSettingss   proxyEnables   proxyServers   ps   protocols   addresss#   /mit/python/lib/python2.0/urllib.pys   getproxies_registryus6   	
 	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#   /mit/python/lib/python2.0/urllib.pys
   getproxiesžs   c     sç   ¬­d  k  }  ®d } ¯x, t d ƒ d ¯r } ¯| t | ƒ } q* W°| d } ±|  i  ƒ  } ²t | ƒ } ³t | ƒ } ´|  i  ƒ  } µ| | j o ¶d GHn ·| GH¸| GH¹| GHºt | | d ƒ Gd GHd  S(   Ns    i   i    i   s   Wrong!i   s   sec(   s   times   ss   ranges   is   chrs   t0s   quotes   qss   unquotes   uqss   t1s   round(   s   times   ss   is   t0s   qss   uqss   t1s#   /mit/python/lib/python2.0/urllib.pys   test1¬s    	 	 			c    s   ½¿d |  | | f GHd  S(   Ns0   Block number: %d, Block size: %d, Total size: %d(   s   blocknums	   blocksizes	   totalsize(   s   blocknums	   blocksizes	   totalsizes#   /mit/python/lib/python2.0/urllib.pys
   reporthook½s   c    s§  ÂÃ|  oC Äd d d d d g }  Ìt t d ƒ o Í|  i d ƒ n n Îz>Ïx(|  d Ïr} Ðd	 d
 G| Gd	 d
 GHÑt | t t ƒ \ } } Ò| G| GHÓ| oG Ôd GHÕx- | i
 ƒ  d Õr } Õ| d G| | GHqÏ WÖd GHn ×t | d ƒ } Ø| i ƒ  } Ù~ Úd | j o1 Ût i d d ƒ } Üt i | | d ƒ } n Ý| GHÞt t f \ } } qc Wßd	 d GHWd  àát ƒ  Xd  S(   Ns   /etc/passwds   file:/etc/passwds   file://localhost/etc/passwds   ftp://ftp.python.org/etc/passwds    http://www.python.org/index.htmls
   open_httpss!   https://synergy.as.cmu.edu/~geek/i    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   urls   fns   hs   ks   fps   datas   tables#   /mit/python/lib/python2.0/urllib.pys   testÂs6    	
 	 c  	   sq  ãäd  k  }  d  k } åy& æ|  i  | i d d ƒ \ } } Wn2 ç|  i j
 o  } è| GHéd GHêd  Sn Xëd } ìxl | d ìr_ \ } } í| 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 | ƒ nD ù| o úd GHn ûx& | d ûr } üt | ƒ i ƒ  GqM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   getopts   syss   optss   argss   msgs   ts   os   as   urls#   /mit/python/lib/python2.0/urllib.pys   mainãs4   &	 
 	s   __main__(H   s   __doc__s   strings   sockets   oss   syss   __version__s   MAXFTPCACHEs   names   macurl2paths   url2pathnames   pathname2urls
   nturl2paths   Nones
   _urlopeners   urlopens   urlretrieves
   urlcleanups   ftpcaches	   URLopeners   FancyURLopeners
   _localhosts	   localhosts	   _thishosts   thishosts
   _ftperrorss	   ftperrorss
   _noheaderss	   noheaderss
   ftpwrappers   addbases   addclosehooks   addinfos
   addinfourls   basejoins   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   getproxies_registrys   test1s
   reporthooks   tests   mains   __name__(    s#   /mit/python/lib/python2.0/urllib.pys   ? sš   					ÿ ³d				I
H											

)
	!