;ò
óŒü?c           @   sd  d  Z  d k Z d k Z d k Z d k Z d k Z d k Z d k Z d k Z d k	 Z	 d k
 Z
 d k Z d k Z d k Z d k Z d k Z d k Z d k Z d k Z y d k l Z Wn  e j
 o d k l Z n Xd 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" 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 „  ƒ  YZ/ d „  Z0 d f  d „  ƒ  YZ1 d e1 f d „  ƒ  YZ2 d e1 f d „  ƒ  YZ3 d e1 f d „  ƒ  YZ4 d f  d „  ƒ  YZ5 d e1 f d „  ƒ  YZ6 d f  d  „  ƒ  YZ7 d! e7 f d" „  ƒ  YZ8 d# f  d$ „  ƒ  YZ9 d% e9 e1 f d& „  ƒ  YZ: d' e9 e1 f d( „  ƒ  YZ; d) „  Z< d* f  d+ „  ƒ  YZ= d, e1 e= f d- „  ƒ  YZ> d. e1 e= f d/ „  ƒ  YZ? d0 e1 f d1 „  ƒ  YZ@ d2 e@ f d3 „  ƒ  YZA eB e d4 ƒ o d5 e@ f d6 „  ƒ  YZC n d7 e1 f d8 „  ƒ  YZD d9 „  ZE d: „  ZF d; e1 f d< „  ƒ  YZG d= e1 f d> „  ƒ  YZH d? eH f d@ „  ƒ  YZI dA e1 f dB „  ƒ  YZJ dC f  dD „  ƒ  YZK eL dE j o]e iM ƒ  dF j o
 dG Z" n$ e iM ƒ  dH j o
 dI Z" n e& Z" dJ dK dL dM dN dO dP dQ dR dS f dT dU g ZN eI ƒ  ZO eO iP dV ƒ e) e0 eO eJ ƒ ƒ xÄ eN D]¸ ZQ eR eQ eS ƒ o eQ \ ZQ ZT n e& ZT eQ GHy e( eQ eT ƒ ZU Wn> e* j
 o ZV dW GeV GHnG e iW j
 o ZV dX GeV GHn' XeU iX ƒ  ZY eU iZ ƒ  dY e[ eY ƒ GHHe i\ dZ ƒ 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 OpenerDirector 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, 303 and 307 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	   localhosts   url2pathnames
   getproxiess   2.1c         C   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.3/urllib2.pys   urlopen}   s     c         C   s
   |  a d  S(   N(   s   openers   _opener(   s   opener(    (    s$   /mit/python/lib/python2.3/urllib2.pys   install_openerƒ   s     s   URLErrorc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s   | |  _  d  S(   N(   s   reasons   self(   s   selfs   reason(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__Ž   s    c         C   s   d |  i Sd  S(   Ns   <urlopen error %s>(   s   selfs   reason(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __str__‘   s    (   s   __name__s
   __module__s   __init__s   __str__(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   URLError‹   s   	s	   HTTPErrorc           B   s2   t  Z 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         C   sU   | |  _  | |  _ | |  _ | |  _ | |  _ | t j	 o |  i | | | ƒ n d  S(   N(	   s   codes   selfs   msgs   hdrss   fps   urls   filenames   Nones   _HTTPError__super_init(   s   selfs   urls   codes   msgs   hdrss   fp(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__˜   s    					c         C   s   d |  i |  i f Sd  S(   Ns   HTTP Error %s: %s(   s   selfs   codes   msg(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __str__¥   s    c         C   s   |  i o |  i i ƒ  n d  S(   N(   s   selfs   fps   close(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __del__¨   s    
(   s   __name__s
   __module__s   __doc__s
   addinfourls   __init__s   _HTTPError__super_inits   __str__s   __del__(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys	   HTTPError”   s
    			s   GopherErrorc           B   s   t  Z RS(   N(   s   __name__s
   __module__(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   GopherError®   s   s   Requestc           B   sz   t  Z e h  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z RS(   Nc         C   sm   t  | ƒ |  _ t |  _ t |  _ t |  _ | |  _ h  |  _	 x* | i
 ƒ  D] \ } } |  i | | ƒ qI Wd  S(   N(   s   unwraps   urls   selfs   _Request__originals   Nones   types   hosts   ports   datas   headerss   itemss   keys   values
   add_header(   s   selfs   urls   datas   headerss   values   key(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__´   s    					 c         C   se   | d  d j oG | d } t t d | ƒ o% t |  d | ƒ ƒ  t |  | ƒ SqX 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.3/urllib2.pys   __getattr__À   s    
c         C   s   |  i ƒ  o d Sn d Sd  S(   Ns   POSTs   GET(   s   selfs   has_data(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   get_methodÌ   s    c         C   s   | |  _  d  S(   N(   s   datas   self(   s   selfs   data(    (    s$   /mit/python/lib/python2.3/urllib2.pys   add_dataÒ   s    c         C   s   |  i t j	 Sd  S(   N(   s   selfs   datas   None(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   has_dataÕ   s    c         C   s   |  i Sd  S(   N(   s   selfs   data(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   get_dataØ   s    c         C   s   |  i Sd  S(   N(   s   selfs   _Request__original(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   get_full_urlÛ   s    c         C   s^   |  i t j oC t |  i ƒ \ |  _ |  _ |  i t j o t d |  i ‚ qS 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.3/urllib2.pys   get_typeÞ   s
    c         C   sZ   |  i t j o? t |  i ƒ \ |  _ |  _ |  i o t |  i ƒ |  _ qO n |  i Sd  S(   N(   s   selfs   hosts   Nones	   splithosts   _Request__r_types   _Request__r_hosts   unquote(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   get_hostå   s
    
c         C   s   |  i Sd  S(   N(   s   selfs   _Request__r_host(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   get_selectorì   s    c         C   s(   | | f \ |  _  |  _ |  i |  _ d  S(   N(   s   hosts   types   selfs   _Request__originals   _Request__r_host(   s   selfs   hosts   type(    (    s$   /mit/python/lib/python2.3/urllib2.pys	   set_proxyï   s    c         C   s   | |  i | i ƒ  <d  S(   N(   s   vals   selfs   headerss   keys
   capitalize(   s   selfs   keys   val(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   add_headeró   s    (   s   __name__s
   __module__s   Nones   __init__s   __getattr__s
   get_methods   add_datas   has_datas   get_datas   get_full_urls   get_types   get_hosts   get_selectors	   set_proxys
   add_header(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   Request²   s   										s   OpenerDirectorc           B   sJ   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „ Z d „  Z	 RS(   Nc         C   s;   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.3/urllib2.pys   __init__ø   s
    
		c   
      C   sÄ  d } x‚t | ƒ D]t}	 |	 d d j o` |	 d  } | |  i j o) |  i | i | ƒ |  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  ƒ } | | j o# | | i | ƒ | | i ƒ  n | g | | <| |  i | <d } q q q W| o. |  i i | ƒ |  i i ƒ  | i |  ƒ n d  S(   Ni    iûÿÿÿs   _openi   s   _iÿÿÿÿs   error(   s   addeds   dirs   handlers   meths   protocols   selfs   handle_opens   appends   sorts   finds   is   js   protos   kinds   ints
   ValueErrors   handle_errors   gets   dicts   handlerss
   add_parent(
   s   selfs   handlers   kinds   addeds   protocols   protos   is   js   dicts   meth(    (    s$   /mit/python/lib/python2.3/urllib2.pys   add_handler   s@     
%
c         C   s   |  i ƒ  d  S(   N(   s   selfs   close(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __del__#  s    c         C   s+   x |  i D] } | i ƒ  q
 Wg  |  _ d  S(   N(   s   selfs   handlerss   handlers   close(   s   selfs   handler(    (    s$   /mit/python/lib/python2.3/urllib2.pys   close&  s    
 c   	      G   sW   | i | f  ƒ } x> | D]6 } t | | ƒ } | | Œ  } | t
 j	 o | Sq 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.3/urllib2.pys   _call_chain+  s     c         C   sÈ   t  | t ƒ o t | | ƒ } n% | } | t j	 o | i | ƒ n |  i	 |  i
 d d | ƒ } | o | Sn | i ƒ  } |  i	 |  i
 | | d | ƒ } | o | Sn |  i	 |  i
 d d | ƒ Sd  S(   Ns   defaults   default_opens   _opens   unknowns   unknown_open(   s
   isinstances   fullurls
   basestrings   Requests   datas   reqs   Nones   add_datas   selfs   _call_chains   handle_opens   results   get_types   type_(   s   selfs   fullurls   datas   reqs   type_s   result(    (    s$   /mit/python/lib/python2.3/urllib2.pys   open6  s     	c         G   s½   | d d g j o1 |  i d } | d } d | } d } | } n |  i } | d } d } | | | f | } |  i | Œ  } | o | Sn | 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	   meth_names   http_errs   results   dict(    (    s$   /mit/python/lib/python2.3/urllib2.pys   errorM  s     


	
(
   s   __name__s
   __module__s   __init__s   add_handlers   __del__s   closes   _call_chains   Nones   opens   error(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   OpenerDirector÷   s   		#			c          G   sE  t  ƒ  } t t t t t t t g } t
 t d ƒ o | i t ƒ n g  } xu | D]m } xd |  D]\ } t i | ƒ o% t | | ƒ o | i | ƒ q» q_ t | | ƒ o | i | ƒ q_ q_ WqR Wx | D] } | i | ƒ qÊ Wx | D] } | i | ƒ  ƒ qè Wx8 |  D]0 } t i | ƒ o | ƒ  } n | i | ƒ q	W| Sd S(   s  Create an opener object from a list of handlers.

    The opener will use several default handlers, including support
    for HTTP and FTP.

    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.3/urllib2.pys   build_openerf  s6     	     s   BaseHandlerc           B   s)   t  Z d Z d „  Z d „  Z d „  Z RS(   Niô  c         C   s   | |  _  d  S(   N(   s   parents   self(   s   selfs   parent(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   add_parent  s    c         C   s   t  |  _ d  S(   N(   s   Nones   selfs   parent(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   close  s    c         C   s-   t  | d ƒ o t Sn |  i | i j  Sd  S(   Ns   handler_order(   s   hasattrs   others   Trues   selfs   handler_order(   s   selfs   other(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __lt__‘  s    (   s   __name__s
   __module__s   handler_orders
   add_parents   closes   __lt__(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   BaseHandlerŠ  s   		s   HTTPDefaultErrorHandlerc           B   s   t  Z d „  Z RS(   Nc         C   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.3/urllib2.pys   http_error_default›  s    (   s   __name__s
   __module__s   http_error_default(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPDefaultErrorHandlerš  s   s   HTTPRedirectHandlerc           B   s.   t  Z d „  Z d „  Z e Z Z Z d Z RS(   Nc         C   s”   | i ƒ  } | d d d d f j o | d d f j p  | d d d f j o
 | d j o t | d | i ƒSn t | i ƒ  | | | | ƒ ‚ d	 S(
   s­  Return a Request or None in response to a redirect.

        This is called by the http_error_30x methods when a
        redirection response is received.  If a redirection should
        take place, return a new Request to allow http_error_30x to
        perform the redirect.  Otherwise, raise HTTPError if no-one
        else should try to handle this url.  Return None if you can't
        but another Handler might.
        i-  i.  i/  i3  s   GETs   HEADs   POSTs   headersN(   s   reqs
   get_methods   ms   codes   Requests   newurls   headerss	   HTTPErrors   get_full_urls   msgs   fp(   s   selfs   reqs   fps   codes   msgs   headerss   newurls   m(    (    s$   /mit/python/lib/python2.3/urllib2.pys   redirect_requestŸ  s
    	 Oc         C   s9  d | j o | d } n  d | j o | d } n d  St i | i ƒ  | ƒ } |  i | | | | | | ƒ } | t j o d  Sn h  | _ t | d ƒ of t | i ƒ d j p | | i j o) t | i ƒ  | |  i | | | ƒ ‚ n | i i | i ƒ n | | i | <| i ƒ  | i ƒ  |  i i | ƒ Sd  S(   Ns   locations   uris   error_302_dicti
   (   s   headerss   newurls   urlparses   urljoins   reqs   get_full_urls   selfs   redirect_requests   fps   codes   msgs   news   Nones   error_302_dicts   hasattrs   lens	   HTTPErrors   inf_msgs   updates   reads   closes   parents   open(   s   selfs   reqs   fps   codes   msgs   headerss   newurls   new(    (    s$   /mit/python/lib/python2.3/urllib2.pys   http_error_302¹  s&    	&

so   The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
(   s   __name__s
   __module__s   redirect_requests   http_error_302s   http_error_301s   http_error_303s   http_error_307s   inf_msg(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPRedirectHandlerž  s   		!s   ProxyHandlerc           B   s#   t  Z d Z e d „ Z d „  Z RS(   Nid   c         C   s   | t j o t ƒ  } n t | d ƒ p
 t d ‚ | |  _  x= | i ƒ  D]/ \ } } t	 |  d | | | |  i
 d „ ƒ qJ Wd  S(   Ns   has_keys   proxies must be a mappings   %s_openc         C   s   | |  | | ƒ S(   N(   s   meths   rs   proxys   type(   s   rs   proxys   types   meth(    (    s$   /mit/python/lib/python2.3/urllib2.pys   <lambda>ë  s    (   s   proxiess   Nones
   getproxiess   hasattrs   AssertionErrors   selfs   itemss   types   urls   setattrs
   proxy_open(   s   selfs   proxiess   urls   type(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__ä  s    	 c         C   s   | i ƒ  } t | ƒ \ } } t | ƒ \ } } d | j o~ | i
 d d ƒ \ } } d | j oU | i
 d d ƒ \ }
 }	 t i d t |
 ƒ t |	 ƒ f ƒ } | i d d | ƒ q» n t | ƒ } | i | | ƒ | | j o t Sn |  i i | ƒ Sd  S(   Ns   @i   s   :s   %s:%ss   Proxy-authorizations   Basic (   s   reqs   get_types	   orig_types	   splittypes   proxys   types   r_types	   splithosts   hosts   XXXs   splits	   user_passs   users   passwords   base64s   encodestrings   unquotes
   add_headers	   set_proxys   Nones   selfs   parents   open(   s   selfs   reqs   proxys   types   XXXs	   orig_types   r_types   hosts	   user_passs   passwords   user(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   proxy_openî  s    %(   s   __name__s
   __module__s   handler_orders   Nones   __init__s
   proxy_open(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   ProxyHandlerà  s   
s   CustomProxyc           B   s)   t  Z e e d „ Z d „  Z d „  Z RS(   Nc         C   s   | |  _  | |  _ | |  _ d  S(   N(   s   protos   selfs   funcs
   proxy_addrs   addr(   s   selfs   protos   funcs
   proxy_addr(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__	  s    		c         C   s&   |  i o |  i | ƒ o d Sn d  S(   Ni   (   s   selfs   funcs   req(   s   selfs   req(    (    s$   /mit/python/lib/python2.3/urllib2.pys   handle  s    c         C   s   |  i Sd  S(   N(   s   selfs   addr(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys	   get_proxy  s    (   s   __name__s
   __module__s   Nones   __init__s   handles	   get_proxy(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   CustomProxy  s   	s   CustomProxyHandlerc           B   s2   t  Z d Z d „  Z d „  Z d „  Z d „  Z RS(   Nid   c         G   s   h  |  _ d  S(   N(   s   selfs   proxies(   s   selfs   proxies(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__  s    c         C   s‡   | i ƒ  } y |  i | } Wn t j
 o t Sn XxE | D]= } | i | ƒ o' | i	 | i
 ƒ  ƒ |  i i | ƒ Sq> q> Wt Sd  S(   N(   s   reqs   get_types   protos   selfs   proxiess   KeyErrors   Nones   ps   handles	   set_proxys	   get_proxys   parents   open(   s   selfs   reqs   protos   ps   proxies(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   proxy_open  s    	 c         C   s   |  i i | ƒ Sd  S(   N(   s   selfs   parents   opens   req(   s   selfs   ps   req(    (    s$   /mit/python/lib/python2.3/urllib2.pys   do_proxy(  s    c         C   sE   | i |  i j o |  i | i i | ƒ n | g |  i | i <d  S(   N(   s   cpos   protos   selfs   proxiess   append(   s   selfs   cpo(    (    s$   /mit/python/lib/python2.3/urllib2.pys	   add_proxy+  s    (   s   __name__s
   __module__s   handler_orders   __init__s
   proxy_opens   do_proxys	   add_proxy(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   CustomProxyHandler  s
   			s   HTTPPasswordMgrc           B   s5   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s   h  |  _ d  S(   N(   s   selfs   passwd(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__2  s    c         C   sr   t  | t ƒ o | g } n t t |  i | ƒ ƒ } | |  i j o h  |  i | <n | | f |  i | | <d  S(   N(
   s
   isinstances   uris
   basestrings   tuples   maps   selfs
   reduce_uris   realms   passwds   user(   s   selfs   realms   uris   users   passwd(    (    s$   /mit/python/lib/python2.3/urllib2.pys   add_password5  s    c         C   s{   |  i i | h  ƒ } |  i | ƒ } xF | i ƒ  D]8 \ } } x) | D]! } |  i | | ƒ o | SqD qD Wq1 Wt t f Sd  S(   N(   s   selfs   passwds   gets   realms   domainss
   reduce_uris   authuris	   iteritemss   uriss   authinfos   uris	   is_suburis   None(   s   selfs   realms   authuris   uris   authinfos   domainss   uris(    (    s$   /mit/python/lib/python2.3/urllib2.pys   find_user_password>  s      c         C   sI   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.3/urllib2.pys
   reduce_uriG  s
     c         C   s|   | | j o t Sn | d | d j o t Sn t i | d | d f ƒ } t | ƒ t | d ƒ j o t Sn t 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   Trues   Falses	   posixpaths   commonprefixs   commons   len(   s   selfs   bases   tests   common(    (    s$   /mit/python/lib/python2.3/urllib2.pys	   is_suburiO  s     (   s   __name__s
   __module__s   __init__s   add_passwords   find_user_passwords
   reduce_uris	   is_suburi(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPPasswordMgr1  s
   						s   HTTPPasswordMgrWithDefaultRealmc           B   s   t  Z d „  Z RS(   Nc         C   sM   t  i |  | | ƒ \ } } | t j	 o | | f Sn 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.3/urllib2.pys   find_user_password`  s
    (   s   __name__s
   __module__s   find_user_password(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPPasswordMgrWithDefaultRealm^  s   s   AbstractBasicAuthHandlerc           B   s;   t  Z e i d e i ƒ Z e d „ Z d „  Z d „  Z	 RS(   Ns!   [ 	]*([^ 	]+)[ 	]+realm="([^"]*)"c         C   s6   | t j o t ƒ  } n | |  _ |  i i |  _ d  S(   N(   s   password_mgrs   Nones   HTTPPasswordMgrs   selfs   passwds   add_password(   s   selfs   password_mgr(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__p  s    	c         C   sz   | i | t ƒ } | o] t i i | ƒ } | o@ | i ƒ  \ } } | i ƒ  d j o |  i | | | ƒ Sqr qv 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   realms   schemes   mo(    (    s$   /mit/python/lib/python2.3/urllib2.pys   http_error_auth_reqedv  s    c         C   s¡   |  i i | | ƒ \ } } | ow d | | f } d t i	 | ƒ i
 ƒ  } | i i |  i t ƒ | j o t Sn | i |  i | ƒ |  i i | ƒ Sn 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   pws   auths   raws   user(    (    s$   /mit/python/lib/python2.3/urllib2.pys   retry_http_basic_auth€  s    (
   s   __name__s
   __module__s   res   compiles   Is   rxs   Nones   __init__s   http_error_auth_reqeds   retry_http_basic_auth(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   AbstractBasicAuthHandlerh  s   	
s   HTTPBasicAuthHandlerc           B   s   t  Z d Z d „  Z RS(   Ns   Authorizationc         C   s3   t  i  | i ƒ  ƒ d } |  i d | | | ƒ 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.3/urllib2.pys   http_error_401  s    	(   s   __name__s
   __module__s   auth_headers   http_error_401(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPBasicAuthHandlerŒ  s   s   ProxyBasicAuthHandlerc           B   s   t  Z d Z d „  Z RS(   Ns   Proxy-authorizationc         C   s&   | i ƒ  } |  i d | | | ƒ 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.3/urllib2.pys   http_error_407š  s    	(   s   __name__s
   __module__s   auth_headers   http_error_407(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   ProxyBasicAuthHandler–  s   c         C   s   t  i i d ƒ o- t d ƒ } | i |  ƒ } | i ƒ  | SnM g  i	 } t |  ƒ D]" } | t t i d d ƒ ƒ ƒ qT ~ } d i | ƒ Sd S(   s   Return n random bytes.s   /dev/urandomi    i   s    N(   s   oss   paths   existss   opens   fs   reads   ns   ss   closes   appends   _[1]s   ranges   is   chrs   randoms	   randranges   Ls   join(   s   ns   fs   is   Ls   _[1]s   s(    (    s$   /mit/python/lib/python2.3/urllib2.pys   randombytes   s     
?s   AbstractDigestAuthHandlerc           B   sS   t  Z e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   Nc         C   sH   | t j o t ƒ  } n | |  _  |  i  i |  _ d |  _ d |  _ d  S(   Ni    (   s   passwds   Nones   HTTPPasswordMgrs   selfs   add_passwords   retrieds   nonce_count(   s   selfs   passwd(    (    s$   /mit/python/lib/python2.3/urllib2.pys   __init__¹  s    		c         C   s   d |  _ d  S(   Ni    (   s   selfs   retried(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys   reset_retry_countÁ  s    c         C   s©   | i | t ƒ } |  i d j o" t | i	 ƒ  d d | t ƒ ‚ n |  i d 7_ | oK | i
 ƒ  d } | i ƒ  d j o |  i | | ƒ Sq¥ t d | ƒ ‚ n d  S(   Ni   i‘  s   digest auth failedi   i    s   digests/   AbstractDigestAuthHandler doesn't know about %s(   s   headerss   gets   auth_headers   Nones   authreqs   selfs   retrieds	   HTTPErrors   reqs   get_full_urls   splits   schemes   lowers   retry_http_digest_auths
   ValueError(   s   selfs   auth_headers   hosts   reqs   headerss   schemes   authreq(    (    s$   /mit/python/lib/python2.3/urllib2.pys   http_error_auth_reqedÄ  s    c         C   s¥   | i d d ƒ \ } } t t | ƒ ƒ } |  i | | ƒ } | o^ 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   chals   tokens   auth_val(    (    s$   /mit/python/lib/python2.3/urllib2.pys   retry_http_digest_authØ  s    
c         C   s@   t  i d |  i | t i ƒ  t d ƒ f ƒ i ƒ  } | d  Sd  S(   Ns   %s:%s:%s:%si   i   (
   s   shas   news   selfs   nonce_counts   nonces   times   ctimes   randombytess	   hexdigests   dig(   s   selfs   nonces   dig(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   get_cnonceä  s    4c         C   sn  yK | d } | d } | i 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 j oc |  i d 7_ d |  i } |  i | ƒ } d | | | | | |
 ƒ f } | | |	 ƒ | ƒ } n7 | t j o) | | |	 ƒ d | | |
 ƒ f ƒ } n d | | | | i ƒ  | f } | o | d | } n | o | d | } n | d j o | d | } n | o | d | | f } n | Sd  S(   Ns   realms   nonces   qops	   algorithms   MD5s   opaques   %s:%s:%ss   %s:%ss   POSTs   GETs   authi   s   %08xs   %s:%s:%s:%s:%ss>   username="%s", realm="%s", nonce="%s", uri="%s", response="%s"s   , opaque="%s"s   , digest="%s"s   , algorithm="%s"s   , qop=auth, nc=%s, cnonce="%s"(!   s   chals   realms   nonces   gets   qops	   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   nonce_counts   ncvalues
   get_cnonces   cnonces   noncebits   respdigs   base(   s   selfs   reqs   chals   qops   entdigs   realms   pws   opaques   respdigs   A1s   A2s   noncebits   nonces   Hs   cnonces   ncvalues   bases   users	   algorithms   KD(    (    s$   /mit/python/lib/python2.3/urllib2.pys   get_authorizationî  sL    

	!*) c            sN   | d j o d „  ‰  n | d j o d „  ‰  n ‡  d †  } ˆ  | f Sd  S(   Ns   MD5c         C   s   t  i |  ƒ i ƒ  S(   N(   s   md5s   news   xs	   hexdigest(   s   x(    (    s$   /mit/python/lib/python2.3/urllib2.pys   <lambda>*  s    s   SHAc         C   s   t  i |  ƒ i ƒ  S(   N(   s   shas   news   xs	   hexdigest(   s   x(    (    s$   /mit/python/lib/python2.3/urllib2.pys   <lambda>,  s    c            s   ˆ  d |  | f ƒ S(   Ns   %s:%s(   s   Hs   ss   d(   s   ss   d(   s   H(    s$   /mit/python/lib/python2.3/urllib2.pys   <lambda>.  s    (   s	   algorithms   Hs   KD(   s   selfs	   algorithms   Hs   KD(    (   s   Hs$   /mit/python/lib/python2.3/urllib2.pys   get_algorithm_impls'  s    c         C   s   t  Sd  S(   N(   s   None(   s   selfs   datas   chal(    (    s$   /mit/python/lib/python2.3/urllib2.pys   get_entity_digest1  s    (   s   __name__s
   __module__s   Nones   __init__s   reset_retry_counts   http_error_auth_reqeds   retry_http_digest_auths
   get_cnonces   get_authorizations   get_algorithm_implss   get_entity_digest(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   AbstractDigestAuthHandler®  s   				
	9	
s   HTTPDigestAuthHandlerc           B   s   t  Z 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         C   sC   t  i  | i ƒ  ƒ d } |  i d | | | ƒ } |  i ƒ  | Sd  S(   Ni   s   www-authenticate(	   s   urlparses   reqs   get_full_urls   hosts   selfs   http_error_auth_reqeds   headerss   retrys   reset_retry_count(   s   selfs   reqs   fps   codes   msgs   headerss   hosts   retry(    (    s$   /mit/python/lib/python2.3/urllib2.pys   http_error_401?  s
    	
(   s   __name__s
   __module__s   __doc__s   auth_headers   http_error_401(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPDigestAuthHandler6  s    s   ProxyDigestAuthHandlerc           B   s   t  Z d Z d „  Z RS(   Ns   Proxy-Authorizationc         C   s6   | i ƒ  } |  i d | | | ƒ } |  i ƒ  | Sd  S(   Ns   proxy-authenticate(   s   reqs   get_hosts   hosts   selfs   http_error_auth_reqeds   headerss   retrys   reset_retry_count(   s   selfs   reqs   fps   codes   msgs   headerss   hosts   retry(    (    s$   /mit/python/lib/python2.3/urllib2.pys   http_error_407K  s
    	
(   s   __name__s
   __module__s   auth_headers   http_error_407(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   ProxyDigestAuthHandlerG  s   s   AbstractHTTPHandlerc           B   s   t  Z d „  Z RS(   Nc         C   sI  | i ƒ  }
 |
 o t d ƒ ‚ n | |
 ƒ } | i ƒ  oz | i ƒ  } | i	 d | i
 ƒ  ƒ d | i j o | i d d ƒ n d | i j o | i d d t | ƒ ƒ qÍ n | i	 d | i
 ƒ  ƒ t | i
 ƒ  ƒ \ } } t | ƒ \ } }	 | i d | p |
 ƒ xJ |  i i D]< \ } } | i ƒ  } | | i j o | i | | ƒ qqWx- | i i ƒ  D] \ } } | i | | ƒ qkWy | i ƒ  Wn$ t i j
 o } t | ƒ ‚ n X| 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	   putheaders   lens	   splittypes   schemes   sels	   splithosts   sel_hosts   sel_paths   selfs   parents
   addheaderss   names   values
   capitalizes   itemss   ks   vs
   endheaderss   sockets   errors   errs   sends   getreplys   codes   msgs   hdrss   getfiles   fps
   addinfourls   get_full_url(   s   selfs
   http_classs   reqs   codes   sels   msgs   schemes   fps   hdrss   sel_paths   hosts   datas   sel_hosts   names   errs   hs   ks   values   v(    (    s$   /mit/python/lib/python2.3/urllib2.pys   do_openW  sF    	"  (   s   __name__s
   __module__s   do_open(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   AbstractHTTPHandlerR  s   s   HTTPHandlerc           B   s   t  Z d „  Z RS(   Nc         C   s   |  i t i | ƒ Sd  S(   N(   s   selfs   do_opens   httplibs   HTTPs   req(   s   selfs   req(    (    s$   /mit/python/lib/python2.3/urllib2.pys	   http_open„  s    (   s   __name__s
   __module__s	   http_open(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPHandler‚  s   s   HTTPSs   HTTPSHandlerc           B   s   t  Z d „  Z RS(   Nc         C   s   |  i t i | ƒ Sd  S(   N(   s   selfs   do_opens   httplibs   HTTPSs   req(   s   selfs   req(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   https_open‹  s    (   s   __name__s
   __module__s
   https_open(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   HTTPSHandler‰  s   s   UnknownHandlerc           B   s   t  Z d „  Z RS(   Nc         C   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.3/urllib2.pys   unknown_open  s    (   s   __name__s
   __module__s   unknown_open(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   UnknownHandler  s   c         C   st   h  } xc |  D][ } | 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.3/urllib2.pys   parse_keqv_list”  s      "c   	      C   s  g  } t |  ƒ } d } d } d } xT| | j  oF|  | } | i d ƒ } | i d ƒ } | d j o | i |  | ƒ Pn | d j oA | o t d ‚ qÍ | i |  | | | !ƒ | | d } q' n | oQ | | j  o6 | i |  | | | !ƒ | | d } | } d } qv| | } q' | | j  o0 | i |  | | | !ƒ | | d } | } q' d } | | d } q' Wt 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         C   s
   |  i ƒ  S(   N(   s   xs   strip(   s   x(    (    s$   /mit/python/lib/python2.3/urllib2.pys   <lambda>Ê  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.3/urllib2.pys   parse_http_listž  sD      


s   FileHandlerc           B   s)   t  Z d „  Z e Z d „  Z d „  Z RS(   Nc         C   s_   | 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.3/urllib2.pys	   file_openÎ  s
    %	c         C   sF   t  i t j o+ t i d ƒ t i t i ƒ  ƒ f t  _ n t  i Sd  S(   Ns	   localhost(   s   FileHandlers   namess   Nones   sockets   gethostbynames   gethostname(   s   self(    (    s$   /mit/python/lib/python2.3/urllib2.pys	   get_namesØ  s    +c         C   s  | i ƒ  } | i ƒ  } t | ƒ } t i | ƒ } | i
 } t i | i ƒ }	 t i | ƒ d } t i t d | p d | |	 f ƒ ƒ }
 | o t | ƒ \ } } n | 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   files   ports   sizes   statss	   localfiles   hosts   modifieds   headers(    (    s$   /mit/python/lib/python2.3/urllib2.pys   open_local_fileß  s    	),(   s   __name__s
   __module__s	   file_opens   Nones   namess	   get_namess   open_local_file(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   FileHandlerÌ  s   			s
   FTPHandlerc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s…  | i ƒ  } | o t d d f ‚ n y t i | ƒ } Wn$ t i j
 o } t | ƒ ‚ n Xt	 | ƒ \ } } | t j o t i } n t | i ƒ  ƒ \ } } t | ƒ } | i d ƒ } | d  | d f \ } } | o	 | d o | d } n d } }
 yE|  i | |
 | | | ƒ }	 | o d p d	 } xb | D]Z } t | ƒ \ } } | i ƒ  d
 j o | d d d d d d	 f j o | i ƒ  } q>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& ƒ  ƒ SWn4 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   fps   mtypes   attrss   files   ports   types   dirss   fws   passwds   msgs   hosts   users   paths   retrlens   attrs   values   headerss   sf(    (    s$   /mit/python/lib/python2.3/urllib2.pys   ftp_openó  sJ    
 2c         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.3/urllib2.pys   connect_ftp  s    (   s   __name__s
   __module__s   ftp_opens   connect_ftp(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys
   FTPHandlerò  s   	(s   CacheFTPHandlerc           B   s5   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s1   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.3/urllib2.pys   __init__#  s
    				c         C   s   | |  _ d  S(   N(   s   ts   selfs   delay(   s   selfs   t(    (    s$   /mit/python/lib/python2.3/urllib2.pys
   setTimeout*  s    c         C   s   | |  _ d  S(   N(   s   ms   selfs	   max_conns(   s   selfs   m(    (    s$   /mit/python/lib/python2.3/urllib2.pys   setMaxConns-  s    c         C   s’   | | | | f } | |  i j 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   times   delays   timeouts
   ftpwrappers   dirss   check_cache(   s   selfs   users   passwds   hosts   ports   dirss   key(    (    s$   /mit/python/lib/python2.3/urllib2.pys   connect_ftp0  s    
c         C   s  t  i  ƒ  } |  i | j oZ xW |  i i ƒ  D]B \ } } | | j  o) |  i | i	 ƒ  |  i | =|  i | =q, q, Wn t
 |  i i ƒ  ƒ |  _ t |  i ƒ |  i j oe xF |  i i ƒ  D]5 \ } } | |  i j o |  i | =|  i | =Pq· q· Wt
 |  i i ƒ  ƒ |  _ n d  S(   N(   s   times   ts   selfs   soonests   timeouts   itemss   ks   vs   caches   closes   mins   valuess   lens	   max_conns(   s   selfs   ks   ts   v(    (    s$   /mit/python/lib/python2.3/urllib2.pys   check_cache:  s"     
 

	(   s   __name__s
   __module__s   __init__s
   setTimeouts   setMaxConnss   connect_ftps   check_cache(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   CacheFTPHandler   s
   				
s   GopherHandlerc           B   s   t  Z d „  Z RS(   Nc         C   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.3/urllib2.pys   gopher_openO  s    (   s   __name__s
   __module__s   gopher_open(    (    (    s$   /mit/python/lib/python2.3/urllib2.pys   GopherHandlerN  s   s   OpenerFactoryc           B   sG   t  Z e e e e e e g Z g  Z	 g  Z
 d „  Z d „  Z d „  Z RS(   Nc         C   s   |  i | g |  _ d  S(   N(   s   selfs   handlerss   h(   s   selfs   h(    (    s$   /mit/python/lib/python2.3/urllib2.pys   add_handlerh  s    c         C   s   d  S(   N(    (   s   selfs   h(    (    s$   /mit/python/lib/python2.3/urllib2.pys   replace_handlerk  s    c         C   sK   t  ƒ  } x; |  i D]0 } t i | ƒ o | ƒ  } n | i | ƒ q Wd  S(   N(   s   OpenerDirectors   openers   selfs   default_handlerss   phs   inspects   isclasss   add_handler(   s   selfs   openers   ph(    (    s$   /mit/python/lib/python2.3/urllib2.pys   build_openern  s    	
 (   s   __name__s
   __module__s   UnknownHandlers   HTTPHandlers   HTTPDefaultErrorHandlers   HTTPRedirectHandlers
   FTPHandlers   FileHandlers   default_handlerss   handlerss   replacement_handlerss   add_handlers   replace_handlers   build_opener(    (    (    s$   /mit/python/lib/python2.3/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   base64s   ftplibs	   gopherlibs   httplibs   inspects   md5s	   mimetypess	   mimetoolss   oss	   posixpaths   randoms   res   rfc822s   shas   sockets   syss   times   urlparses	   cStringIOs   StringIOs   ImportErrors   urllibs   unwraps   unquotes	   splittypes	   splithosts
   addinfourls	   splitports   splitgophertypes
   splitquerys	   splitattrs
   ftpwrappers	   noheaderss	   localhosts   url2pathnames
   getproxiess   __version__s   Nones   _openers   urlopens   install_openers   IOErrors   URLErrors	   HTTPErrors   GopherErrors   Requests   OpenerDirectors   build_openers   BaseHandlers   HTTPDefaultErrorHandlers   HTTPRedirectHandlers   ProxyHandlers   CustomProxys   CustomProxyHandlers   HTTPPasswordMgrs   HTTPPasswordMgrWithDefaultRealms   AbstractBasicAuthHandlers   HTTPBasicAuthHandlers   ProxyBasicAuthHandlers   randombytess   AbstractDigestAuthHandlers   HTTPDigestAuthHandlers   ProxyDigestAuthHandlers   AbstractHTTPHandlers   HTTPHandlers   hasattrs   HTTPSHandlers   UnknownHandlers   parse_keqv_lists   parse_http_lists   FileHandlers
   FTPHandlers   CacheFTPHandlers   GopherHandlers   OpenerFactorys   __name__s   gethostnames   urlss   cfhs
   setTimeouts   urls
   isinstances   tuples   reqs   fs   errs   errors   reads   bufs   closes   lens   sleep(K   s	   mimetoolss   unquotes
   getproxiess   reqs   errs   cfhs	   gopherlibs   HTTPPasswordMgrs   BaseHandlers   randoms	   splithosts   bufs   urls   AbstractBasicAuthHandlers
   addinfourls   HTTPDigestAuthHandlers   GopherErrors   HTTPHandlers   install_openers	   splitports	   posixpaths	   splittypes   CustomProxys   base64s	   noheaderss   CacheFTPHandlers   FileHandlers   res   HTTPDefaultErrorHandlers   OpenerFactorys   HTTPSHandlers	   splitattrs   url2pathnames   GopherHandlers	   localhosts   URLErrors   ftplibs	   mimetypess   ProxyDigestAuthHandlers   fs   rfc822s   urlopens   AbstractDigestAuthHandlers   inspects   Requests   parse_http_lists   randombytess   syss
   FTPHandlers   unwraps   OpenerDirectors   HTTPBasicAuthHandlers	   HTTPErrors   splitgophertypes   HTTPRedirectHandlers   md5s
   ftpwrappers   httplibs   __version__s   HTTPPasswordMgrWithDefaultRealms   sockets
   splitquerys   StringIOs   UnknownHandlers   parse_keqv_lists   build_openers   urlparses   shas   ProxyHandlers   CustomProxyHandlers   ProxyBasicAuthHandlers   urlss   times   AbstractHTTPHandlers   os(    (    s$   /mit/python/lib/python2.3/urllib2.pys   ?G   s°   																		I		Eo	$B'-
$

	ˆ0	
	.&..

-!	 
