-í
�H ?c       s´    d  Z  G Z d k Z [ d k Z \ d k Z ] d k Z ^ d k Z _ d k Z ` d k Z a d k Z b d k	 Z	 c d k
 Z
 d d k Z e d k Z f d k Z g d k Z h d k Z i d k Z j d k Z k d k Z m y n d k l Z Wn& o e j
 o p d k l Z n Xr y s d k Z Wn t e j
 o v e Z n Xy d k l Z l Z l Z l Z l Z l Z l Z l  Z  l! Z! l" Z" l# Z# ~ d k l$ Z$ � d k l% Z% l& Z& ƒ d Z' … e a( † e d „ Z) Œ d „  Z* ” d	 e+ f d
 „  ƒ  YZ, � d e, e f d „  ƒ  YZ- ³ d e, f d „  ƒ  YZ. · d f  d „  ƒ  YZ/ õ d f  d „  ƒ  YZ0 cd „  Z1 ˆd f  d „  ƒ  YZ2 Žd e2 f d „  ƒ  YZ3 ’d e2 f d „  ƒ  YZ4 ºd e2 f d „  ƒ  YZ5 Ûd f  d „  ƒ  YZ6 éd e2 f d „  ƒ  YZ7 d  f  d! „  ƒ  YZ8 /d" e8 f d# „  ƒ  YZ9 8d$ f  d% „  ƒ  YZ: \d& e: e2 f d' „  ƒ  YZ; fd( e: e2 f d) „  ƒ  YZ< pd* f  d+ „  ƒ  YZ= Æd, e2 e= f d- „  ƒ  YZ> Ôd. e2 e= f d/ „  ƒ  YZ? Ýd0 „  Z@ çd1 e2 f d2 „  ƒ  YZA d3 eA f d4 „  ƒ  YZB eC e d5 ƒ o d6 eA f d7 „  ƒ  YZD n d8 e2 f d9 „  ƒ  YZE  d: „  ZF *d; „  ZG Xd< e2 f d= „  ƒ  YZH d> e2 f d? „  ƒ  YZI ­d@ eI f dA „  ƒ  YZJ ÛdB e2 f dC „  ƒ  YZK ídD f  dE „  ƒ  YZL eM dF j o®
e iN ƒ  dG j o dH Z% n- e iN ƒ  dI j o dJ Z% n
 e Z% dK dL dM dN dO dP dQ dR dS dT f dU dV g ZO 1eJ ƒ  ZP 2eP iQ dW ƒ >e* e1 eP eK ƒ ƒ @xó eO D@]è ZR AeS eR e iT ƒ o BeR \ ZR ZU n
 De ZU EeR GHFy Ge) eR eU ƒ ZV WnJ He+ j
 o ZW IdX GeW GHnV Je iX j
 o ZW KdY GeW GHn0 XMeV iY ƒ  ZZ NeV i[ ƒ  OdZ e\ eZ ƒ GHPHQe i] d[ ƒ q½Wn d S(\   s
  An extensible library for opening URLs using a variety of protocols

The simplest way to use this module is to call the urlopen function,
which accepts a string containing a URL or a Request object (described
below).  It opens the URL and returns the results as file-like
object; the returned object has some extra methods described below.

The OpenerDirectory manages a collection of Handler objects that do
all the actual work.  Each Handler implements a particular protocol or
option.  The OpenerDirector is a composite object that invokes the
Handlers needed to open the requested URL.  For example, the
HTTPHandler performs HTTP GET and POST requests and deals with
non-error returns.  The HTTPRedirectHandler automatically deals with
HTTP 301 & 302 redirect errors, and the HTTPDigestAuthHandler deals
with digest authentication.

urlopen(url, data=None) -- basic usage is that same as original
urllib.  pass the url and optionally data to post to an HTTP URL, and
get a file-like object back.  One difference is that you can also pass
a Request instance instead of URL.  Raises a URLError (subclass of
IOError); for HTTP errors, raises an HTTPError, which can also be
treated as a valid response.

build_opener -- function that creates a new OpenerDirector instance.
will install the default handlers.  accepts one or more Handlers as
arguments, either instances or Handler classes that it will
instantiate.  if one of the argument is a subclass of the default
handler, the argument will be installed instead of the default.

install_opener -- installs a new opener as the default opener.

objects of interest:
OpenerDirector --

Request -- an object that encapsulates the state of a request.  the
state can be a simple as the URL.  it can also include extra HTTP
headers, e.g. a User-Agent.

BaseHandler --

exceptions:
URLError-- a subclass of IOError, individual protocols have their own
specific subclass

HTTPError-- also a valid HTTP response, so you can treat an HTTP error
as an exceptional event or valid response

internals:
BaseHandler and parent
_call_chain conventions

Example usage:

import urllib2

# set up authentication info
authinfo = urllib2.HTTPBasicAuthHandler()
authinfo.add_password('realm', 'host', 'username', 'password')

proxy_support = urllib2.ProxyHandler({"http" : "http://ahad-haam:3128"})

# build a new opener that adds authentication and caching FTP handlers
opener = urllib2.build_opener(proxy_support, authinfo, urllib2.CacheFTPHandler)

# install it
urllib2.install_opener(opener)

f = urllib2.urlopen('http://www.python.org/')


N(   s   StringIO(   s   unwraps   unquotes	   splittypes	   splithosts
   addinfourls	   splitports   splitgophertypes
   splitquerys	   splitattrs
   ftpwrappers	   noheaders(   s
   getproxies(   s	   localhosts   url2pathnames   2.0a1c    s=   † ‡ ˆ t  t j o ‰ t ƒ  a  n Š t  i |  | ƒ Sd  S(   N(   s   _openers   Nones   build_openers   opens   urls   data(   s   urls   data(    (    s$   /mit/python/lib/python2.2/urllib2.pys   urlopen† s   c    s   Œ � Ž |  a d  S(   N(   s   openers   _opener(   s   opener(    (    s$   /mit/python/lib/python2.2/urllib2.pys   install_openerŒ s   s   URLErrorc      s   ” — d „  Z  š d „  Z RS(   Nc    s   — ˜ | |  _  d  S(   N(   s   reasons   self(   s   selfs   reason(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__— s   c    s   š › d |  i Sd  S(   Ns   <urlopen error %s>(   s   selfs   reason(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __str__š s   (   s   __init__s   __str__(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   URLError” s   s	   HTTPErrorc      s>   � d  Z  ž Ÿ e i Z ¡ d „  Z ª d „  Z ­ d „  Z RS(   sB   Raised when HTTP error occurs, but also acts like non-error returnc    sY   ¡ ¢ |  i | | | ƒ £ | |  _ ¤ | |  _ ¥ | |  _ ¦ | |  _ ¨ | |  _ d  S(   N(   s   selfs   _HTTPError__super_inits   fps   hdrss   urls   codes   msgs   filename(   s   selfs   urls   codes   msgs   hdrss   fp(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__¡ s   c    s   ª « d |  i |  i f Sd  S(   Ns   HTTP Error %s: %s(   s   selfs   codes   msg(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __str__ª s   c    s(   ­ ° |  i o ± |  i i ƒ  n d  S(   N(   s   selfs   fps   close(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __del__­ s   (   s   __doc__s
   addinfourls   __init__s   _HTTPError__super_inits   __str__s   __del__(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys	   HTTPError� s
   		s   GopherErrorc      s   ³ ´ RS(   N(    (    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   GopherError³ s   s   Requestc      s�   · ¹ e  h  d „ Z Ä d „  Z Ð d „  Z Ó d „  Z Ö d „  Z Ù d „  Z Ü d „  Z ã d „  Z ê d	 „  Z	 í d
 „  Z
 ñ d „  Z RS(   Nc    sh   ¹ » t  | ƒ |  _ ¼ t |  _ ¾ t |  _ ¿ t |  _ À | |  _ Á h  |  _	 Â |  i	 i
 | ƒ d  S(   N(   s   unwraps   urls   selfs   _Request__originals   Nones   types   hosts   ports   datas   headerss   update(   s   selfs   urls   datas   headers(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__¹ s   c    sz   Ä É | d  d j oS Ê | d } Ë t t d | ƒ o+ Ì t |  d | ƒ ƒ  Í t |  | ƒ Sn n Î t | ‚ d  S(   Ni   s   _Request__r_s   get_(   s   attrs   names   hasattrs   Requests   getattrs   selfs   AttributeError(   s   selfs   attrs   name(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __getattr__Ä s   c    s   Ð Ñ | |  _  d  S(   N(   s   datas   self(   s   selfs   data(    (    s$   /mit/python/lib/python2.2/urllib2.pys   add_dataÐ s   c    s   Ó Ô |  i t j	 Sd  S(   N(   s   selfs   datas   None(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   has_dataÓ s   c    s   Ö × |  i Sd  S(   N(   s   selfs   data(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_dataÖ s   c    s   Ù Ú |  i Sd  S(   N(   s   selfs   _Request__original(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_full_urlÙ s   c    sp   Ü Ý |  i t j oL Þ t |  i ƒ \ |  _ |  _ ß |  i t j o à t d |  i ‚ n n á |  i Sd  S(   Ns   unknown url type: %s(   s   selfs   types   Nones	   splittypes   _Request__originals   _Request__r_types
   ValueError(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_typeÜ s
   c    sl   ã ä |  i t j oH å t |  i ƒ \ |  _ |  _ æ |  i o ç t |  i ƒ |  _ n n è |  i Sd  S(   N(   s   selfs   hosts   Nones	   splithosts   _Request__r_types   _Request__r_hosts   unquote(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_hostã s
   c    s   ê ë |  i Sd  S(   N(   s   selfs   _Request__r_host(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_selectorê s   c    s1   í î | | f \ |  _  |  _ ï |  i |  _ d  S(   N(   s   hosts   types   selfs   _Request__originals   _Request__r_host(   s   selfs   hosts   type(    (    s$   /mit/python/lib/python2.2/urllib2.pys	   set_proxyí s   c    s   ñ ó | |  i | <d  S(   N(   s   vals   selfs   headerss   key(   s   selfs   keys   val(    (    s$   /mit/python/lib/python2.2/urllib2.pys
   add_headerñ s   (   s   Nones   __init__s   __getattr__s   add_datas   has_datas   get_datas   get_full_urls   get_types   get_hosts   get_selectors	   set_proxys
   add_header(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   Request· s   s   OpenerDirectorc      s\   õ ö d „  Z  þ d „  Z d „  Z !d „  Z &d „  Z 1e d „ Z Id „  Z RS(   Nc    sM   ö ÷ d t  } ø d | f g |  _ ú g  |  _ û h  |  _ ü h  |  _ d  S(   Ns   Python-urllib/%ss
   User-agent(   s   __version__s   server_versions   selfs
   addheaderss   handlerss   handle_opens   handle_error(   s   selfs   server_version(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__ö s
   c 
   sø  þ ÿ d }  x±t | ƒ D ] }	 |	 d d j od |	 d  } |  i i | ƒ o |  i | i | ƒ n | g |  i | <d } q n 	|	 i	 d ƒ } 
|	 | d i	 d ƒ | d } | d j o |	 | d | !d j oÆ |	 |  } |	 | d } y t | ƒ } Wn t j
 o
 n X|  i i | h  ƒ } | i | ƒ o | | i | ƒ n | g | | <| |  i | <d } q n q W| o' |  i i | ƒ | i |  ƒ n d  S(   Ni    iûÿÿÿs   _openi   s   _iÿÿÿÿs   error(   s   addeds   dirs   handlers   meths   protocols   selfs   handle_opens   has_keys   appends   finds   is   js   protos   kinds   ints
   ValueErrors   handle_errors   gets   dicts   handlerss
   add_parent(
   s   selfs   handlers   kinds   addeds   protocols   protos   js   is   dicts   meth(    (    s$   /mit/python/lib/python2.2/urllib2.pys   add_handlerþ s:   	 		
"(	
c    s   |  i ƒ  d  S(   N(   s   selfs   close(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __del__s   c    s:   !"x! |  i D"] } #| i ƒ  q W$g  |  _ d  S(   N(   s   selfs   handlerss   handlers   close(   s   selfs   handler(    (    s$   /mit/python/lib/python2.2/urllib2.pys   close!s    	c 	   so   &)| i | f  ƒ } *xM | D*]B } +t | | ƒ } -| | Œ  } .| t
 j	 o /| Sn q" Wd  S(   N(   s   chains   gets   kinds   handlerss   handlers   getattrs	   meth_names   funcs   argss   results   None(	   s   selfs   chains   kinds	   meth_names   argss   handlerss   handlers   results   func(    (    s$   /mit/python/lib/python2.2/urllib2.pys   _call_chain&s   
 	c    s(  13t  | t i t i f ƒ o 4t | | ƒ } n. 6| } 7| t j	 o 8| i	 | ƒ n 9t
 o t  | t ƒ p t ‚ ;|  i |  i d <d | ƒ } =| o >| Sn @| i ƒ  } A|  i |  i | | d B| ƒ } C| o D| Sn F|  i |  i d Gd | ƒ Sd  S(   Ns   defaults   default_opens   _opens   unknowns   unknown_open(   s
   isinstances   fullurls   typess
   StringTypes   UnicodeTypes   Requests   datas   reqs   Nones   add_datas	   __debug__s   AssertionErrors   selfs   _call_chains   handle_opens   results   get_types   type_(   s   selfs   fullurls   datas   type_s   results   req(    (    s$   /mit/python/lib/python2.2/urllib2.pys   open1s"   	!

c    sð   IJ| d d g j o@ L|  i d } M| d } Nd | } Od } P| } n# R|  i } S| d } Td } U| | | f | } V|  i | Œ  } W| o X| Sn Z| o* [| d d	 f | } \|  i | Œ  Sn d  S(
   Ns   https   httpsi   s   http_error_%di   s   _errori    s   defaults   http_error_default(
   s   protos   selfs   handle_errors   dicts   argss	   meth_names   http_errs	   orig_argss   _call_chains   result(   s   selfs   protos   argss	   orig_argss   http_errs   results   dicts	   meth_name(    (    s$   /mit/python/lib/python2.2/urllib2.pys   errorIs    		

(   s   __init__s   add_handlers   __del__s   closes   _call_chains   Nones   opens   error(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   OpenerDirectorõ s    c     s™  clnt  ƒ  } ot t t t t t t g } rt
 t d ƒ o s| i t ƒ n tg  } ux� | Du]‚ } vxv |  Dv]k } wt i | ƒ o+ xt | | ƒ o y| i | ƒ n n( zt | | ƒ o {| i | ƒ n q} Wqj W|x! | D|] } }| i | ƒ qý Wx$ | D] } €| i | ƒ  ƒ q$W‚xD |  D‚]9 } ƒt i | ƒ o „| ƒ  } n …| i | ƒ qNW†| Sd S(   sn  Create an opener object from a list of handlers.

    The opener will use several default handlers, including support
    for HTTP and FTP.  If there is a ProxyHandler, it must be at the
    front of the list of handlers.  (Yuck.)

    If any of the handlers passed as arguments are subclasses of the
    default handlers, the default handlers will not be used.
    s   HTTPSN(   s   OpenerDirectors   openers   ProxyHandlers   UnknownHandlers   HTTPHandlers   HTTPDefaultErrorHandlers   HTTPRedirectHandlers
   FTPHandlers   FileHandlers   default_classess   hasattrs   httplibs   appends   HTTPSHandlers   skips   klasss   handlerss   checks   inspects   isclasss
   issubclasss
   isinstances   removes   add_handlers   h(   s   handlerss   hs   openers   skips   default_classess   klasss   check(    (    s$   /mit/python/lib/python2.2/urllib2.pys   build_openercs6   		
 	
 	
 	
 	
 	s   BaseHandlerc      s   ˆ‰d „  Z  ‹d „  Z RS(   Nc    s   ‰Š| |  _  d  S(   N(   s   parents   self(   s   selfs   parent(    (    s$   /mit/python/lib/python2.2/urllib2.pys
   add_parent‰s   c    s   ‹Œt  |  _ d  S(   N(   s   Nones   selfs   parent(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   close‹s   (   s
   add_parents   close(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   BaseHandlerˆs   s   HTTPDefaultErrorHandlerc      s   Ž�d „  Z  RS(   Nc    s(   ��t  | i ƒ  | | | | ƒ ‚ d  S(   N(   s	   HTTPErrors   reqs   get_full_urls   codes   msgs   hdrss   fp(   s   selfs   reqs   fps   codes   msgs   hdrs(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_default�s   (   s   http_error_default(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPDefaultErrorHandlerŽs   s   HTTPRedirectHandlerc      s#   ’—d „  Z  ´e  Z ¶d Z RS(   Nc    sZ  —˜| i d ƒ o ™| d } n, š| i d ƒ o ›| d } n �d  Sžt i | i ƒ  | ƒ } £t | | i ƒ  ƒ } ¤h  | _
 ¥t | d ƒ ou ¦t | i
 ƒ d j p | i
 i | ƒ o/ ¨t | i ƒ  | ©|  i | | | ƒ ‚ n ª| i
 i | i
 ƒ n «| | i
 | <¯| i ƒ  °| i ƒ  ²|  i i | ƒ Sd  S(   Ns   locations   uris   error_302_dicti
   (   s   headerss   has_keys   newurls   urlparses   urljoins   reqs   get_full_urls   Requests   get_datas   news   error_302_dicts   hasattrs   lens	   HTTPErrors   codes   selfs   inf_msgs   msgs   fps   updates   reads   closes   parents   open(   s   selfs   reqs   fps   codes   msgs   headerss   newurls   new(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_302—s"   ,sn   The HTTP server returned a redirect error that wouldlead to an infinite loop.
The last 302 error message was:
(   s   http_error_302s   http_error_301s   inf_msg(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPRedirectHandler’s   	s   ProxyHandlerc      s    º»e  d „ Z Åd „  Z RS(   Nc    s£   »¼| t j o ½t ƒ  } n ¾t o t | d ƒ p
 t d ‚ ¿| |  _  ÀxF | i ƒ  DÀ]5 \ } } Át
 |  d | Â| | |  i d „ ƒ qc Wd  S(   Ns   has_keys   proxies must be a mappings   %s_openc    s   Â| |  | | ƒ S(   N(   s   meths   rs   proxys   type(   s   rs   proxys   types   meth(    (    s$   /mit/python/lib/python2.2/urllib2.pys   <lambda>Âs    (   s   proxiess   Nones
   getproxiess	   __debug__s   hasattrs   AssertionErrors   selfs   itemss   types   urls   setattrs
   proxy_open(   s   selfs   proxiess   urls   type(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__»s   $ c 	   sô   ÅÆ| i ƒ  } Çt | ƒ \ } } Èt | ƒ \ } } Éd | j oT Ê| i
 d d ƒ \ } } Ët i t | ƒ ƒ i ƒ  } Ì| i d d | ƒ n Ít | ƒ } Î| i | | ƒ Ï| | j o Ót Sn ×|  i i | ƒ Sd  S(   Ns   @i   s   Proxy-Authorizations   Basic (   s   reqs   get_types	   orig_types	   splittypes   proxys   types   r_types	   splithosts   hosts   XXXs   splits	   user_passs   base64s   encodestrings   unquotes   strips
   add_headers	   set_proxys   Nones   selfs   parents   open(	   s   selfs   reqs   proxys   types	   orig_types   XXXs   hosts	   user_passs   r_type(    (    s$   /mit/python/lib/python2.2/urllib2.pys
   proxy_openÅs   (   s   Nones   __init__s
   proxy_open(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   ProxyHandlerºs   
s   CustomProxyc      s/   ÛÝe  e  d „ Z âd „  Z æd „  Z RS(   Nc    s+   ÝÞ| |  _  ß| |  _ à| |  _ d  S(   N(   s   protos   selfs   funcs
   proxy_addrs   addr(   s   selfs   protos   funcs
   proxy_addr(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__Ýs   c    s/   âã|  i o |  i | ƒ o äd Sn d  S(   Ni   (   s   selfs   funcs   req(   s   selfs   req(    (    s$   /mit/python/lib/python2.2/urllib2.pys   handleâs   c    s   æç|  i Sd  S(   N(   s   selfs   addr(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys	   get_proxyæs   (   s   Nones   __init__s   handles	   get_proxy(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   CustomProxyÛs   s   CustomProxyHandlerc      s5   éêd „  Z  íd „  Z ùd „  Z üd „  Z RS(   Nc    s   êëh  |  _ d  S(   N(   s   selfs   proxies(   s   selfs   proxies(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__ês   c    s«   íî| i ƒ  } ïy ð|  i | } Wn ñt j
 o òt Sn XóxQ | Dó]F } ô| i | ƒ o- õ| i	 | i
 ƒ  ƒ ö|  i i | ƒ Sn qS W÷t Sd  S(   N(   s   reqs   get_types   protos   selfs   proxiess   KeyErrors   Nones   ps   handles	   set_proxys	   get_proxys   parents   open(   s   selfs   reqs   ps   proxiess   proto(    (    s$   /mit/python/lib/python2.2/urllib2.pys
   proxy_openís   
 	c    s   ùú|  i i | ƒ Sd  S(   N(   s   selfs   parents   opens   req(   s   selfs   ps   req(    (    s$   /mit/python/lib/python2.2/urllib2.pys   do_proxyùs   c    sT   üý|  i i | i ƒ o þ|  i | i i | ƒ n  | g |  i | i <d  S(   N(   s   selfs   proxiess   has_keys   cpos   protos   append(   s   selfs   cpo(    (    s$   /mit/python/lib/python2.2/urllib2.pys	   add_proxyüs   (   s   __init__s
   proxy_opens   do_proxys	   add_proxy(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   CustomProxyHandlerés   s   HTTPPasswordMgrc      sA   d „  Z  d „  Z d „  Z d „  Z  d „  Z RS(   Nc    s   h  |  _ d  S(   N(   s   selfs   passwd(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__s   c    s–   t  | t i t i f ƒ o 	| g } n 
t t |  i | ƒ ƒ } |  i	 i
 | ƒ o h  |  i	 | <n | | f |  i	 | | <d  S(   N(   s
   isinstances   uris   typess
   StringTypes   UnicodeTypes   tuples   maps   selfs
   reduce_uris   passwds   has_keys   realms   user(   s   selfs   realms   uris   users   passwd(    (    s$   /mit/python/lib/python2.2/urllib2.pys   add_passwords   c    s™   |  i i | h  ƒ } |  i | ƒ } xU | i ƒ  D]D \ } } x2 | D]' } |  i | | ƒ o | Sn qV Wq= Wt t f Sd  S(   N(   s   selfs   passwds   gets   realms   domainss
   reduce_uris   authuris   itemss   uriss   authinfos   uris	   is_suburis   None(   s   selfs   realms   authuris   authinfos   domainss   uriss   uri(    (    s$   /mit/python/lib/python2.2/urllib2.pys   find_user_passwords    
 	c    s[   t  i  | ƒ } | d o  | d | d p d f Sn | d d f Sd S(   s9   Accept netloc or URI and extract only the netloc and pathi   i   s   /N(   s   urlparses   uris   parts(   s   selfs   uris   parts(    (    s$   /mit/python/lib/python2.2/urllib2.pys
   reduce_uris
    c    sš    $%| | j o &d Sn '| d | d j o (d Sn )t i | d | d f ƒ } *t | ƒ t | d ƒ j o +d Sn ,d Sd S(   sc   Check if test is below base in a URI tree

        Both args must be URIs in reduced form.
        i   i    N(   s   bases   tests	   posixpaths   commonprefixs   commons   len(   s   selfs   bases   tests   common(    (    s$   /mit/python/lib/python2.2/urllib2.pys	   is_suburi s     (   s   __init__s   add_passwords   find_user_passwords
   reduce_uris	   is_suburi(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPPasswordMgrs
   		s   HTTPPasswordMgrWithDefaultRealmc      s   /1d „  Z  RS(   Nc    s\   12t  i |  | | ƒ \ } } 3| t j	 o 4| | f Sn 5t  i |  t | ƒ Sd  S(   N(   s   HTTPPasswordMgrs   find_user_passwords   selfs   realms   authuris   users   passwords   None(   s   selfs   realms   authuris   users   password(    (    s$   /mit/python/lib/python2.2/urllib2.pys   find_user_password1s   (   s   find_user_password(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPPasswordMgrWithDefaultRealm/s   s   AbstractBasicAuthHandlerc      s>   8:e  i d ƒ Z @e d „ Z Fd „  Z Pd „  Z RS(   Ns!   [ 	]*([^ 	]+)[ 	]+realm="([^"]*)"c    sE   @A| t j o Bt ƒ  } n C| |  _ D|  i i |  _ d  S(   N(   s   password_mgrs   Nones   HTTPPasswordMgrs   selfs   passwds   add_password(   s   selfs   password_mgr(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__@s   c    s’   FH| i | t ƒ } I| ol Jt i i | ƒ } K| oI L| i ƒ  \ } } M| i ƒ  d j o N|  i | | | ƒ Sn n n d  S(   Ns   basic(   s   headerss   gets   authreqs   Nones   AbstractBasicAuthHandlers   rxs   matchs   mos   groupss   schemes   realms   lowers   selfs   retry_http_basic_auths   hosts   req(   s   selfs   authreqs   hosts   reqs   headerss   schemes   mos   realm(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_auth_reqedFs   

c    s¿   PQ|  i i | | ƒ \ } } R| o‰ Sd | | f } Td t i	 | ƒ i
 ƒ  } U| i i |  i t ƒ | j o Vt Sn W| i |  i | ƒ X|  i i | ƒ Sn Zt Sd  S(   Ns   %s:%ss   Basic %s(   s   selfs   passwds   find_user_passwords   realms   hosts   users   pws   raws   base64s   encodestrings   strips   auths   reqs   headerss   gets   auth_headers   Nones
   add_headers   parents   open(   s   selfs   hosts   reqs   realms   raws   pws   auths   user(    (    s$   /mit/python/lib/python2.2/urllib2.pys   retry_http_basic_authPs   
"(   s   res   compiles   rxs   Nones   __init__s   http_error_auth_reqeds   retry_http_basic_auth(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   AbstractBasicAuthHandler8s   
s   HTTPBasicAuthHandlerc      s   \^d Z  `d „  Z RS(   Ns   Authorizationc    s?   `at  i  | i ƒ  ƒ d } b|  i d c| | | ƒ Sd  S(   Ni   s   www-authenticate(   s   urlparses   reqs   get_full_urls   hosts   selfs   http_error_auth_reqeds   headers(   s   selfs   reqs   fps   codes   msgs   headerss   host(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_401`s   (   s   auth_headers   http_error_401(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPBasicAuthHandler\s   	s   ProxyBasicAuthHandlerc      s   fhd Z  jd „  Z RS(   Ns   Proxy-Authorizationc    s2   jk| i ƒ  } l|  i d m| | | ƒ Sd  S(   Ns   proxy-authenticate(   s   reqs   get_hosts   hosts   selfs   http_error_auth_reqeds   headers(   s   selfs   reqs   fps   codes   msgs   headerss   host(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_407js   (   s   auth_headers   http_error_407(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   ProxyBasicAuthHandlerfs   	s   AbstractDigestAuthHandlerc      sP   pre  d „ Z xd „  Z d „  Z ‹d „  Z ·d „  Z Ád „  Z RS(   Nc    sE   rs| t j o tt ƒ  } n u| |  _  v|  i  i |  _ d  S(   N(   s   passwds   Nones   HTTPPasswordMgrs   selfs   add_password(   s   selfs   passwd(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__rs   c    sg   xy| i |  i t ƒ } z| o> {| i ƒ  d } || d j o }|  i | | ƒ Sn n d  S(   Ni    s   Digest(
   s   headerss   gets   selfs   auth_headers   Nones   authreqs   splits   kinds   retry_http_digest_auths   req(   s   selfs   authreqs   hosts   reqs   headerss   kind(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_auth_reqedxs
   
c    sÆ   €| i d d ƒ \ } } �t t | ƒ ƒ } ‚|  i | | ƒ } ƒ| op „d | } …| i i |  i t ƒ | j o †t Sn ‡| i |  i | ƒ ˆ|  i i | ƒ } ‰| Sn d  S(   Ns    i   s	   Digest %s(   s   auths   splits   tokens	   challenges   parse_keqv_lists   parse_http_lists   chals   selfs   get_authorizations   reqs   auth_vals   headerss   gets   auth_headers   Nones
   add_headers   parents   opens   resp(   s   selfs   reqs   auths	   challenges   resps   tokens   chals   auth_val(    (    s$   /mit/python/lib/python2.2/urllib2.pys   retry_http_digest_auths   
"c    s  ‹ŒyH �| d } Ž| d } �| i d d ƒ } ’| i d t ƒ }	 Wn “t j
 o ”t Sn X–|  i	 | ƒ \ } } —| t j o ˜t Sn š|  i i | ›| i ƒ  ƒ \ } } œ| t j o �t Sn  | i ƒ  o ¡|  i | i ƒ  | ƒ } n
 £t } ¥d | | | f }
 ¦d | i ƒ  o d p d	 | i ƒ  f } ©| | |
 ƒ d | | | ƒ f ƒ } ¬d
 | | | | i ƒ  | f } ¯|	 o °| d |	 } n ±| o ²| d | } n ³| d j o ´| d | } n µ| Sd  S(   Ns   realms   nonces	   algorithms   MD5s   opaques   %s:%s:%ss   %s:%ss   POSTs   GETs>   username="%s", realm="%s", nonce="%s", uri="%s", response="%s"s   , opaque="%s"s   , digest="%s"s   , algorithm="%s"(   s   chals   realms   nonces   gets	   algorithms   Nones   opaques   KeyErrors   selfs   get_algorithm_implss   Hs   KDs   passwds   find_user_passwords   reqs   get_full_urls   users   pws   has_datas   get_entity_digests   get_datas   entdigs   A1s   get_selectors   A2s   respdigs   base(   s   selfs   reqs   chals   nonces   realms   pws	   algorithms   KDs   Hs   opaques   A1s   A2s   users   bases   respdigs   entdig(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_authorization‹s8   	-("

c    si   ·¹| d j o ºt d „ } n$ »| d j o ¼t d „ } n ¾| d „ } ¿| | f Sd  S(   Ns   MD5c    s   º| t i |  ƒ i ƒ  ƒ S(   N(   s   es   md5s   news   xs   digest(   s   xs   e(    (    s$   /mit/python/lib/python2.2/urllib2.pys   <lambda>ºs    s   SHAc    s   ¼| t i |  ƒ i ƒ  ƒ S(   N(   s   es   shas   news   xs   digest(   s   xs   e(    (    s$   /mit/python/lib/python2.2/urllib2.pys   <lambda>¼s    c    s   ¾| d |  | f ƒ S(   Ns   %s:%s(   s   Hs   ss   d(   s   ss   ds   H(    (    s$   /mit/python/lib/python2.2/urllib2.pys   <lambda>¾s    (   s	   algorithms   encode_digests   Hs   KD(   s   selfs	   algorithms   Hs   KD(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_algorithm_impls·s   c    s   ÁÃt  Sd  S(   N(   s   None(   s   selfs   datas   chal(    (    s$   /mit/python/lib/python2.2/urllib2.pys   get_entity_digestÁs   (   s   Nones   __init__s   http_error_auth_reqeds   retry_http_digest_auths   get_authorizations   get_algorithm_implss   get_entity_digest(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   AbstractDigestAuthHandlerps   ,
s   HTTPDigestAuthHandlerc      s#   Æd  Z  ËÍd Z Ïd „  Z RS(   s¨   An authentication protocol defined by RFC 2069

    Digest authentication improves on basic authentication because it
    does not transmit passwords in the clear.
    s   Authorizationc    s<   ÏÐt  i  | i ƒ  ƒ d } Ñ|  i d | | | ƒ d  S(   Ni   s   www-authenticate(   s   urlparses   reqs   get_full_urls   hosts   selfs   http_error_auth_reqeds   headers(   s   selfs   reqs   fps   codes   msgs   headerss   host(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_401Ïs   (   s   __doc__s   headers   http_error_401(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPDigestAuthHandlerÆs   		s   ProxyDigestAuthHandlerc      s   ÔÖd Z  Ød „  Z RS(   Ns   Proxy-Authorizationc    s/   ØÙ| i ƒ  } Ú|  i d | | | ƒ d  S(   Ns   proxy-authenticate(   s   reqs   get_hosts   hosts   selfs   http_error_auth_reqeds   headers(   s   selfs   reqs   fps   codes   msgs   headerss   host(    (    s$   /mit/python/lib/python2.2/urllib2.pys   http_error_407Øs   (   s   headers   http_error_407(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   ProxyDigestAuthHandlerÔs   	c    s•   ÝÞg  } ßxo |  Dß]d } àt | ƒ d ?d @} á| i t | ƒ d ƒ ât | ƒ d @} ã| i t | ƒ d ƒ q Wäd i | ƒ Sd  S(   Ni   i   iÿÿÿÿs    (   s   hexreps   digests   cs   ords   ns   appends   hexs   join(   s   digests   cs   hexreps   n(    (    s$   /mit/python/lib/python2.2/urllib2.pys   encode_digestÝs   	
 	s   AbstractHTTPHandlerc      s   çéd „  Z  RS(   Nc    sU  éê| i ƒ  } ë| o ìt d ƒ ‚ n îyÑ ï| | ƒ } ð| i ƒ  o• ñ| i ƒ  } ò| i	 d | i
 ƒ  ƒ ó| i i d ƒ o ô| i d õd ƒ n ö| i i d ƒ o! ÷| i d d t | ƒ ƒ n n ù| i	 d | i
 ƒ  ƒ Wn* út i j
 o } ût | ƒ ‚ n Xý| i d | ƒ þx' |  i i Dþ] } ÿ| i | Œ  qTW x3 | i i ƒ  D ] \ } } | i | | ƒ q„W| i ƒ  | i ƒ  o | i | ƒ n | i ƒ  \ }	 } }
 | i ƒ  } |	 d	 j o 	t! | |
 | i" ƒ  ƒ Sn# |  i i d
 | | |	 | |
 ƒ Sd  S(   Ns   no host givens   POSTs   Content-types!   application/x-www-form-urlencodeds   Content-lengths   %ds   GETs   HostiÈ   s   http(#   s   reqs   get_hosts   hosts   URLErrors
   http_classs   hs   has_datas   get_datas   datas
   putrequests   get_selectors   headerss   has_keys	   putheaders   lens   sockets   errors   errs   selfs   parents
   addheaderss   argss   itemss   ks   vs
   endheaderss   sends   getreplys   codes   msgs   hdrss   getfiles   fps
   addinfourls   get_full_url(   s   selfs
   http_classs   reqs   fps   errs   hs   argss   vs   hosts   codes   hdrss   msgs   datas   k(    (    s$   /mit/python/lib/python2.2/urllib2.pys   do_openés>   % 	 (   s   do_open(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   AbstractHTTPHandlerçs   s   HTTPHandlerc      s   d „  Z  RS(   Nc    s   |  i t i | ƒ Sd  S(   N(   s   selfs   do_opens   httplibs   HTTPs   req(   s   selfs   req(    (    s$   /mit/python/lib/python2.2/urllib2.pys	   http_opens   (   s	   http_open(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPHandlers   s   HTTPSs   HTTPSHandlerc      s   d „  Z  RS(   Nc    s   |  i t i | ƒ Sd  S(   N(   s   selfs   do_opens   httplibs   HTTPSs   req(   s   selfs   req(    (    s$   /mit/python/lib/python2.2/urllib2.pys
   https_opens   (   s
   https_open(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   HTTPSHandlers   s   UnknownHandlerc      s   d „  Z  RS(   Nc    s)   | i ƒ  } t d | ƒ ‚ d  S(   Ns   unknown url type: %s(   s   reqs   get_types   types   URLError(   s   selfs   reqs   type(    (    s$   /mit/python/lib/python2.2/urllib2.pys   unknown_opens   (   s   unknown_open(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   UnknownHandlers   c    s’    !"h  } #xr |  D#]g } $| i d d ƒ \ } } %| d d j o | d d j o &| d d !} n '| | | <q W(| Sd S(   s>   Parse list of key=value strings where keys are not duplicated.s   =i   i    s   "iÿÿÿÿN(   s   parseds   ls   elts   splits   ks   v(   s   ls   ks   vs   elts   parsed(    (    s$   /mit/python/lib/python2.2/urllib2.pys   parse_keqv_list s   	
 	%c 	   sø  *03g  } 4t |  ƒ } 5d } 6d } 7d } 8x¢8| | j  o‘9|  | } :| i d ƒ } ;| i d ƒ } <| d j o =| i |  | ƒ >Pn ?| d j oP @| o At d ‚ n3 C| i |  | | | !ƒ D| | d } Eq? n F| oc G| | j  oB H| i |  | | | !ƒ I| | d } J| } Kd } n M| | } nd O| | j  o9 P| i |  | | | !ƒ Q| | d } R| } n Td } U| | d } q? WVt d „  | ƒ Sd S(	   sÐ   Parse lists as described by RFC 2068 Section 2.

    In particular, parse comman-separated lists where the elements of
    the list may include quoted-strings.  A quoted-string could
    contain a comma.
    i    s   ,s   "iÿÿÿÿs   unbalanced quotesi   c    s   V|  i ƒ  S(   N(   s   xs   strip(   s   x(    (    s$   /mit/python/lib/python2.2/urllib2.pys   <lambda>Vs    N(   s   lists   lens   ss   ends   is   inquotes   starts   curs   finds   cs   qs   appends
   ValueErrors   map(	   s   ss   cs   ends   curs   is   lists   qs   starts   inquote(    (    s$   /mit/python/lib/python2.2/urllib2.pys   parse_http_list*sD   				 


		s   FileHandlerc      s2   XZd „  Z  ce Z dd „  Z kd „  Z RS(   Nc    sq   Z[| i ƒ  } \| d  d j o | d d !d j o# ]d | _ ^|  i i | ƒ Sn `|  i | ƒ Sd  S(   Ni   s   //i   s   /s   ftp(   s   reqs   get_selectors   urls   types   selfs   parents   opens   open_local_file(   s   selfs   reqs   url(    (    s$   /mit/python/lib/python2.2/urllib2.pys	   file_openZs
   (c    sR   det  i t j o. ft i d ƒ t i t i ƒ  ƒ f t  _ n ht  i Sd  S(   Ns	   localhost(   s   FileHandlers   namess   Nones   sockets   gethostbynames   gethostname(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys	   get_namesds   .c    sK  kl| i ƒ  } m| i ƒ  } nt | ƒ }
 ot i |
 ƒ } p| t i
 }	 qt i | t i ƒ } rt i | ƒ d } st i |
 ƒ } tt i t d | p d |	 | f ƒ ƒ } w| o xt | ƒ \ } } n y| p! | o t i | ƒ |  i ƒ  j o' {t t |
 d ƒ || d | ƒ Sn }t d ƒ ‚ d  S(   Ni    s6   Content-Type: %s
Content-Length: %d
Last-modified: %s
s
   text/plains   rbs   file:s   file not on local host(    s   reqs   get_hosts   hosts   get_selectors   files   url2pathnames	   localfiles   oss   stats   statss   ST_SIZEs   sizes   rfc822s
   formatdates   ST_MTIMEs   modifieds	   mimetypess
   guess_types   mtypes	   mimetoolss   Messages   StringIOs   headerss	   splitports   ports   sockets   gethostbynames   selfs	   get_namess
   addinfourls   opens   URLError(   s   selfs   reqs   mtypes   hosts   files   ports   statss   modifieds   headerss   sizes	   localfile(    (    s$   /mit/python/lib/python2.2/urllib2.pys   open_local_fileks   ,
/(   s	   file_opens   Nones   namess	   get_namess   open_local_file(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   FileHandlerXs   		s
   FTPHandlerc      s   €d „  Z  ¨d „  Z RS(   Nc    s÷  €�| i ƒ  } ‚| o ƒt d d f ‚ n …y †t i | ƒ } Wn* ‡t i j
 o } ˆt | ƒ ‚ n X‰t	 | ƒ \ } } Š| t j o ‹t i } n Œt | i ƒ  ƒ \ }
 } �t |
 ƒ }
 Ž|
 i d ƒ } �| d  | d f \ } }	 �| o	 | d o ‘| d } n ’d } } “yx”|  i | | | | | ƒ } •|	 o d p d	 } –xn | D–]c } —t | ƒ \ } } ˜| i ƒ  d
 j o | d d d d d d	 f j o š| i ƒ  } n q€W›| i  |	 | ƒ \ } } œd } �t$ i% | i& ƒ  ƒ d } ž| o Ÿ| d | 7} n  | t j	 o
 | d j o ¡| d | 7} n ¢t( | ƒ } £t* i+ | ƒ } ¤t, | | | i& ƒ  ƒ SWn: ¥t i- j
 o( } ¦t d | f t. i/ ƒ  d ‚ n Xd  S(   Ns	   ftp errors   no host givens   /iÿÿÿÿi    i   s    s   Is   Ds   types   as   As   is   ds   Content-Type: %s
s   Content-Length: %d
i   (0   s   reqs   get_hosts   hosts   IOErrors   sockets   gethostbynames   errors   msgs   URLErrors	   splitports   ports   Nones   ftplibs   FTP_PORTs	   splitattrs   get_selectors   paths   attrss   unquotes   splits   dirss   files   users   passwds   selfs   connect_ftps   fws   types   attrs   values   lowers   uppers   retrfiles   fps   retrlens   headerss	   mimetypess
   guess_types   get_full_urls   mtypes   StringIOs   sfs	   mimetoolss   Messages
   addinfourls
   all_errorss   syss   exc_info(   s   selfs   reqs   fws   passwds   mtypes   msgs   hosts   fps   attrss   files   paths   dirss   ports   attrs   values   retrlens   headerss   types   sfs   user(    (    s$   /mit/python/lib/python2.2/urllib2.pys   ftp_open€sJ   
 	5	
c    s)   ¨©t  | | | | | ƒ } «| Sd  S(   N(   s
   ftpwrappers   users   passwds   hosts   ports   dirss   fw(   s   selfs   users   passwds   hosts   ports   dirss   fw(    (    s$   /mit/python/lib/python2.2/urllib2.pys   connect_ftp¨s   (   s   ftp_opens   connect_ftp(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys
   FTPHandlers   (s   CacheFTPHandlerc      sA   ­°d „  Z  ·d „  Z ºd „  Z ½d „  Z Çd „  Z RS(   Nc    sC   °±h  |  _ ²h  |  _ ³d |  _ ´d |  _ µd |  _ d  S(   Ni    i<   i   (   s   selfs   caches   timeouts   soonests   delays	   max_conns(   s   self(    (    s$   /mit/python/lib/python2.2/urllib2.pys   __init__°s
   c    s   ·¸| |  _ d  S(   N(   s   ts   selfs   delay(   s   selfs   t(    (    s$   /mit/python/lib/python2.2/urllib2.pys
   setTimeout·s   c    s   º»| |  _ d  S(   N(   s   ms   selfs	   max_conns(   s   selfs   m(    (    s$   /mit/python/lib/python2.2/urllib2.pys   setMaxConnsºs   c    s­   ½¾| | | | f } ¿|  i i | ƒ o! Àt i ƒ  |  i	 |  i
 | <n@ Ât | | | | | ƒ |  i | <Ãt i ƒ  |  i	 |  i
 | <Ä|  i ƒ  Å|  i | Sd  S(   N(   s   users   passwds   hosts   ports   keys   selfs   caches   has_keys   times   delays   timeouts
   ftpwrappers   dirss   check_cache(   s   selfs   users   passwds   hosts   ports   dirss   key(    (    s$   /mit/python/lib/python2.2/urllib2.pys   connect_ftp½s   !"c    sF  ÇÉt  i  ƒ  } Ê|  i | j ol Ëxb |  i i ƒ  DË]N \ } } Ì| | j  o2 Í|  i | i	 ƒ  Î|  i | =Ï|  i | =n q8 Wn Ðt
 |  i i ƒ  ƒ |  _ Ót |  i ƒ |  i j oz ÔxU |  i i ƒ  DÔ]A \ } } Õ| |  i j o" Ö|  i | =×|  i | =ØPn qÛ WÙt
 |  i i ƒ  ƒ |  _ n d  S(   N(   s   times   ts   selfs   soonests   timeouts   itemss   ks   vs   caches   closes   mins   valuess   lens	   max_conns(   s   selfs   ts   ks   v(    (    s$   /mit/python/lib/python2.2/urllib2.pys   check_cacheÇs"     (   s   __init__s
   setTimeouts   setMaxConnss   connect_ftps   check_cache(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   CacheFTPHandler­s
   
s   GopherHandlerc      s   ÛÜd „  Z  RS(   Nc    sñ   ÜÝ| i ƒ  } Þ| o ßt d ƒ ‚ n àt | ƒ } á| i ƒ  } ât | ƒ \ } } ãt	 | ƒ \ } } ät | ƒ } å| o+ æt | ƒ } çt i | | | ƒ } n ét i | | ƒ } êt | t ƒ  | i ƒ  ƒ Sd  S(   Ns   no host given(   s   reqs   get_hosts   hosts   GopherErrors   unquotes   get_selectors   selectors   splitgophertypes   types
   splitquerys   querys	   gopherlibs
   send_querys   fps   send_selectors
   addinfourls	   noheaderss   get_full_url(   s   selfs   reqs   fps   types   selectors   hosts   query(    (    s$   /mit/python/lib/python2.2/urllib2.pys   gopher_openÜs   
(   s   gopher_open(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   GopherHandlerÛs   s   OpenerFactoryc      sn   íïe  e e e e e g Z òe g Z óg  Z	 ôg  Z
 öd „  Z ùd „  Z üd „  Z ÿd „  Z RS(   Nc    s   ö÷|  i | g |  _ d  S(   N(   s   selfs   proxy_handlerss   ph(   s   selfs   ph(    (    s$   /mit/python/lib/python2.2/urllib2.pys   add_proxy_handlerös   c    s   ùú|  i | g |  _ d  S(   N(   s   selfs   handlerss   h(   s   selfs   h(    (    s$   /mit/python/lib/python2.2/urllib2.pys   add_handlerùs   c    s
   üýd  S(   N(    (   s   selfs   h(    (    s$   /mit/python/lib/python2.2/urllib2.pys   replace_handlerüs   c    s`   ÿ t  ƒ  } xG |  i D]9 } t i | ƒ o | ƒ  } n | i | ƒ q Wd  S(   N(   s   OpenerDirectors   openers   selfs   proxy_handlerss   phs   inspects   isclasss   add_handler(   s   selfs   openers   ph(    (    s$   /mit/python/lib/python2.2/urllib2.pys   build_openerÿs    	(   s   UnknownHandlers   HTTPHandlers   HTTPDefaultErrorHandlers   HTTPRedirectHandlers
   FTPHandlers   FileHandlers   default_handlerss   ProxyHandlers   proxy_handlerss   handlerss   replacement_handlerss   add_proxy_handlers   add_handlers   replace_handlers   build_opener(    (    (    s$   /mit/python/lib/python2.2/urllib2.pys   OpenerFactoryís   		s   __main__s	   bitdiddles   bitdiddle.cnri.reston.va.uss   bitdiddle.concentric.nets	   localhosts3   gopher://gopher.lib.ncsu.edu/11/library/stacks/Alexs"   gopher://gopher.vt.edu:10010/10/33s   file:/etc/passwds   file://nonsensename/etc/passwds-   ftp://www.python.org/pub/python/misc/sousa.aus!   ftp://www.python.org/pub/tmp/blats   http://www.espn.com/s)   http://www.python.org/Spanish/Inquistion/s%   http://www.python.org/cgi-bin/faqw.pys:   query=pythonistas&querytype=simple&casefold=yes&req=searchs   http://www.python.org/s[   ftp://gatekeeper.research.compaq.com/pub/DEC/SRC/research-reports/00README-Legal-Rules-Regsi   s   IOError:s   socket.error:s   read %d bytesf0.10000000000000001(^   s   __doc__s   sockets   httplibs   inspects   res   base64s   typess   urlparses   md5s	   mimetypess	   mimetoolss   rfc822s   ftplibs   syss   times   oss   stats	   gopherlibs	   posixpaths	   cStringIOs   StringIOs   ImportErrors   shas   Nones   urllibs   unwraps   unquotes	   splittypes	   splithosts
   addinfourls	   splitports   splitgophertypes
   splitquerys	   splitattrs
   ftpwrappers	   noheaderss
   getproxiess	   localhosts   url2pathnames   __version__s   _openers   urlopens   install_openers   IOErrors   URLErrors	   HTTPErrors   GopherErrors   Requests   OpenerDirectors   build_openers   BaseHandlers   HTTPDefaultErrorHandlers   HTTPRedirectHandlers   ProxyHandlers   CustomProxys   CustomProxyHandlers   HTTPPasswordMgrs   HTTPPasswordMgrWithDefaultRealms   AbstractBasicAuthHandlers   HTTPBasicAuthHandlers   ProxyBasicAuthHandlers   AbstractDigestAuthHandlers   HTTPDigestAuthHandlers   ProxyDigestAuthHandlers   encode_digests   AbstractHTTPHandlers   HTTPHandlers   hasattrs   HTTPSHandlers   UnknownHandlers   parse_keqv_lists   parse_http_lists   FileHandlers
   FTPHandlers   CacheFTPHandlers   GopherHandlers   OpenerFactorys   __name__s   gethostnames   urlss   cfhs
   setTimeouts   urls
   isinstances	   TupleTypes   reqs   fs   errs   errors   reads   bufs   closes   lens   sleep(L   s	   mimetoolss   unquotes
   getproxiess   base64s   errs   cfhs	   splittypes   HTTPPasswordMgrs   BaseHandlers	   mimetypess	   splithosts   bufs   encode_digests   urls   AbstractBasicAuthHandlers
   addinfourls   HTTPDigestAuthHandlers   GopherErrors   HTTPHandlers   install_openers	   splitports	   posixpaths   ProxyBasicAuthHandlers   CustomProxys   unwraps	   noheaderss   FileHandlers   res   HTTPDefaultErrorHandlers   OpenerFactorys   HTTPSHandlers	   splitattrs   __version__s   GopherHandlers   md5s   URLErrors   ftplibs   stats   ProxyDigestAuthHandlers   urlss   fs   rfc822s   urlopens   AbstractDigestAuthHandlers   inspects   Requests   parse_http_lists   syss
   FTPHandlers   OpenerDirectors   HTTPBasicAuthHandlers	   HTTPErrors   splitgophertypes   HTTPRedirectHandlers   typess   url2pathnames
   ftpwrappers   httplibs   CacheFTPHandlers   HTTPPasswordMgrWithDefaultRealms   sockets
   splitquerys   StringIOs   UnknownHandlers   parse_keqv_lists   build_openers   urlparses   shas   ProxyHandlers   CustomProxyHandlers	   localhosts	   gopherlibs   times   AbstractHTTPHandlers   reqs   os(    (    s$   /mit/python/lib/python2.2/urllib2.pys   ?G sº   L			>n%(!-	$

V	
'
.'..	0!
 		