<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
ž
¨ÿfóq c            '   @   s‰  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z m Z m Z d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& m' Z' d d l( m) Z) m* Z* y d d l+ Z+ Wn e, k
 r’e- Z. Yn Xe/ Z. d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ g Z0 e j1 d d% … Z2 e3 a4 d& e3 d' e3 d( e- e3 e j5 d) d „Z6 d* d „  Z7 g  Z8 e3 e3 e3 d+ d! „ Z9 d, d" „  Z: e
 j; d- e
 j< ƒ Z= d. d/ „  Z> Gd0 d „  d ƒ Z? Gd1 d „  d ƒ Z@ d2 d „  ZA Gd3 d „  d ƒ ZB Gd4 d „  d eB ƒ ZC Gd5 d	 „  d	 eB ƒ ZD Gd6 d
 „  d
 eB ƒ ZE d7 d8 „  ZF Gd9 d „  d eB ƒ ZG Gd: d „  d ƒ ZH Gd; d „  d eH ƒ ZI Gd< d „  d ƒ ZJ Gd= d „  d eJ eB ƒ ZK Gd> d „  d eJ eB ƒ ZL e jM ZN Gd? d „  d ƒ ZO Gd@ d „  d eB eO ƒ ZP GdA d „  d eB eO ƒ ZQ GdB dC „  dC eB ƒ ZR GdD d „  d eR ƒ ZS eT e jU dE ƒ rYGdF dG „  dG eR ƒ ZV e0 jW dG ƒ n  GdH d „  d eB ƒ ZX GdI d „  d eB ƒ ZY dJ dK „  ZZ dL dM „  Z[ GdN d „  d eB ƒ Z\ dO dP „  Z] GdQ d „  d eB ƒ Z^ GdR d „  d e^ ƒ Z_ dS Z` e ja dT k rd dU lb mc Zc md Zd n dV d „  Zc dW d „  Zd i  Ze GdX d# „  d# ƒ Zf GdY d$ „  d$ ef ƒ Zg e3 ah dZ d[ „  Zi e3 aj d\ d] „  Zk e3 al d^ d_ „  Zm e3 an d` da „  Zo Gdb dc „  dc ƒ Zp dd de „  Zq df dg „  Zr dh di „  Zs e jt dj k r7d dk lu mv Zv mw Zw dl dm „  Zx dn do „  Zy dp dq „  Zz dr d  „  Z{ nN e ja dT k ryds dt „  Z| du d  „  Z{ dv dw „  Z} dx dq „  Zz n eq Z{ er Zz d S(y   uš
  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 the 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 -- Sets up the User Agent as the Python-urllib client and manages
the Handler classes, while dealing with requests and responses.

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

BaseHandler --

internals:
BaseHandler and parent
_call_chain conventions

Example usage:

import urllib.request

# set up authentication info
authinfo = urllib.request.HTTPBasicAuthHandler()
authinfo.add_password(realm='PDQ Application',
                      uri='https://mahler:8092/site-updates.py',
                      user='klem',
                      passwd='geheim$parole')

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

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

# install it
urllib.request.install_opener(opener)

f = urllib.request.urlopen('http://www.python.org/')
i    N(   u   URLErroru	   HTTPErroru   ContentTooShortError(   u   urlparseu   urlsplitu   urljoinu   unwrapu   quoteu   unquoteu	   splittypeu	   splithostu	   splitportu	   splituseru   splitpasswdu	   splitattru
   splitqueryu
   splitvalueu   splittagu   to_bytesu
   urlunparse(   u
   addinfourlu   addclosehooku   Requestu   OpenerDirectoru   BaseHandleru   HTTPDefaultErrorHandleru   HTTPRedirectHandleru   HTTPCookieProcessoru   ProxyHandleru   HTTPPasswordMgru   HTTPPasswordMgrWithDefaultRealmu   AbstractBasicAuthHandleru   HTTPBasicAuthHandleru   ProxyBasicAuthHandleru   AbstractDigestAuthHandleru   HTTPDigestAuthHandleru   ProxyDigestAuthHandleru   HTTPHandleru   FileHandleru
   FTPHandleru   CacheFTPHandleru   UnknownHandleru   HTTPErrorProcessoru   urlopenu   install_openeru   build_openeru   pathname2urlu   url2pathnameu
   getproxiesu   urlretrieveu
   urlcleanupu	   URLopeneru   FancyURLopeneri   u   cafileu   capathu	   cadefaultc      	      C   sÙ   | s | s | r¤ t  s' t d ƒ ‚ n  t j t j ƒ } | j t j O_ t j | _ | sc | rv | j	 | | ƒ n
 | j
 ƒ  t d | d d ƒ } t | ƒ } n" t d  k rÀ t ƒ  a } n t } | j |  | | ƒ S(   Nu   SSL support not availableu   contextu   check_hostnameT(   u	   _have_sslu
   ValueErroru   sslu
   SSLContextu   PROTOCOL_SSLv23u   optionsu   OP_NO_SSLv2u   CERT_REQUIREDu   verify_modeu   load_verify_locationsu   set_default_verify_pathsu   HTTPSHandleru   Trueu   build_openeru   _openeru   Noneu   open(	   u   urlu   datau   timeoutu   cafileu   capathu	   cadefaultu   contextu   https_handleru   opener(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   urlopen‰   s    
c             C   s
   |  a  d  S(   N(   u   _opener(   u   opener(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   install_openerž   s    c             C   s¨  t  |  ƒ \ } } t j t |  | ƒ ƒ D} | j ƒ  } | d k rb | rb t j j | ƒ | f S| rz t | d ƒ } n( t	 j
 d d ƒ } | j } t j | ƒ | À | | f }	 d }
 d } d } d } d | k rì t | d	 ƒ } n  | r| | |
 | ƒ n  x\ | j |
 ƒ } | s!Pn  | t | ƒ 7} | j | ƒ | d 7} | r| | |
 | ƒ qqWd
 QXWd
 QX| d k r¤| | k  r¤t d | | f |	 ƒ ‚ n  |	 S(   uW  
    Retrieve a URL into a temporary location on disk.

    Requires a URL argument. If a filename is passed, it is used as
    the temporary file location. The reporthook argument should be
    a callable that accepts a block number, a read size, and the
    total file size of the URL target. The data argument should be
    valid URL encoded data.

    If a filename is passed and the URL points to a local resource,
    the result is a copy from local file to new file.

    Returns a tuple containing the path to the newly created
    data file as well as the resulting HTTPMessage object.
    u   fileu   wbu   deletei   i   i   i    u   content-lengthu   Content-LengthNu1   retrieval incomplete: got only %i out of %i bytesFi    iÿÿÿÿ(   u	   splittypeu
   contextlibu   closingu   urlopenu   infou   osu   pathu   normpathu   openu   tempfileu   NamedTemporaryFileu   Falseu   nameu   _url_tempfilesu   appendu   intu   readu   lenu   writeu   ContentTooShortError(   u   urlu   filenameu
   reporthooku   datau   url_typeu   pathu   fpu   headersu   tfpu   resultu   bsu   sizeu   readu   blocknumu   block(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   urlretrieve£   sD    	
"c              C   sW   x4 t  D], }  y t j |  ƒ Wq t k
 r2 Yq Xq Wt  d  d  … =t rS d  a n  d  S(   N(   u   _url_tempfilesu   osu   unlinku   EnvironmentErroru   _openeru   None(   u	   temp_file(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   urlcleanupâ   s    	u   :\d+$c             C   sY   |  j  } t | ƒ d } | d k r: |  j d d ƒ } n  t j d | d ƒ } | j ƒ  S(   uˆ   Return request-host, as defined by RFC 2965.

    Variation from RFC: returned value is lowercased, for convenient
    comparison.

    i   u    u   Host(   u   full_urlu   urlparseu
   get_headeru   _cut_port_reu   subu   lower(   u   requestu   urlu   host(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   request_hostð   s    	u   request_hostc             B   s
  |  Ee  Z d  Z d' i  d' d( d' d d „ Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d  „  Z d! d" „  Z d' d# d$ „ Z d% d& „  Z d' S()   u   Requestc       	      C   s¿   t  | ƒ |  _ t |  j ƒ \ |  _ |  _ | |  _ i  |  _ d  |  _ x* | j ƒ  D] \ } } |  j	 | | ƒ qR Wi  |  _
 | d  k r– t |  ƒ } n  | |  _ | |  _ | |  _ |  j ƒ  d  S(   N(   u   unwrapu   full_urlu   splittagu   fragmentu   datau   headersu   Noneu   _tunnel_hostu   itemsu
   add_headeru   unredirected_hdrsu   request_hostu   origin_req_hostu   unverifiableu   methodu   _parse(	   u   selfu   urlu   datau   headersu   origin_req_hostu   unverifiableu   methodu   keyu   value(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__  s    							u   Request.__init__c             C   sw   t  |  j ƒ \ |  _ } |  j d  k r= t d |  j ƒ ‚ n  t | ƒ \ |  _ |  _ |  j rs t |  j ƒ |  _ n  d  S(   Nu   unknown url type: %r(	   u	   splittypeu   full_urlu   typeu   Noneu
   ValueErroru	   splithostu   hostu   selectoru   unquote(   u   selfu   rest(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _parse  s    	u   Request._parsec             C   s1   |  j  d k	 r |  j  S|  j d k	 r) d Sd Sd S(   u3   Return a string indicating the HTTP request method.u   POSTu   GETN(   u   methodu   Noneu   data(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   get_method  s
    u   Request.get_methodc             C   s(   |  j  r d |  j |  j  f S|  j Sd  S(   Nu   %s#%s(   u   fragmentu   full_url(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_full_url&  s    	u   Request.get_full_urlc             C   s)   d } t  j | t d d ƒ| |  _ d  S(   Nu&   Request.add_data method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   data(   u   selfu   datau   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   add_data.  s    u   Request.add_datac             C   s)   d } t  j | t d d ƒ|  j d  k	 S(   Nu&   Request.has_data method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   datau   None(   u   selfu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   has_data3  s    u   Request.has_datac             C   s#   d } t  j | t d d ƒ|  j S(   Nu&   Request.get_data method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   data(   u   selfu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_data8  s    u   Request.get_datac             C   s#   d } t  j | t d d ƒ|  j S(   Nu&   Request.get_type method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   type(   u   selfu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_type=  s    u   Request.get_typec             C   s#   d } t  j | t d d ƒ|  j S(   Nu&   Request.get_host method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   host(   u   selfu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_hostB  s    u   Request.get_hostc             C   s#   d } t  j | t d d ƒ|  j S(   Nu*   Request.get_selector method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   selector(   u   selfu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_selectorG  s    u   Request.get_selectorc             C   s#   d } t  j | t d d ƒ|  j S(   Nu-   Request.is_unverifiable method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   unverifiable(   u   selfu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   is_unverifiableL  s    u   Request.is_unverifiablec             C   s#   d } t  j | t d d ƒ|  j S(   Nu1   Request.get_origin_req_host method is deprecated.u
   stackleveli   (   u   warningsu   warnu   DeprecationWarningu   origin_req_host(   u   selfu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_origin_req_hostQ  s    u   Request.get_origin_req_hostc             C   sJ   |  j  d k r( |  j r( |  j |  _ n | |  _  |  j |  _ | |  _ d  S(   Nu   https(   u   typeu   _tunnel_hostu   hostu   full_urlu   selector(   u   selfu   hostu   type(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   set_proxyX  s
    	u   Request.set_proxyc             C   s   |  j  |  j k S(   N(   u   selectoru   full_url(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   has_proxy`  s    u   Request.has_proxyc             C   s   | |  j  | j ƒ  <d  S(   N(   u   headersu
   capitalize(   u   selfu   keyu   val(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   add_headerc  s    u   Request.add_headerc             C   s   | |  j  | j ƒ  <d  S(   N(   u   unredirected_hdrsu
   capitalize(   u   selfu   keyu   val(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   add_unredirected_headerg  s    u   Request.add_unredirected_headerc             C   s   | |  j  k p | |  j k S(   N(   u   headersu   unredirected_hdrs(   u   selfu   header_name(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   has_headerk  s    u   Request.has_headerc             C   s"   |  j  j | |  j j | | ƒ ƒ S(   N(   u   headersu   getu   unredirected_hdrs(   u   selfu   header_nameu   default(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   get_headero  s    	u   Request.get_headerc             C   s/   |  j  j ƒ  } | j |  j ƒ t | j ƒ  ƒ S(   N(   u   unredirected_hdrsu   copyu   updateu   headersu   listu   items(   u   selfu   hdrs(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   header_itemst  s    u   Request.header_itemsNF(   u   __name__u
   __module__u   __qualname__u   Noneu   Falseu   __init__u   _parseu
   get_methodu   get_full_urlu   add_datau   has_datau   get_datau   get_typeu   get_hostu   get_selectoru   is_unverifiableu   get_origin_req_hostu	   set_proxyu	   has_proxyu
   add_headeru   add_unredirected_headeru
   has_headeru
   get_headeru   header_items(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   Request   s*   	c             B   st   |  Ee  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d e j	 d	 d
 „ Z
 d d d „ Z d d „  Z d S(   u   OpenerDirectorc             C   sM   d t  } d | f g |  _ g  |  _ i  |  _ i  |  _ i  |  _ i  |  _ d  S(   Nu   Python-urllib/%su
   User-agent(   u   __version__u
   addheadersu   handlersu   handle_openu   handle_erroru   process_responseu   process_request(   u   selfu   client_version(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__z  s    
				u   OpenerDirector.__init__c             C   sÖ  t  | d ƒ s( t d t | ƒ ƒ ‚ n  d } xxt | ƒ D]j} | d k rS q; n  | j d ƒ } | d  | … } | | d d  … } | j d ƒ r
| j d ƒ | d } | | d d  … } y t | ƒ } Wn t k
 rä Yn X|  j	 j
 | i  ƒ }	 |	 |  j	 | <n] | d	 k r(| } |  j }	 n? | d
 k rF| } |  j }	 n! | d k r; | } |  j }	 n q; |	 j | g  ƒ }
 |
 r’t j |
 | ƒ n |
 j | ƒ d } q; W| rÒt j |  j | ƒ | j |  ƒ n  d  S(   Nu
   add_parentu%   expected BaseHandler instance, got %ru   redirect_requestu   do_openu
   proxy_openu   _i   u   erroru   openu   responseu   requestF(   u   redirect_requestu   do_openu
   proxy_openT(   u   hasattru	   TypeErroru   typeu   Falseu   diru   findu
   startswithu   intu
   ValueErroru   handle_erroru   getu   handle_openu   process_responseu   process_requestu
   setdefaultu   bisectu   insortu   appendu   Trueu   handlersu
   add_parent(   u   selfu   handleru   addedu   methu   iu   protocolu	   conditionu   ju   kindu   lookupu   handlers(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   add_handler…  sJ    
u   OpenerDirector.add_handlerc             C   s   d  S(   N(    (   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   close´  s    u   OpenerDirector.closec       	      G   sR   | j  | f  ƒ } x9 | D]1 } t | | ƒ } | | Œ  } | d  k	 r | Sq Wd  S(   N(   u   getu   getattru   None(	   u   selfu   chainu   kindu	   meth_nameu   argsu   handlersu   handleru   funcu   result(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _call_chain¸  s    u   OpenerDirector._call_chainc       
      C   sô   t  | t ƒ r! t | | ƒ } n | } | d  k	 r? | | _ n  | | _ | j } | d } x8 |  j j | g  ƒ D]! } t	 | | ƒ } | | ƒ } qq W|  j
 | | ƒ }	 | d } x; |  j j | g  ƒ D]$ } t	 | | ƒ } | | |	 ƒ }	 qÈ W|	 S(   Nu   _requestu	   _response(   u
   isinstanceu   stru   Requestu   Noneu   datau   timeoutu   typeu   process_requestu   getu   getattru   _openu   process_response(
   u   selfu   fullurlu   datau   timeoutu   requ   protocolu	   meth_nameu	   processoru   methu   response(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   openÃ  s"    		

u   OpenerDirector.openc             C   sp   |  j  |  j d d | ƒ } | r% | S| j } |  j  |  j | | d | ƒ } | rW | S|  j  |  j d d | ƒ S(   Nu   defaultu   default_openu   _openu   unknownu   unknown_open(   u   _call_chainu   handle_openu   type(   u   selfu   requ   datau   resultu   protocol(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _openß  s    	u   OpenerDirector._openc             G   s«   | d
 k r< |  j  d } | d } d | } d } | } n |  j  } | d } d } | | | f | } |  j | Œ  } | r | S| r§ | d d	 f | } |  j | Œ  Sd  S(   Nu   httpu   httpsi   u   http_error_%si   u   _errori    u   defaultu   http_error_default(   u   httpu   https(   u   handle_erroru   _call_chain(   u   selfu   protou   argsu   dictu	   meth_nameu   http_erru	   orig_argsu   result(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   errorî  s     

		
u   OpenerDirector.errorN(   u   __name__u
   __module__u   __qualname__u   __init__u   add_handleru   closeu   _call_chainu   Noneu   socketu   _GLOBAL_DEFAULT_TIMEOUTu   openu   _openu   error(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   OpenerDirectory  s   /c              G   sF  d d „  } t  ƒ  } t t t t t t t t g } t	 t
 j d ƒ rU | j t ƒ n  t ƒ  } xl | D]d } x[ |  D]S } | | ƒ r¦ t | | ƒ rÅ | j | ƒ qÅ qr t | | ƒ rr | j | ƒ qr qr Wqe Wx | D] } | j | ƒ qÔ Wx | D] } | j | ƒ  ƒ qò Wx3 |  D]+ } | | ƒ r1| ƒ  } n  | j | ƒ qW| S(   u*  Create an opener object from a list of handlers.

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

    If any of the handlers passed as arguments are subclasses of the
    default handlers, the default handlers will not be used.
    c             S   s   t  |  t ƒ p t |  d ƒ S(   Nu	   __bases__(   u
   isinstanceu   typeu   hasattr(   u   obj(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   isclass  s    u   build_opener.<locals>.isclassu   HTTPSConnection(   u   OpenerDirectoru   ProxyHandleru   UnknownHandleru   HTTPHandleru   HTTPDefaultErrorHandleru   HTTPRedirectHandleru
   FTPHandleru   FileHandleru   HTTPErrorProcessoru   hasattru   httpu   clientu   appendu   HTTPSHandleru   setu
   issubclassu   addu
   isinstanceu   removeu   add_handler(   u   handlersu   isclassu   openeru   default_classesu   skipu   klassu   checku   h(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   build_opener  s0    				c             B   s>   |  Ee  Z d  Z d Z d d „  Z d d „  Z d d „  Z d S(	   u   BaseHandleriô  c             C   s   | |  _  d  S(   N(   u   parent(   u   selfu   parent(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   add_parent0  s    u   BaseHandler.add_parentc             C   s   d  S(   N(    (   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   close3  s    u   BaseHandler.closec             C   s#   t  | d ƒ s d S|  j | j k  S(   Nu   handler_orderT(   u   hasattru   Trueu   handler_order(   u   selfu   other(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __lt__7  s    u   BaseHandler.__lt__N(   u   __name__u
   __module__u   __qualname__u   handler_orderu
   add_parentu   closeu   __lt__(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   BaseHandler-  s   c             B   s2   |  Ee  Z d  Z d Z d Z d d „  Z e Z d S(   u   HTTPErrorProcessoru   Process HTTP error responses.iè  c             C   sd   | j  | j | j ƒ  } } } d | k o7 d k  n s` |  j j d | | | | | ƒ } n  | S(   NiÈ   i,  u   http(   u   codeu   msgu   infou   parentu   error(   u   selfu   requestu   responseu   codeu   msgu   hdrs(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_responseD  s
     	u    HTTPErrorProcessor.http_responseN(   u   __name__u
   __module__u   __qualname__u   __doc__u   handler_orderu   http_responseu   https_response(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPErrorProcessor@  s   c             B   s    |  Ee  Z d  Z d d „  Z d S(   u   HTTPDefaultErrorHandlerc             C   s   t  | j | | | | ƒ ‚ d  S(   N(   u	   HTTPErroru   full_url(   u   selfu   requ   fpu   codeu   msgu   hdrs(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_defaultR  s    u*   HTTPDefaultErrorHandler.http_error_defaultN(   u   __name__u
   __module__u   __qualname__u   http_error_default(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPDefaultErrorHandlerQ  s   c             B   sL   |  Ee  Z d  Z d Z d Z d d „  Z d d „  Z e Z Z Z	 d Z
 d S(	   u   HTTPRedirectHandleri   i
   c       	         s¹   | j  ƒ  } | d k r$ | d k p9 | d k o9 | d k sZ t | j | | | | ƒ ‚ n  | j d d	 ƒ } d ‰  t ‡  f d d †  | j j ƒ  Dƒ ƒ } t | d | d | j d d ƒS(   u­  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  u   GETu   HEADu   POSTu    u   %20u   content-lengthu   content-typec             3   s3   |  ]) \ } } | j  ƒ  ˆ  k r | | f Vq d  S(   N(   u   lower(   u   .0u   ku   v(   u   CONTENT_HEADERS(    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   <genexpr>t  s    	u7   HTTPRedirectHandler.redirect_request.<locals>.<genexpr>u   headersu   origin_req_hostu   unverifiable(   i-  i.  i/  i3  (   u   GETu   HEAD(   i-  i.  i/  (   u   content-lengthu   content-typeT(
   u
   get_methodu	   HTTPErroru   full_urlu   replaceu   dictu   headersu   itemsu   Requestu   origin_req_hostu   True(	   u   selfu   requ   fpu   codeu   msgu   headersu   newurlu   mu
   newheaders(    (   u   CONTENT_HEADERSu3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   redirect_request]  s    
(		u$   HTTPRedirectHandler.redirect_requestc       
      C   s¶  d | k r | d } n d | k r2 | d } n d  St  | ƒ } | j d k rv t | | d | | f | | ƒ ‚ n  | j s˜ t | ƒ } d | d	 <n  t | ƒ } t | j | ƒ } |  j | | | | | | ƒ } | d  k rä d  St
 | d
 ƒ r[| j }	 | _ |	 j | d ƒ |  j k s3t |	 ƒ |  j k rot | j | |  j | | | ƒ ‚ qon i  }	 | _ | _ |	 j | d ƒ d |	 | <| j ƒ  | j ƒ  |  j j | d | j ƒS(   Nu   locationu   uriu   httpu   httpsu   ftpu    u+   %s - Redirection to url '%s' is not allowedu   /i   u   redirect_dicti    i   u   timeout(   u   httpu   httpsu   ftpu    (   u   urlparseu   schemeu	   HTTPErroru   pathu   listu
   urlunparseu   urljoinu   full_urlu   redirect_requestu   Noneu   hasattru   redirect_dictu   getu   max_repeatsu   lenu   max_redirectionsu   inf_msgu   readu   closeu   parentu   openu   timeout(
   u   selfu   requ   fpu   codeu   msgu   headersu   newurlu   urlpartsu   newu   visited(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_302  s<    	

u"   HTTPRedirectHandler.http_error_302uo   The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
N(   u   __name__u
   __module__u   __qualname__u   max_repeatsu   max_redirectionsu   redirect_requestu   http_error_302u   http_error_301u   http_error_303u   http_error_307u   inf_msg(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPRedirectHandlerU  s   "7c       	      C   sÖ   t  |  ƒ \ } } | j d ƒ s0 d } |  } nY | j d ƒ sR t d |  ƒ ‚ n  | j d d ƒ } | d k ry d } n  | d | … } t | ƒ \ } } | d k	 r¼ t | ƒ \ } } n
 d } } | | | | f S(   u3  Return (scheme, user, password, host/port) given a URL or an authority.

    If a URL is supplied, it must have an authority (host:port) component.
    According to RFC 3986, having an authority component means the URL must
    have two slashes after the scheme:

    >>> _parse_proxy('file:/ftp.example.com/')
    Traceback (most recent call last):
    ValueError: proxy URL with no authority: 'file:/ftp.example.com/'

    The first three items of the returned tuple may be None.

    Examples of authority parsing:

    >>> _parse_proxy('proxy.example.com')
    (None, None, None, 'proxy.example.com')
    >>> _parse_proxy('proxy.example.com:3128')
    (None, None, None, 'proxy.example.com:3128')

    The authority component may optionally include userinfo (assumed to be
    username:password):

    >>> _parse_proxy('joe:password@proxy.example.com')
    (None, 'joe', 'password', 'proxy.example.com')
    >>> _parse_proxy('joe:password@proxy.example.com:3128')
    (None, 'joe', 'password', 'proxy.example.com:3128')

    Same examples, but with URLs instead:

    >>> _parse_proxy('http://proxy.example.com/')
    ('http', None, None, 'proxy.example.com')
    >>> _parse_proxy('http://proxy.example.com:3128/')
    ('http', None, None, 'proxy.example.com:3128')
    >>> _parse_proxy('http://joe:password@proxy.example.com/')
    ('http', 'joe', 'password', 'proxy.example.com')
    >>> _parse_proxy('http://joe:password@proxy.example.com:3128')
    ('http', 'joe', 'password', 'proxy.example.com:3128')

    Everything after the authority is ignored:

    >>> _parse_proxy('ftp://joe:password@proxy.example.com/rubbish:3128')
    ('ftp', 'joe', 'password', 'proxy.example.com')

    Test for no trailing '/' case:

    >>> _parse_proxy('http://joe:password@proxy.example.com')
    ('http', 'joe', 'password', 'proxy.example.com')

    u   /u   //u   proxy URL with no authority: %ri   i   Niÿÿÿÿ(   u	   splittypeu
   startswithu   Noneu
   ValueErroru   findu	   splituseru   splitpasswd(	   u   proxyu   schemeu   r_schemeu	   authorityu   endu   userinfou   hostportu   useru   password(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _parse_proxy½  s    2		
u   _parse_proxyc             B   s5   |  Ee  Z d  Z d Z d d d „ Z d d „  Z d S(   u   ProxyHandlerid   c          	   C   sƒ   | d  k r t ƒ  } n  t | d ƒ s3 t d ƒ ‚ | |  _ x@ | j ƒ  D]2 \ } } t |  d | | | |  j d d „ ƒ qI Wd  S(   Nu   keysu   proxies must be a mappingu   %s_openc             S   s   | |  | | ƒ S(   N(    (   u   ru   proxyu   typeu   meth(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   <lambda>  s    u'   ProxyHandler.__init__.<locals>.<lambda>(   u   Noneu
   getproxiesu   hasattru   AssertionErroru   proxiesu   itemsu   setattru
   proxy_open(   u   selfu   proxiesu   typeu   url(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__	  s    	u   ProxyHandler.__init__c             C   s  | j  } t | ƒ \ } } } } | d  k r6 | } n  | j rR t | j ƒ rR d  S| r¯ | r¯ d t | ƒ t | ƒ f }	 t j |	 j ƒ  ƒ j	 d ƒ }
 | j
 d d |
 ƒ n  t | ƒ } | j | | ƒ | | k sã | d k rç d  S|  j j | d | j ƒSd  S(   Nu   %s:%su   asciiu   Proxy-authorizationu   Basic u   httpsu   timeout(   u   typeu   _parse_proxyu   Noneu   hostu   proxy_bypassu   unquoteu   base64u	   b64encodeu   encodeu   decodeu
   add_headeru	   set_proxyu   parentu   openu   timeout(   u   selfu   requ   proxyu   typeu	   orig_typeu
   proxy_typeu   useru   passwordu   hostportu	   user_passu   creds(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   proxy_open  s     		u   ProxyHandler.proxy_openN(   u   __name__u
   __module__u   __qualname__u   handler_orderu   Noneu   __init__u
   proxy_open(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   ProxyHandler  s   
c             B   sS   |  Ee  Z d  Z d d „  Z d d „  Z d d „  Z d d d „ Z d	 d
 „  Z d S(   u   HTTPPasswordMgrc             C   s   i  |  _  d  S(   N(   u   passwd(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__1  s    u   HTTPPasswordMgr.__init__c                sˆ   t  | t ƒ r | g } n  | ˆ j k r: i  ˆ j | <n  xG d D]? ‰  t ‡  ‡ f d d †  | Dƒ ƒ } | | f ˆ j | | <qA Wd  S(   Nc                s"   g  |  ] } ˆ j  | ˆ  ƒ ‘ q S(    (   u
   reduce_uri(   u   .0u   u(   u   default_portu   self(    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   <listcomp><  s   	 u0   HTTPPasswordMgr.add_password.<locals>.<listcomp>TF(   TF(   u
   isinstanceu   stru   passwdu   Trueu   Falseu   tuple(   u   selfu   realmu   uriu   useru   passwdu   reduced_uri(    (   u   default_portu   selfu3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   add_password4  s    u   HTTPPasswordMgr.add_passwordc       	      C   s€   |  j  j | i  ƒ } xd d D]\ } |  j | | ƒ } xA | j ƒ  D]3 \ } } x$ | D] } |  j | | ƒ rT | SqT WqA Wq Wd S(   NTF(   TF(   NN(   u   passwdu   getu   Trueu   Falseu
   reduce_uriu   itemsu	   is_suburiu   None(	   u   selfu   realmu   authuriu   domainsu   default_portu   reduced_authuriu   urisu   authinfou   uri(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   find_user_password?  s    u"   HTTPPasswordMgr.find_user_passwordc       
      C   sÈ   t  | ƒ } | d r= | d } | d } | d p7 d } n d
 } | } d } t | ƒ \ } } | r¾ | d
 k r¾ | d
 k	 r¾ i d d 6d d 6j | ƒ }	 |	 d
 k	 r¾ d	 | |	 f } q¾ n  | | f S(   u@   Accept authority or URI and extract only the authority and path.i   i    i   u   /iP   u   httpi»  u   httpsu   %s:%dN(   u   urlsplitu   Noneu	   splitportu   get(
   u   selfu   uriu   default_portu   partsu   schemeu	   authorityu   pathu   hostu   portu   dport(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   reduce_uriI  s     




	u   HTTPPasswordMgr.reduce_uric             C   si   | | k r d S| d | d k r( d St j | d | d f ƒ } t | ƒ t | d ƒ k re d Sd S(   uc   Check if test is below base in a URI tree

        Both args must be URIs in reduced form.
        i    i   TF(   u   Trueu   Falseu	   posixpathu   commonprefixu   len(   u   selfu   baseu   testu   common(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   is_suburi`  s    u   HTTPPasswordMgr.is_suburiNT(	   u   __name__u
   __module__u   __qualname__u   __init__u   add_passwordu   find_user_passwordu   Trueu
   reduce_uriu	   is_suburi(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPPasswordMgr/  s
   
c             B   s    |  Ee  Z d  Z d d „  Z d S(   u   HTTPPasswordMgrWithDefaultRealmc             C   sD   t  j |  | | ƒ \ } } | d  k	 r1 | | f St  j |  d  | ƒ S(   N(   u   HTTPPasswordMgru   find_user_passwordu   None(   u   selfu   realmu   authuriu   useru   password(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   find_user_passwordq  s
    
u2   HTTPPasswordMgrWithDefaultRealm.find_user_passwordN(   u   __name__u
   __module__u   __qualname__u   find_user_password(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPPasswordMgrWithDefaultRealmo  s   c             B   s\   |  Ee  Z d  Z e j d e j ƒ Z d
 d d „ Z d d „  Z	 d d „  Z
 d d	 „  Z d
 S(   u   AbstractBasicAuthHandleru1   (?:.*,)*[ 	]*([^ 	]+)[ 	]+realm=(["']?)([^"']*)\2c             C   s=   | d  k r t ƒ  } n  | |  _ |  j j |  _ d |  _ d  S(   Ni    (   u   Noneu   HTTPPasswordMgru   passwdu   add_passwordu   retried(   u   selfu   password_mgr(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__‡  s
    	u!   AbstractBasicAuthHandler.__init__c             C   s   d |  _  d  S(   Ni    (   u   retried(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   reset_retry_countŽ  s    u*   AbstractBasicAuthHandler.reset_retry_countc       
      C   s1  | j  | d  ƒ } |  j d k rB t | j ƒ  d d | d  ƒ ‚ n |  j d 7_ | r-| j ƒ  d } | j ƒ  d k rŒ t d | ƒ ‚ q-t j	 j
 | ƒ } | r-| j ƒ  \ } } } | d k rÛ t j d
 t d ƒ n  | j ƒ  d k r*|  j | | | ƒ }	 |	 r#|	 j d k r#d |  _ n  |	 Sq-n  d  S(   Ni   i‘  u   basic auth failedi   i    u   basicuD   AbstractBasicAuthHandler does not support the following scheme: '%s'u   "u   'u   Basic Auth Realm was unquotedi   (   u   "u   '(   u   getu   Noneu   retriedu	   HTTPErroru   get_full_urlu   splitu   loweru
   ValueErroru   AbstractBasicAuthHandleru   rxu   searchu   groupsu   warningsu   warnu   UserWarningu   retry_http_basic_authu   code(
   u   selfu   authrequ   hostu   requ   headersu   schemeu   mou   quoteu   realmu   response(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_auth_reqed‘  s*    	u.   AbstractBasicAuthHandler.http_error_auth_reqedc             C   s¯   |  j  j | | ƒ \ } } | d  k	 r§ d | | f } d t j | j ƒ  ƒ j d ƒ } | j j |  j	 d  ƒ | k r{ d  S| j
 |  j	 | ƒ |  j j | d | j ƒSd  Sd  S(   Nu   %s:%su   Basic u   asciiu   timeout(   u   passwdu   find_user_passwordu   Noneu   base64u	   b64encodeu   encodeu   decodeu   headersu   getu   auth_headeru   add_unredirected_headeru   parentu   openu   timeout(   u   selfu   hostu   requ   realmu   useru   pwu   rawu   auth(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retry_http_basic_auth±  s    "u.   AbstractBasicAuthHandler.retry_http_basic_authN(   u   __name__u
   __module__u   __qualname__u   reu   compileu   Iu   rxu   Noneu   __init__u   reset_retry_countu   http_error_auth_reqedu   retry_http_basic_auth(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   AbstractBasicAuthHandlery  s   	 c             B   s&   |  Ee  Z d  Z d Z d d „  Z d S(   u   HTTPBasicAuthHandleru   Authorizationc             C   s/   | j  } |  j d | | | ƒ } |  j ƒ  | S(   Nu   www-authenticate(   u   full_urlu   http_error_auth_reqedu   reset_retry_count(   u   selfu   requ   fpu   codeu   msgu   headersu   urlu   response(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_401Â  s
    		
u#   HTTPBasicAuthHandler.http_error_401N(   u   __name__u
   __module__u   __qualname__u   auth_headeru   http_error_401(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPBasicAuthHandler¾  s   c             B   s&   |  Ee  Z d  Z d Z d d „  Z d S(   u   ProxyBasicAuthHandleru   Proxy-authorizationc             C   s/   | j  } |  j d | | | ƒ } |  j ƒ  | S(   Nu   proxy-authenticate(   u   hostu   http_error_auth_reqedu   reset_retry_count(   u   selfu   requ   fpu   codeu   msgu   headersu	   authorityu   response(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_407Î  s
    		
u$   ProxyBasicAuthHandler.http_error_407N(   u   __name__u
   __module__u   __qualname__u   auth_headeru   http_error_407(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   ProxyBasicAuthHandlerÊ  s   c             B   sw   |  Ee  Z d  Z d d d „ Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z	 d d „  Z
 d d „  Z d S(   u   AbstractDigestAuthHandlerc             C   sO   | d  k r t ƒ  } n  | |  _ |  j j |  _ d |  _ d |  _ d  |  _ d  S(   Ni    (   u   Noneu   HTTPPasswordMgru   passwdu   add_passwordu   retriedu   nonce_countu
   last_nonce(   u   selfu   passwd(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__é  s    			u"   AbstractDigestAuthHandler.__init__c             C   s   d |  _  d  S(   Ni    (   u   retried(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   reset_retry_countò  s    u+   AbstractDigestAuthHandler.reset_retry_countc             C   s²   | j  | d  ƒ } |  j d k r? t | j d d | d  ƒ ‚ n |  j d 7_ | r® | j ƒ  d } | j ƒ  d k r† |  j | | ƒ S| j ƒ  d k r® t d | ƒ ‚ q® n  d  S(	   Ni   i‘  u   digest auth failedi   i    u   digestu   basicuE   AbstractDigestAuthHandler does not support the following scheme: '%s'(	   u   getu   Noneu   retriedu	   HTTPErroru   full_urlu   splitu   loweru   retry_http_digest_authu
   ValueError(   u   selfu   auth_headeru   hostu   requ   headersu   authrequ   scheme(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_auth_reqedõ  s    u/   AbstractDigestAuthHandler.http_error_auth_reqedc             C   s­   | j  d d ƒ \ } } t t d  t | ƒ ƒ ƒ } |  j | | ƒ } | r© d | } | j j |  j d  ƒ | k rw d  S| j	 |  j | ƒ |  j
 j | d | j ƒ} | Sd  S(   Nu    i   u	   Digest %su   timeout(   u   splitu   parse_keqv_listu   filteru   Noneu   parse_http_listu   get_authorizationu   headersu   getu   auth_headeru   add_unredirected_headeru   parentu   openu   timeout(   u   selfu   requ   authu   tokenu	   challengeu   chalu   auth_valu   resp(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retry_http_digest_auth	  s    
u0   AbstractDigestAuthHandler.retry_http_digest_authc             C   sX   d |  j  | t j ƒ  f } | j d ƒ t d ƒ } t j | ƒ j ƒ  } | d  d … S(   Nu	   %s:%s:%s:u   asciii   i   (   u   nonce_countu   timeu   ctimeu   encodeu   _randombytesu   hashlibu   sha1u	   hexdigest(   u   selfu   nonceu   su   bu   dig(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   get_cnonce  s    u$   AbstractDigestAuthHandler.get_cnoncec             C   s_  yK | d } | d } | j  d ƒ } | j  d d ƒ } | j  d d  ƒ } Wn t k
 rc d  SYn X|  j | ƒ \ } }	 | d  k r‰ d  S|  j j | | j ƒ \ }
 } |
 d  k r· d  S| j d  k	 rÞ |  j | j | ƒ } n d  } d |
 | | f } d | j	 ƒ  | j
 f } | d	 k r¢| |  j k r=|  j d
 7_ n d
 |  _ | |  _ d |  j } |  j | ƒ } d | | | | | | ƒ f } |	 | | ƒ | ƒ } nD | d  k rÖ|	 | | ƒ d | | | ƒ f ƒ } n t d | ƒ ‚ d |
 | | | j
 | f } | r| d | 7} n  | r0| d | 7} n  | d | 7} | r[| d | | f 7} n  | S(   Nu   realmu   nonceu   qopu	   algorithmu   MD5u   opaqueu   %s:%s:%su   %s:%su   authi   u   %08xu   %s:%s:%s:%s:%su   qop '%s' is not supported.u>   username="%s", realm="%s", nonce="%s", uri="%s", response="%s"u   , opaque="%s"u   , digest="%s"u   , algorithm="%s"u   , qop=auth, nc=%s, cnonce="%s"(   u   getu   Noneu   KeyErroru   get_algorithm_implsu   passwdu   find_user_passwordu   full_urlu   datau   get_entity_digestu
   get_methodu   selectoru
   last_nonceu   nonce_countu
   get_cnonceu   URLError(   u   selfu   requ   chalu   realmu   nonceu   qopu	   algorithmu   opaqueu   Hu   KDu   useru   pwu   entdigu   A1u   A2u   ncvalueu   cnonceu   noncebitu   respdigu   base(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_authorization   sV    

			(
u+   AbstractDigestAuthHandler.get_authorizationc                sR   | d k r d d „  ‰  n | d k r6 d d „  ‰  n  ‡  f d d †  } ˆ  | f S(   Nu   MD5c             S   s   t  j |  j d ƒ ƒ j ƒ  S(   Nu   ascii(   u   hashlibu   md5u   encodeu	   hexdigest(   u   x(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   <lambda>_  s    u?   AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>u   SHAc             S   s   t  j |  j d ƒ ƒ j ƒ  S(   Nu   ascii(   u   hashlibu   sha1u   encodeu	   hexdigest(   u   x(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   <lambda>a  s    c                s   ˆ  d |  | f ƒ S(   Nu   %s:%s(    (   u   su   d(   u   H(    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   <lambda>c  s    (    (   u   selfu	   algorithmu   KD(    (   u   Hu3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_algorithm_impls\  s    u-   AbstractDigestAuthHandler.get_algorithm_implsc             C   s   d  S(   N(   u   None(   u   selfu   datau   chal(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_entity_digestf  s    u+   AbstractDigestAuthHandler.get_entity_digestN(   u   __name__u
   __module__u   __qualname__u   Noneu   __init__u   reset_retry_countu   http_error_auth_reqedu   retry_http_digest_authu
   get_cnonceu   get_authorizationu   get_algorithm_implsu   get_entity_digest(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   AbstractDigestAuthHandlerÞ  s   	<
c             B   s2   |  Ee  Z d  Z d Z d Z d Z d d „  Z d S(   u   HTTPDigestAuthHandleru¨   An authentication protocol defined by RFC 2069

    Digest authentication improves on basic authentication because it
    does not transmit passwords in the clear.
    u   Authorizationiê  c             C   s9   t  | j ƒ d } |  j d | | | ƒ } |  j ƒ  | S(   Ni   u   www-authenticate(   u   urlparseu   full_urlu   http_error_auth_reqedu   reset_retry_count(   u   selfu   requ   fpu   codeu   msgu   headersu   hostu   retry(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_401u  s
    	
u$   HTTPDigestAuthHandler.http_error_401N(   u   __name__u
   __module__u   __qualname__u   __doc__u   auth_headeru   handler_orderu   http_error_401(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPDigestAuthHandlerk  s   c             B   s,   |  Ee  Z d  Z d Z d Z d d „  Z d S(   u   ProxyDigestAuthHandleru   Proxy-Authorizationiê  c             C   s/   | j  } |  j d | | | ƒ } |  j ƒ  | S(   Nu   proxy-authenticate(   u   hostu   http_error_auth_reqedu   reset_retry_count(   u   selfu   requ   fpu   codeu   msgu   headersu   hostu   retry(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_407‚  s
    		
u%   ProxyDigestAuthHandler.http_error_407N(   u   __name__u
   __module__u   __qualname__u   auth_headeru   handler_orderu   http_error_407(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   ProxyDigestAuthHandler}  s   c             B   sG   |  Ee  Z d  Z d d d „ Z d d „  Z d d „  Z d d	 „  Z d
 S(   u   AbstractHTTPHandleri    c             C   s   | |  _  d  S(   N(   u   _debuglevel(   u   selfu
   debuglevel(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__‹  s    u   AbstractHTTPHandler.__init__c             C   s   | |  _  d  S(   N(   u   _debuglevel(   u   selfu   level(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   set_http_debuglevelŽ  s    u'   AbstractHTTPHandler.set_http_debuglevelc             C   sµ  | j  } | s t d ƒ ‚ n  | j d  k	 r| j } t | t ƒ rZ d } t | ƒ ‚ n  | j d ƒ s| | j d d ƒ n  | j d ƒ sy t	 | ƒ } WnC t k
 rà t | t
 j ƒ rÜ t d t | ƒ | f ƒ ‚ n  YqX| j d d t | ƒ | j ƒ qn  | } | j ƒ  rDt | j ƒ \ } } t | ƒ \ } }	 n  | j d ƒ sf| j d | ƒ n  xH |  j j D]: \ }
 } |
 j ƒ  }
 | j |
 ƒ ss| j |
 | ƒ qsqsW| S(	   Nu   no host givenuL   POST data should be bytes or an iterable of bytes. It cannot be of type str.u   Content-typeu!   application/x-www-form-urlencodedu   Content-lengthuB   Content-Length should be specified for iterable data of type %r %ru   %du   Host(   u   hostu   URLErroru   datau   Noneu
   isinstanceu   stru	   TypeErroru
   has_headeru   add_unredirected_headeru
   memoryviewu   collectionsu   Iterableu
   ValueErroru   typeu   lenu   itemsizeu	   has_proxyu	   splittypeu   selectoru	   splithostu   parentu
   addheadersu
   capitalize(   u   selfu   requestu   hostu   datau   msgu   mvu   sel_hostu   schemeu   selu   sel_pathu   nameu   value(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   do_request_‘  sB    		
	!u   AbstractHTTPHandler.do_request_c       
         s£  | j  } | s t d ƒ ‚ n  | | d | j | } t | j ƒ ‰  ˆ  j t ‡  f d d †  | j j ƒ  Dƒ ƒ ƒ d ˆ  d <t d d „  ˆ  j ƒ  Dƒ ƒ ‰  | j rï i  } d } | ˆ  k rÖ ˆ  | | | <ˆ  | =n  | j	 | j d	 | ƒn  y& | j
 | j ƒ  | j | j ˆ  ƒ Wn> t j k
 rU} z | j ƒ  t | ƒ ‚ WYd
 d
 } ~ Xn/ X| j ƒ  }	 | j r„| j j ƒ  d
 | _ n  | j ƒ  |	 _ |	 j |	 _ |	 S(   u•   Return an HTTPResponse object for the request, using http_class.

        http_class must implement the HTTPConnection API from http.client.
        u   no host givenu   timeoutc             3   s-   |  ]# \ } } | ˆ  k r | | f Vq d  S(   N(    (   u   .0u   ku   v(   u   headers(    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   <genexpr>Æ  s    	u.   AbstractHTTPHandler.do_open.<locals>.<genexpr>u   closeu
   Connectionc             s   s'   |  ] \ } } | j  ƒ  | f Vq d  S(   N(   u   title(   u   .0u   nameu   val(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   <genexpr>Ó  s    u   Proxy-Authorizationu   headersN(   u   hostu   URLErroru   timeoutu   dictu   unredirected_hdrsu   updateu   headersu   itemsu   _tunnel_hostu
   set_tunnelu   requestu
   get_methodu   selectoru   datau   socketu   erroru   closeu   getresponseu   socku   Noneu   get_full_urlu   urlu   reasonu   msg(
   u   selfu
   http_classu   requ   http_conn_argsu   hostu   hu   tunnel_headersu   proxy_auth_hdru   erru   r(    (   u   headersu3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   do_open¹  s6    	/
	
&
	u   AbstractHTTPHandler.do_openN(   u   __name__u
   __module__u   __qualname__u   __init__u   set_http_debuglevelu   do_request_u   do_open(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   AbstractHTTPHandler‰  s   (u   AbstractHTTPHandlerc             B   s)   |  Ee  Z d  Z d d „  Z e j Z d S(   u   HTTPHandlerc             C   s   |  j  t j j | ƒ S(   N(   u   do_openu   httpu   clientu   HTTPConnection(   u   selfu   req(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   http_openù  s    u   HTTPHandler.http_openN(   u   __name__u
   __module__u   __qualname__u	   http_openu   AbstractHTTPHandleru   do_request_u   http_request(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPHandler÷  s   u   HTTPSConnectionc             B   s>   |  Ee  Z d  Z d d d d d „ Z d d „  Z e j Z d S(   u   HTTPSHandleri    c             C   s&   t  j |  | ƒ | |  _ | |  _ d  S(   N(   u   AbstractHTTPHandleru   __init__u   _contextu   _check_hostname(   u   selfu
   debuglevelu   contextu   check_hostname(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__  s    	u   HTTPSHandler.__init__c             C   s(   |  j  t j j | d |  j d |  j ƒS(   Nu   contextu   check_hostname(   u   do_openu   httpu   clientu   HTTPSConnectionu   _contextu   _check_hostname(   u   selfu   req(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   https_open  s    u   HTTPSHandler.https_openN(	   u   __name__u
   __module__u   __qualname__u   Noneu   __init__u
   https_openu   AbstractHTTPHandleru   do_request_u   https_request(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPSHandler   s   u   HTTPSHandlerc             B   sG   |  Ee  Z d  Z d d d „ Z d d „  Z d d „  Z e Z e Z d S(   u   HTTPCookieProcessorc             C   s7   d d  l  } | d  k r* | j j ƒ  } n  | |  _ d  S(   Ni    (   u   http.cookiejaru   Noneu	   cookiejaru	   CookieJar(   u   selfu	   cookiejaru   http(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__  s    u   HTTPCookieProcessor.__init__c             C   s   |  j  j | ƒ | S(   N(   u	   cookiejaru   add_cookie_header(   u   selfu   request(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_request  s    u    HTTPCookieProcessor.http_requestc             C   s   |  j  j | | ƒ | S(   N(   u	   cookiejaru   extract_cookies(   u   selfu   requestu   response(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_response  s    u!   HTTPCookieProcessor.http_responseN(	   u   __name__u
   __module__u   __qualname__u   Noneu   __init__u   http_requestu   http_responseu   https_requestu   https_response(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   HTTPCookieProcessor  s
   c             B   s    |  Ee  Z d  Z d d „  Z d S(   u   UnknownHandlerc             C   s   | j  } t d | ƒ ‚ d  S(   Nu   unknown url type: %s(   u   typeu   URLError(   u   selfu   requ   type(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   unknown_open"  s    	u   UnknownHandler.unknown_openN(   u   __name__u
   __module__u   __qualname__u   unknown_open(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   UnknownHandler!  s   c             C   sp   i  } xc |  D][ } | j  d d ƒ \ } } | d d k r^ | d d k r^ | d d … } n  | | | <q W| S(   u>   Parse list of key=value strings where keys are not duplicated.u   =i   i    u   "iÿÿÿÿiÿÿÿÿ(   u   split(   u   lu   parsedu   eltu   ku   v(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   parse_keqv_list&  s     u   parse_keqv_listc             C   sñ   g  } d } d } } x± |  D]© } | r? | | 7} d } q n  | r‚ | d k r] d } q n | d k rr d } n  | | 7} q n  | d k r§ | j | ƒ d } q n  | d k r¼ d } n  | | 7} q W| rà | j | ƒ n  d d „  | Dƒ S(	   up  Parse lists as described by RFC 2068 Section 2.

    In particular, parse comma-separated lists where the elements of
    the list may include quoted-strings.  A quoted-string could
    contain a comma.  A non-quoted string could have quotes in the
    middle.  Neither commas nor quotes count if they are escaped.
    Only double-quotes count, not single-quotes.
    u    u   \u   "u   ,c             S   s   g  |  ] } | j  ƒ  ‘ q S(    (   u   strip(   u   .0u   part(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   <listcomp>Y  s   	 u#   parse_http_list.<locals>.<listcomp>FT(   u   Falseu   Trueu   append(   u   su   resu   partu   escapeu   quoteu   cur(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   parse_http_list0  s4    	

	
	u   parse_http_listc             B   s>   |  Ee  Z d  Z d d „  Z d Z d d „  Z d d „  Z d S(   u   FileHandlerc             C   s…   | j  } | d  d … d k rt | d d … d k rt | j rt | j d k rt | j |  j ƒ  k	 r t d ƒ ‚ q n |  j | ƒ Sd  S(   Ni   u   //i   u   /u	   localhostu-   file:// scheme is supported only on localhost(   u   selectoru   hostu	   get_namesu   URLErroru   open_local_file(   u   selfu   requ   url(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   file_open]  s    	5u   FileHandler.file_openc             C   s}   t  j d  k rv y7 t t j d ƒ d t j t j ƒ  ƒ d ƒ t  _ Wqv t j k
 rr t j d ƒ f t  _ Yqv Xn  t  j S(   Nu	   localhosti   (	   u   FileHandleru   namesu   Noneu   tupleu   socketu   gethostbyname_exu   gethostnameu   gaierroru   gethostbyname(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   get_namesh  s    $u   FileHandler.get_namesc             C   sa  d d  l  } d d  l } | j } | j } t | ƒ } yç t j | ƒ } | j } | j j	 | j
 d d ƒ}	 | j | ƒ d }
 | j d |
 p‘ d | |	 f ƒ } | r¼ t | ƒ \ } } n  | sâ | rt | ƒ |  j ƒ  k r| rù d | | } n
 d | } t t | d ƒ | | ƒ SWn1 t k
 rP} z t | ƒ ‚ WYd  d  } ~ Xn Xt d ƒ ‚ d  S(	   Ni    u   usegmtu6   Content-type: %s
Content-length: %d
Last-modified: %s
u
   text/plainu   file://u   rbu   file not on local hostT(   u   email.utilsu	   mimetypesu   hostu   selectoru   url2pathnameu   osu   statu   st_sizeu   utilsu
   formatdateu   st_mtimeu   Trueu
   guess_typeu   message_from_stringu	   splitportu   _safe_gethostbynameu	   get_namesu
   addinfourlu   openu   OSErroru   URLError(   u   selfu   requ   emailu	   mimetypesu   hostu   filenameu	   localfileu   statsu   sizeu   modifiedu   mtypeu   headersu   portu   origurlu   exp(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   open_local_files  s0    			
u   FileHandler.open_local_fileN(   u   __name__u
   __module__u   __qualname__u	   file_openu   Noneu   namesu	   get_namesu   open_local_file(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   FileHandler[  s   
c             C   s1   y t  j |  ƒ SWn t  j k
 r, d  SYn Xd  S(   N(   u   socketu   gethostbynameu   gaierroru   None(   u   host(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _safe_gethostbyname  s    u   _safe_gethostbynamec             B   s,   |  Ee  Z d  Z d d „  Z d d „  Z d S(   u
   FTPHandlerc          "   C   sú  d d  l  } d d  l } | j } | s6 t d ƒ ‚ n  t | ƒ \ } } | d  k r` | j } n t | ƒ } t | ƒ \ } } | r™ t	 | ƒ \ } } n d  } t
 | ƒ } | p´ d } | pÀ d } y t j | ƒ } Wn4 t j k
 r} z t | ƒ ‚ WYd  d  } ~ Xn Xt | j ƒ \ }	 }
 |	 j d ƒ } t t t
 | ƒ ƒ } | d  d … | d } } | r…| d r…| d d  … } n  y|  j | | | | | | j ƒ } | rµd p¸d } xM |
 D]E } t | ƒ \ } } | j ƒ  d k rÂ| d k rÂ| j ƒ  } qÂqÂW| j | | ƒ \ } } d } | j | j ƒ d } | rV| d | 7} n  | d  k	 r| d k r| d | 7} n  t j | ƒ } t | | | j ƒ SWnQ | j k
 rõ} z. t d | ƒ } | j t  j! ƒ  d ƒ ‚ WYd  d  } ~ Xn Xd  S(   Ni    u   ftp error: no host givenu    u   /i   u   Iu   Du   typeu   au   Au   iu   du   Content-type: %s
u   Content-length: %d
u   ftp error: %ri   iÿÿÿÿiÿÿÿÿ(   u   au   Au   iu   Iu   du   D("   u   ftplibu	   mimetypesu   hostu   URLErroru	   splitportu   Noneu   FTP_PORTu   intu	   splituseru   splitpasswdu   unquoteu   socketu   gethostbynameu   erroru	   splitattru   selectoru   splitu   listu   mapu   connect_ftpu   timeoutu
   splitvalueu   loweru   upperu   retrfileu
   guess_typeu   full_urlu   emailu   message_from_stringu
   addinfourlu
   all_errorsu   with_tracebacku   sysu   exc_info(   u   selfu   requ   ftplibu	   mimetypesu   hostu   portu   useru   passwdu   msgu   pathu   attrsu   dirsu   fileu   fwu   typeu   attru   valueu   fpu   retrlenu   headersu   mtypeu   expu   exc(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   ftp_open–  s\    	!u   FTPHandler.ftp_openc          	   C   s   t  | | | | | | d d ƒS(   Nu
   persistentF(   u
   ftpwrapperu   False(   u   selfu   useru   passwdu   hostu   portu   dirsu   timeout(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   connect_ftpË  s    u   FTPHandler.connect_ftpN(   u   __name__u
   __module__u   __qualname__u   ftp_openu   connect_ftp(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   FTPHandler•  s   5c             B   s\   |  Ee  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d S(   u   CacheFTPHandlerc             C   s1   i  |  _  i  |  _ d |  _ d |  _ d |  _ d  S(   Ni    i<   i   (   u   cacheu   timeoutu   soonestu   delayu	   max_conns(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__Ò  s
    				u   CacheFTPHandler.__init__c             C   s   | |  _  d  S(   N(   u   delay(   u   selfu   t(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   setTimeoutÙ  s    u   CacheFTPHandler.setTimeoutc             C   s   | |  _  d  S(   N(   u	   max_conns(   u   selfu   m(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   setMaxConnsÜ  s    u   CacheFTPHandler.setMaxConnsc             C   s›   | | | d j  | ƒ | f } | |  j k rJ t j ƒ  |  j |  j | <n< t | | | | | | ƒ |  j | <t j ƒ  |  j |  j | <|  j ƒ  |  j | S(   Nu   /(   u   joinu   cacheu   timeu   delayu   timeoutu
   ftpwrapperu   check_cache(   u   selfu   useru   passwdu   hostu   portu   dirsu   timeoutu   key(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   connect_ftpß  s    
u   CacheFTPHandler.connect_ftpc             C   s   t  j  ƒ  } |  j | k rx xZ t |  j j ƒ  ƒ D]@ \ } } | | k  r1 |  j | j ƒ  |  j | =|  j | =q1 q1 Wn  t t |  j j ƒ  ƒ ƒ |  _ t	 |  j ƒ |  j
 k rxJ t |  j j ƒ  ƒ D]3 \ } } | |  j k rÄ |  j | =|  j | =PqÄ qÄ Wt t |  j j ƒ  ƒ ƒ |  _ n  d  S(   N(   u   timeu   soonestu   listu   timeoutu   itemsu   cacheu   closeu   minu   valuesu   lenu	   max_conns(   u   selfu   tu   ku   v(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   check_cacheê  s    "
"

u   CacheFTPHandler.check_cachec             C   sB   x! |  j  j ƒ  D] } | j ƒ  q W|  j  j ƒ  |  j j ƒ  d  S(   N(   u   cacheu   valuesu   closeu   clearu   timeout(   u   selfu   conn(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   clear_cacheþ  s    u   CacheFTPHandler.clear_cacheN(	   u   __name__u
   __module__u   __qualname__u   __init__u
   setTimeoutu   setMaxConnsu   connect_ftpu   check_cacheu   clear_cache(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   CacheFTPHandlerÏ  s   i
   u   nt(   u   url2pathnameu   pathname2urlc             C   s
   t  |  ƒ S(   u   OS-specific conversion from a relative URL of the 'file' scheme
        to a file system path; not recommended for general use.(   u   unquote(   u   pathname(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   url2pathname  s    c             C   s
   t  |  ƒ S(   u   OS-specific conversion from a file system path to a relative URL
        of the 'file' scheme; not recommended for general use.(   u   quote(   u   pathname(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   pathname2url  s    c             B   s8  |  Ee  Z d  Z d Z d) Z d e Z d) d d „ Z d d „  Z	 d d „  Z
 d	 d
 „  Z d d „  Z d) d d „ Z d) d d „ Z d) d d „ Z d) d) d) d d „ Z d d „  Z d) d d „ Z d) d d „ Z d d „  Z e rd d „  Z d) d d  „ Z n  d! d" „  Z d# d$ „  Z d% d& „  Z d) d' d( „ Z d) S(*   u	   URLopeneru,  Class to open URLs.
    This is a class rather than just a subroutine because we may need
    more than one set of global protocol-specific options.
    Note -- this is a base class for those who don't want the
    automatic handling of errors type 302 (relocated) and 401
    (authorization needed).u   Python-urllib/%sc             K   sÍ   d i |  j  j d 6} t j | t d d ƒ| d  k rE t ƒ  } n  t | d ƒ s` t d ƒ ‚ | |  _	 | j
 d ƒ |  _ | j
 d ƒ |  _ d	 |  j f g |  _ g  |  _ t j |  _ d  |  _ t |  _ d  S(
   NuW   %(class)s style of invoking requests is deprecated. Use newer urlopen functions/methodsu   classu
   stackleveli   u   keysu   proxies must be a mappingu   key_fileu	   cert_fileu
   User-Agent(   u	   __class__u   __name__u   warningsu   warnu   DeprecationWarningu   Noneu
   getproxiesu   hasattru   AssertionErroru   proxiesu   getu   key_fileu	   cert_fileu   versionu
   addheadersu   _URLopener__tempfilesu   osu   unlinku   _URLopener__unlinku	   tempcacheu   ftpcache(   u   selfu   proxiesu   x509u   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__,  s    			u   URLopener.__init__c             C   s   |  j  ƒ  d  S(   N(   u   close(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __del__F  s    u   URLopener.__del__c             C   s   |  j  ƒ  d  S(   N(   u   cleanup(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   closeI  s    u   URLopener.closec             C   ss   |  j  rV x7 |  j  D], } y |  j | ƒ Wq t k
 r> Yq Xq W|  j  d  d  … =n  |  j ro |  j j ƒ  n  d  S(   N(   u   _URLopener__tempfilesu   _URLopener__unlinku   OSErroru	   tempcacheu   clear(   u   selfu   file(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   cleanupL  s    			u   URLopener.cleanupc             G   s   |  j  j | ƒ d S(   ud   Add a header to be used by the HTTP interface only
        e.g. u.addheader('Accept', 'sound/basic')N(   u
   addheadersu   append(   u   selfu   args(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   addheaderZ  s    u   URLopener.addheaderc             C   sâ  t  t | ƒ ƒ } t | d d ƒ} |  j rn | |  j k rn |  j | \ } } t | d ƒ } t | | | ƒ St | ƒ \ } } | s d } n  | |  j k rÞ |  j | } t | ƒ \ } }	 t |	 ƒ \ }
 } |
 | f } n d
 } d | } | |  _
 | j d d ƒ } t |  | ƒ sD| r1|  j | | | ƒ S|  j | | ƒ Sn  y9 | d
 k rft |  | ƒ | ƒ St |  | ƒ | | ƒ SWn^ t k
 r”‚  YnJ t j k
 rÝ} z' t d | ƒ j t j ƒ  d	 ƒ ‚ WYd
 d
 } ~ Xn Xd
 S(   u6   Use URLopener().open(file) instead of open(file, 'r').u   safeu   %/:=&?~#+!$,;'@()*[]|u   rbu   fileu   open_u   -u   _u   socket errori   N(   u   unwrapu   to_bytesu   quoteu	   tempcacheu   openu
   addinfourlu	   splittypeu   proxiesu	   splithostu   Noneu   typeu   replaceu   hasattru   open_unknown_proxyu   open_unknownu   getattru	   HTTPErroru   socketu   erroru   IOErroru   with_tracebacku   sysu   exc_info(   u   selfu   fullurlu   datau   filenameu   headersu   fpu   urltypeu   urlu   proxyu	   proxyhostu   hostu   selectoru   nameu   msg(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   open`  s<    	
	u   URLopener.openc             C   s(   t  | ƒ \ } } t d d | ƒ ‚ d S(   u/   Overridable interface to open unknown URL type.u	   url erroru   unknown url typeN(   u	   splittypeu   IOError(   u   selfu   fullurlu   datau   typeu   url(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   open_unknown„  s    u   URLopener.open_unknownc             C   s,   t  | ƒ \ } } t d d | | ƒ ‚ d S(   u/   Overridable interface to open unknown URL type.u	   url erroru   invalid proxy for %sN(   u	   splittypeu   IOError(   u   selfu   proxyu   fullurlu   datau   typeu   url(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   open_unknown_proxy‰  s    u   URLopener.open_unknown_proxyc          '   C   só  t  t | ƒ ƒ } |  j r5 | |  j k r5 |  j | St | ƒ \ } } | d k rÔ | sf | d k rÔ yC |  j | ƒ } | j ƒ  } | j ƒ  t t	 | ƒ d ƒ | f SWqÔ t
 k
 rÐ }	 z WYd d }	 ~	 XqÔ Xn  |  j | | ƒ } zÇ| j ƒ  }
 | rt | d ƒ } n³ d d l } t | ƒ \ } } t	 | p7d ƒ \ } } t | pOd ƒ \ } } t | pgd ƒ \ } } t j j | ƒ d } | j | ƒ \ } } |  j j | ƒ t j | d ƒ } zÞ | |
 f } |  j d k	 rî| |  j | <n  d } d } d } d } d	 |
 k r%t |
 d
 ƒ } n  | r>| | | | ƒ n  x\ | j | ƒ } | sZPn  | t | ƒ 7} | j | ƒ | d 7} | rA| | | | ƒ qAqAWd | j ƒ  XWd | j ƒ  X| d k rï| | k  rït d | | f | ƒ ‚ n  | S(   ut   retrieve(url) returns (filename, headers) for a local object
        or (tempfilename, headers) for a remote object.u   filei   Nu   wbi    u    i   i   u   content-lengthu   Content-Lengthu1   retrieval incomplete: got only %i out of %i bytesi    iÿÿÿÿ(   u   unwrapu   to_bytesu	   tempcacheu	   splittypeu   Noneu   open_local_fileu   infou   closeu   url2pathnameu	   splithostu   IOErroru   openu   tempfileu
   splitqueryu	   splitattru   osu   pathu   splitextu   mkstempu   _URLopener__tempfilesu   appendu   fdopenu   intu   readu   lenu   writeu   ContentTooShortError(   u   selfu   urlu   filenameu
   reporthooku   datau   typeu   url1u   fpu   hdrsu   msgu   headersu   tfpu   tempfileu   garbageu   pathu   suffixu   fdu   resultu   bsu   sizeu   readu   blocknumu   block(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retrieve  sl    

u   URLopener.retrievec             C   s  d } d } t | t ƒ r] t | ƒ \ } } | rT t | ƒ \ } } t | ƒ } n  | } nµ | \ } } t | ƒ \ } } t | ƒ \ }	 }
 |
 } d } |	 j ƒ  d k r´ d } n^ t |
 ƒ \ } }
 | rá t | ƒ \ } } n  | rý d |	 | |
 f } n  t | ƒ r| } n  | s*t	 d d ƒ ‚ n  | r]t | ƒ } t
 j | j ƒ  ƒ j d ƒ } n d } | r–t | ƒ } t
 j | j ƒ  ƒ j d ƒ } n d } | | ƒ } i  } | rÅd | | d <n  | rÜd | | d <n  | rï| | d	 <n  d
 | d <x! |  j D] \ } } | | | <qW| d k	 rLd | d <| j d | | | ƒ n | j d | d | ƒy | j ƒ  } Wn$ t j j k
 r˜t d ƒ ‚ Yn Xd | j k o³d k  n rÕt | | j d | | j ƒ S|  j | | j | j | j | j | ƒ Sd S(   u‘  Make an HTTP connection using connection_class.

        This is an internal method that should be called from
        open_http() or open_https().

        Arguments:
        - connection_factory should take a host name and return an
          HTTPConnection instance.
        - url is the url to retrieval or a host, relative-path pair.
        - data is payload for a POST request or None.
        u   httpu	   %s://%s%su
   http erroru   no host givenu   asciiu   Basic %su   Proxy-Authorizationu   Authorizationu   Hostu   closeu
   Connectionu!   application/x-www-form-urlencodedu   Content-Typeu   POSTu   GETu   headersu$   http protocol error: bad status lineiÈ   i,  u   http:N(   u   Noneu
   isinstanceu   stru	   splithostu	   splituseru   unquoteu	   splittypeu   loweru   proxy_bypassu   IOErroru   base64u	   b64encodeu   encodeu   decodeu
   addheadersu   requestu   getresponseu   httpu   clientu   BadStatusLineu   URLErroru   statusu
   addinfourlu   msgu
   http_erroru   fpu   reason(   u   selfu   connection_factoryu   urlu   datau   user_passwdu   proxy_passwdu   hostu   selectoru   realhostu   urltypeu   restu
   proxy_authu   authu	   http_connu   headersu   headeru   valueu   response(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _open_generic_httpÑ  sr    			 !!


	u   URLopener._open_generic_httpc             C   s   |  j  t j j | | ƒ S(   u   Use HTTP protocol.(   u   _open_generic_httpu   httpu   clientu   HTTPConnection(   u   selfu   urlu   data(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   open_http-  s    u   URLopener.open_httpc       
      C   s   d | } t  |  | ƒ rw t |  | ƒ } | d k rO | | | | | | ƒ }	 n | | | | | | | ƒ }	 |	 rw |	 Sn  |  j | | | | | ƒ S(   uœ   Handle http errors.

        Derived class can override this, or provide specific handlers
        named http_error_DDD where DDD is the 3-digit error code.u   http_error_%dN(   u   hasattru   getattru   Noneu   http_error_default(
   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   datau   nameu   methodu   result(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   http_error1  s    
 u   URLopener.http_errorc             C   s&   | j  ƒ  t | | | | d ƒ ‚ d S(   u>   Default error handler: close the connection and raise IOError.N(   u   closeu	   HTTPErroru   None(   u   selfu   urlu   fpu   errcodeu   errmsgu   headers(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_defaultA  s    
u   URLopener.http_error_defaultc             C   s"   t  j j | d |  j d |  j ƒS(   Nu   key_fileu	   cert_file(   u   httpu   clientu   HTTPSConnectionu   key_fileu	   cert_file(   u   selfu   host(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _https_connectionG  s    	u   URLopener._https_connectionc             C   s   |  j  |  j | | ƒ S(   u   Use HTTPS protocol.(   u   _open_generic_httpu   _https_connection(   u   selfu   urlu   data(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   open_httpsL  s    u   URLopener.open_httpsc             C   s†   t  | t ƒ s t d ƒ ‚ n  | d d … d k ru | d d … d k ru | d d … j ƒ  d k ru t d	 ƒ ‚ n |  j | ƒ Sd S(
   u/   Use local file or FTP depending on form of URL.uE   file error: proxy support for file protocol currently not implementedNi   u   //i   u   /i   u
   localhost/u-   file:// scheme is supported only on localhost(   u
   isinstanceu   stru   URLErroru   loweru
   ValueErroru   open_local_file(   u   selfu   url(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   open_fileP  s
    Hu   URLopener.open_filec             C   sÝ  d d l  } d d l } t | ƒ \ } } t | ƒ } y t j | ƒ } Wn: t k
 r… } z t | j | j	 ƒ ‚ WYd d } ~ Xn X| j
 }	 | j j | j d d ƒ}
 | j | ƒ d } | j d | pÏ d |	 |
 f ƒ } | s'| } | d d … d k rd | } n  t t | d	 ƒ | | ƒ St | ƒ \ } } | rÍt j | ƒ t ƒ  f t ƒ  k rÍ| } | d d … d k r‹d | } n) | d d
 … d k r´t d | ƒ ‚ n  t t | d	 ƒ | | ƒ St d ƒ ‚ d S(   u   Use local file.i    Nu   usegmtu6   Content-Type: %s
Content-Length: %d
Last-modified: %s
u
   text/plaini   u   /u   file://u   rbi   u   ./uA   local file url may start with / or file:. Unknown url of type: %su#   local file error: not on local hostT(   u   email.utilsu	   mimetypesu	   splithostu   url2pathnameu   osu   statu   OSErroru   URLErroru   strerroru   filenameu   st_sizeu   utilsu
   formatdateu   st_mtimeu   Trueu
   guess_typeu   message_from_stringu
   addinfourlu   openu	   splitportu   socketu   gethostbynameu	   localhostu   thishostu
   ValueError(   u   selfu   urlu   emailu	   mimetypesu   hostu   fileu	   localnameu   statsu   eu   sizeu   modifiedu   mtypeu   headersu   urlfileu   port(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   open_local_fileY  s:    (	"u   URLopener.open_local_filec             C   s‘  t  | t ƒ s t d ƒ ‚ n  d d l } t | ƒ \ } } | sQ t d ƒ ‚ n  t | ƒ \ } } t | ƒ \ } } | r t | ƒ \ } } n d } t	 | ƒ } t	 | p® d ƒ } t	 | pÀ d ƒ } t
 j | ƒ } | só d d l } | j } n t | ƒ } t | ƒ \ } }	 t	 | ƒ } | j d ƒ }
 |
 d d … |
 d }
 } |
 rk|
 d rk|
 d d … }
 n  |
 r‰|
 d r‰d |
 d <n  | | | d j |
 ƒ f } t |  j ƒ t k rxJ |  j j ƒ  D]6 } | | k rÉ|  j | } |  j | =| j ƒ  qÉqÉWn  y9| |  j k r:t | | | | |
 ƒ |  j | <n  | sId } n d	 } xM |	 D]E } t | ƒ \ } } | j ƒ  d
 k rV| d k rV| j ƒ  } qVqVW|  j | j | | ƒ \ } } | j d | ƒ d } d } | rò| d | 7} n  | d k	 r| d k r| d | 7} n  t j | ƒ } t | | d | ƒ SWnK t  ƒ  k
 rŒ} z( t d | ƒ j! t" j# ƒ  d ƒ ‚ WYd d } ~ Xn Xd S(   u   Use FTP protocol.uC   ftp error: proxy support for ftp protocol currently not implementedi    Nu   ftp error: no host givenu    u   /i   u   Du   Iu   typeu   au   Au   iu   du   ftp:u   Content-Type: %s
u   Content-Length: %d
u   ftp error %ri   iÿÿÿÿiÿÿÿÿ(   u   au   Au   iu   Iu   du   D($   u
   isinstanceu   stru   URLErroru	   mimetypesu	   splithostu	   splitportu	   splituseru   splitpasswdu   Noneu   unquoteu   socketu   gethostbynameu   ftplibu   FTP_PORTu   intu	   splitattru   splitu   joinu   lenu   ftpcacheu   MAXFTPCACHEu   keysu   closeu
   ftpwrapperu
   splitvalueu   loweru   upperu   retrfileu
   guess_typeu   emailu   message_from_stringu
   addinfourlu	   ftperrorsu   with_tracebacku   sysu   exc_info(   u   selfu   urlu	   mimetypesu   hostu   pathu   portu   useru   passwdu   ftplibu   attrsu   dirsu   fileu   keyu   ku   vu   typeu   attru   valueu   fpu   retrlenu   mtypeu   headersu   exp(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   open_ftpy  sp        
" 	u   URLopener.open_ftpc       	      C   s¸  t  | t ƒ s t d ƒ ‚ n  y | j d d ƒ \ } } Wn! t k
 r] t d d ƒ ‚ Yn X| sm d } n  | j d ƒ } | d k rÅ d	 | | d
 … k rÅ | | d d
 … } | d
 | … } n d } g  } | j d t j	 d t j
 t j ƒ  ƒ ƒ ƒ | j d | ƒ | d k r>t j | j d ƒ ƒ j d ƒ } n t | ƒ } | j d t | ƒ ƒ | j d ƒ | j | ƒ d j | ƒ } t j | ƒ } t j | ƒ } t | | | ƒ S(   u   Use "data" URL.uE   data error: proxy support for data protocol currently not implementedu   ,i   u
   data erroru   bad data URLu   text/plain;charset=US-ASCIIu   ;i    u   =Nu    u   Date: %su   %a, %d %b %Y %H:%M:%S GMTu   Content-type: %su   base64u   asciiu   latin-1u   Content-Length: %du   
(   u
   isinstanceu   stru   URLErroru   splitu
   ValueErroru   IOErroru   rfindu   appendu   timeu   strftimeu   gmtimeu   base64u   decodebytesu   encodeu   decodeu   unquoteu   lenu   joinu   emailu   message_from_stringu   iou   StringIOu
   addinfourl(	   u   selfu   urlu   datau   typeu   semiu   encodingu   msgu   headersu   f(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   open_data³  s6    	"$u   URLopener.open_dataN(   u   __name__u
   __module__u   __qualname__u   __doc__u   Noneu   _URLopener__tempfilesu   __version__u   versionu   __init__u   __del__u   closeu   cleanupu	   addheaderu   openu   open_unknownu   open_unknown_proxyu   retrieveu   _open_generic_httpu	   open_httpu
   http_erroru   http_error_defaultu	   _have_sslu   _https_connectionu
   open_httpsu	   open_fileu   open_local_fileu   open_ftpu	   open_data(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   URLopener  s.   
$B\	 :c             B   sõ   |  Ee  Z d  Z d Z d d „  Z d d „  Z d! d d „ Z d d	 „  Z d! d
 d „ Z	 d! d d „ Z
 d! d d „ Z d! d" d d „ Z d! d" d d „ Z d! d d „ Z d! d d „ Z d! d d „ Z d! d d „ Z d d d „ Z d d  „  Z d! S(#   u   FancyURLopeneru?   Derived class with handlers for errors we can handle (perhaps).c             O   s2   t  j |  | | Ž i  |  _ d |  _ d |  _ d  S(   Ni    i
   (   u	   URLopeneru   __init__u
   auth_cacheu   triesu   maxtries(   u   selfu   argsu   kwargs(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__à  s    		u   FancyURLopener.__init__c             C   s   t  | | d | | ƒ S(   u3   Default error handling -- don't raise an exception.u   http:(   u
   addinfourl(   u   selfu   urlu   fpu   errcodeu   errmsgu   headers(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_defaultæ  s    u!   FancyURLopener.http_error_defaultc       	      C   s˜   |  j  d 7_  |  j rm |  j  |  j k rm t |  d ƒ rE |  j } n	 |  j } d |  _  | | | d d | ƒ S|  j | | | | | | ƒ } d |  _  | S(   u%   Error 302 -- relocated (temporarily).i   u   http_error_500i    iô  u)   Internal Server Error: Redirect Recursion(   u   triesu   maxtriesu   hasattru   http_error_500u   http_error_defaultu   redirect_internal(	   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   datau   methu   result(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_302ê  s    		
		u   FancyURLopener.http_error_302c       	      C   s¥   d | k r | d } n d | k r2 | d } n d  S| j  ƒ  t |  j d | | ƒ } t | ƒ } | j d	 k r˜ t | | | d | | | ƒ ‚ n  |  j | ƒ S(
   Nu   locationu   uriu   :u   httpu   httpsu   ftpu    u(    Redirection to url '%s' is not allowed.(   u   httpu   httpsu   ftpu    (   u   closeu   urljoinu   typeu   urlparseu   schemeu	   HTTPErroru   open(	   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   datau   newurlu   urlparts(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   redirect_internalú  s    
	u    FancyURLopener.redirect_internalc             C   s   |  j  | | | | | | ƒ S(   u*   Error 301 -- also relocated (permanently).(   u   http_error_302(   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   data(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_301  s    u   FancyURLopener.http_error_301c             C   s   |  j  | | | | | | ƒ S(   u;   Error 303 -- also relocated (essentially identical to 302).(   u   http_error_302(   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   data(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_303  s    u   FancyURLopener.http_error_303c             C   sE   | d k r( |  j | | | | | | ƒ S|  j | | | | | ƒ Sd S(   u1   Error 307 -- relocated, but turn POST into error.N(   u   Noneu   http_error_302u   http_error_default(   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   data(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_307  s    u   FancyURLopener.http_error_307c             C   s$  d | k r+ t  j |  | | | | | ƒ n  | d } t j d | ƒ }	 |	 sl t  j |  | | | | | ƒ n  |	 j ƒ  \ }
 } |
 j ƒ  d k r¯ t  j |  | | | | | ƒ n  | sÔ t  j |  | | | | | ƒ n  d |  j d } | d k rt |  | ƒ | | ƒ St |  | ƒ | | | ƒ Sd S(   u_   Error 401 -- authentication required.
        This function supports Basic authentication only.u   www-authenticateu!   [ 	]*([^ 	]+)[ 	]+realm="([^"]*)"u   basicu   retry_u   _basic_authN(	   u	   URLopeneru   http_error_defaultu   reu   matchu   groupsu   loweru   typeu   Noneu   getattr(   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   datau   retryu   stuffu   matchu   schemeu   realmu   name(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_401%  s&    

u   FancyURLopener.http_error_401c             C   s$  d | k r+ t  j |  | | | | | ƒ n  | d } t j d | ƒ }	 |	 sl t  j |  | | | | | ƒ n  |	 j ƒ  \ }
 } |
 j ƒ  d k r¯ t  j |  | | | | | ƒ n  | sÔ t  j |  | | | | | ƒ n  d |  j d } | d k rt |  | ƒ | | ƒ St |  | ƒ | | | ƒ Sd S(   ue   Error 407 -- proxy authentication required.
        This function supports Basic authentication only.u   proxy-authenticateu!   [ 	]*([^ 	]+)[ 	]+realm="([^"]*)"u   basicu   retry_proxy_u   _basic_authN(	   u	   URLopeneru   http_error_defaultu   reu   matchu   groupsu   loweru   typeu   Noneu   getattr(   u   selfu   urlu   fpu   errcodeu   errmsgu   headersu   datau   retryu   stuffu   matchu   schemeu   realmu   name(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   http_error_407>  s&    

u   FancyURLopener.http_error_407c             C   s  t  | ƒ \ } } d | | } |  j d } t | ƒ \ } }	 t  |	 ƒ \ }	 }
 |	 j d ƒ d } |	 | d  … }	 |  j |	 | | ƒ \ } } | p˜ | sŸ d  Sd t | d d ƒt | d d ƒ|	 f }	 d |	 |
 |  j d <| d  k rø |  j | ƒ S|  j | | ƒ Sd  S(   Nu   http://u   httpu   @i   u   %s:%s@%su   safeu    (   u	   splithostu   proxiesu	   splittypeu   findu   get_user_passwdu   Noneu   quoteu   open(   u   selfu   urlu   realmu   datau   hostu   selectoru   newurlu   proxyu   urltypeu	   proxyhostu   proxyselectoru   iu   useru   passwd(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retry_proxy_http_basic_authW  s      u*   FancyURLopener.retry_proxy_http_basic_authc             C   s  t  | ƒ \ } } d | | } |  j d } t | ƒ \ } }	 t  |	 ƒ \ }	 }
 |	 j d ƒ d } |	 | d  … }	 |  j |	 | | ƒ \ } } | p˜ | sŸ d  Sd t | d d ƒt | d d ƒ|	 f }	 d |	 |
 |  j d <| d  k rø |  j | ƒ S|  j | | ƒ Sd  S(   Nu   https://u   httpsu   @i   u   %s:%s@%su   safeu    (   u	   splithostu   proxiesu	   splittypeu   findu   get_user_passwdu   Noneu   quoteu   open(   u   selfu   urlu   realmu   datau   hostu   selectoru   newurlu   proxyu   urltypeu	   proxyhostu   proxyselectoru   iu   useru   passwd(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retry_proxy_https_basic_authi  s      u+   FancyURLopener.retry_proxy_https_basic_authc       
      C   sÆ   t  | ƒ \ } } | j d ƒ d } | | d  … } |  j | | | ƒ \ } } | pY | s` d  Sd t | d d ƒt | d d ƒ| f } d | | }	 | d  k r² |  j |	 ƒ S|  j |	 | ƒ Sd  S(   Nu   @i   u   %s:%s@%su   safeu    u   http://(   u	   splithostu   findu   get_user_passwdu   Noneu   quoteu   open(
   u   selfu   urlu   realmu   datau   hostu   selectoru   iu   useru   passwdu   newurl(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retry_http_basic_auth{  s     u$   FancyURLopener.retry_http_basic_authc       
      C   sÆ   t  | ƒ \ } } | j d ƒ d } | | d  … } |  j | | | ƒ \ } } | pY | s` d  Sd t | d d ƒt | d d ƒ| f } d | | }	 | d  k r² |  j |	 ƒ S|  j |	 | ƒ Sd  S(   Nu   @i   u   %s:%s@%su   safeu    u   https://(   u	   splithostu   findu   get_user_passwdu   Noneu   quoteu   open(
   u   selfu   urlu   realmu   datau   hostu   selectoru   iu   useru   passwdu   newurl(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retry_https_basic_auth‰  s     u%   FancyURLopener.retry_https_basic_authi    c             C   sˆ   | d | j  ƒ  } | |  j k rD | r6 |  j | =qD |  j | Sn  |  j | | ƒ \ } } | sh | r~ | | f |  j | <n  | | f S(   Nu   @(   u   loweru
   auth_cacheu   prompt_user_passwd(   u   selfu   hostu   realmu   clear_cacheu   keyu   useru   passwd(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   get_user_passwd—  s     u   FancyURLopener.get_user_passwdc             C   sp   d d l  } y@ t d | | f ƒ } | j  d | | | f ƒ } | | f SWn t k
 rk t ƒ  d SYn Xd S(   u#   Override this in a GUI environment!i    Nu   Enter username for %s at %s: u#   Enter password for %s in %s at %s: (   NN(   u   getpassu   inputu   KeyboardInterruptu   printu   None(   u   selfu   hostu   realmu   getpassu   useru   passwd(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   prompt_user_passwd¢  s    	u!   FancyURLopener.prompt_user_passwdNF(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   http_error_defaultu   Noneu   http_error_302u   redirect_internalu   http_error_301u   http_error_303u   http_error_307u   Falseu   http_error_401u   http_error_407u   retry_proxy_http_basic_authu   retry_proxy_https_basic_authu   retry_http_basic_authu   retry_https_basic_authu   get_user_passwdu   prompt_user_passwd(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   FancyURLopenerÝ  s$   c               C   s"   t  d k r t j d ƒ a  n  t  S(   u8   Return the IP address of the magic hostname 'localhost'.u	   localhostN(   u
   _localhostu   Noneu   socketu   gethostbyname(    (    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   localhost²  s    u	   localhostc               C   sg   t  d k rc y# t t j t j ƒ  ƒ d ƒ a  Wqc t j k
 r_ t t j d ƒ d ƒ a  Yqc Xn  t  S(   u,   Return the IP addresses of the current host.i   u	   localhostN(   u	   _thishostu   Noneu   tupleu   socketu   gethostbyname_exu   gethostnameu   gaierror(    (    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   thishostº  s    #!u   thishostc              C   s(   t  d k r$ d d l }  |  j a  n  t  S(   u1   Return the set of errors raised by the FTP class.i    N(   u
   _ftperrorsu   Noneu   ftplibu
   all_errors(   u   ftplib(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   ftperrorsÅ  s    u	   ftperrorsc               C   s"   t  d k r t j d ƒ a  n  t  S(   u%   Return an empty email Message object.u    N(   u
   _noheadersu   Noneu   emailu   message_from_string(    (    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu	   noheadersÎ  s    u	   noheadersc             B   st   |  Ee  Z d  Z d Z d d d d „ Z d d „  Z d d „  Z d d	 „  Z	 d
 d „  Z
 d d „  Z d d „  Z d S(   u
   ftpwrapperu;   Class used by open_ftp() for cache of open FTP connections.c             C   sV   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ d |  _ | |  _ |  j ƒ  d  S(   Ni    (	   u   useru   passwdu   hostu   portu   dirsu   timeoutu   refcountu	   keepaliveu   init(   u   selfu   useru   passwdu   hostu   portu   dirsu   timeoutu
   persistent(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   __init__Û  s    								u   ftpwrapper.__init__c             C   s‚   d d  l  } d |  _ | j ƒ  |  _ |  j j |  j |  j |  j ƒ |  j j |  j	 |  j
 ƒ d j |  j ƒ } |  j j | ƒ d  S(   Ni    u   /(   u   ftplibu   busyu   FTPu   ftpu   connectu   hostu   portu   timeoutu   loginu   useru   passwdu   joinu   dirsu   cwd(   u   selfu   ftplibu   _target(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   initç  s    	u   ftpwrapper.initc          .   C   s:  d d  l  } |  j ƒ  | d k r1 d } d } n d | } d } y |  j j | ƒ Wn/ | j k
 r† |  j ƒ  |  j j | ƒ Yn Xd  } | r0| r0y& d | } |  j j | ƒ \ } } Wq0| j k
 r,} zG t	 | ƒ d  d … d	 k rt
 d
 | ƒ j t j ƒ  d ƒ ‚ n  WYd  d  } ~ Xq0Xn  | só|  j j d ƒ | rÒ|  j j ƒ  }	 zV y |  j j | ƒ Wn; | j k
 r¯} z t
 d
 | ƒ | ‚ WYd  d  } ~ Xn XWd  |  j j |	 ƒ Xd | } n d } |  j j | ƒ \ } } n  d |  _ t | j d ƒ |  j ƒ }
 |  j d 7_ | j ƒ  |
 | f S(   Ni    u   du   Du   TYPE Ai   u   TYPE u   RETR i   u   550u   ftp error: %ri   u   LIST u   LISTu   rb(   u   du   D(   u   ftplibu   endtransferu   ftpu   voidcmdu
   all_errorsu   initu   Noneu   ntransfercmdu
   error_permu   stru   URLErroru   with_tracebacku   sysu   exc_infou   pwdu   cwdu   busyu   addclosehooku   makefileu
   file_closeu   refcountu   close(   u   selfu   fileu   typeu   ftplibu   cmdu   isdiru   connu   retrlenu   reasonu   pwdu   ftpobj(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   retrfileð  sN    
  	
 

,*	
u   ftpwrapper.retrfilec             C   s   d |  _  d  S(   Ni    (   u   busy(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   endtransfer	  s    u   ftpwrapper.endtransferc             C   s)   d |  _ |  j d k r% |  j ƒ  n  d  S(   Ni    F(   u   Falseu	   keepaliveu   refcountu
   real_close(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   close 	  s    	u   ftpwrapper.closec             C   sC   |  j  ƒ  |  j d 8_ |  j d k r? |  j r? |  j ƒ  n  d  S(   Ni   i    (   u   endtransferu   refcountu	   keepaliveu
   real_close(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   file_close%	  s    
u   ftpwrapper.file_closec             C   s7   |  j  ƒ  y |  j j ƒ  Wn t ƒ  k
 r2 Yn Xd  S(   N(   u   endtransferu   ftpu   closeu	   ftperrors(   u   self(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   real_close+	  s
    
u   ftpwrapper.real_closeNT(   u   __name__u
   __module__u   __qualname__u   __doc__u   Noneu   Trueu   __init__u   initu   retrfileu   endtransferu   closeu
   file_closeu
   real_close(   u
   __locals__(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   ftpwrapperØ  s   	-u
   ftpwrapperc              C   s‹   i  }  x\ t  j j ƒ  D]K \ } } | j ƒ  } | r | d d … d k r | |  | d d … <q q Wd t  j k r‡ |  j d d ƒ n  |  S(   u  Return a dictionary of scheme -> proxy server URL mappings.

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

    i   Nu   _proxyu   REQUEST_METHODu   httpiúÿÿÿiúÿÿÿ(   u   osu   environu   itemsu   loweru   popu   None(   u   proxiesu   nameu   value(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   getproxies_environment3	  s    	u   getproxies_environmentc             C   s¥   t  j j d d ƒ p' t  j j d d ƒ } | d k r: d St |  ƒ \ } } d d „  | j d ƒ Dƒ } x6 | D]. } | ro | j | ƒ s™ |  j | ƒ ro d Sqo Wd	 S(
   uÏ   Test if proxies should not be used for a particular host.

    Checks the environment for a variable named no_proxy, which should
    be a list of DNS suffixes separated by commas, or '*' for all hosts.
    u   no_proxyu    u   NO_PROXYu   *i   c             S   s   g  |  ] } | j  ƒ  ‘ q S(    (   u   strip(   u   .0u   proxy(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   <listcomp>W	  s   	 u,   proxy_bypass_environment.<locals>.<listcomp>u   ,i    (   u   osu   environu   getu	   splitportu   splitu   endswith(   u   hostu   no_proxyu   hostonlyu   portu   no_proxy_listu   name(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   proxy_bypass_environmentJ	  s    *$u   proxy_bypass_environmentc             C   s†  d d l  m  } t |  ƒ \ } } d d „  } d |  k rK | d rK d Sn  d } x.| j d f  ƒ D]} | sv qd n  t j d | ƒ } | d k	 rk| d k rÝ y t j | ƒ } | | ƒ } WqÝ t j	 k
 rÙ wd YqÝ Xn  | | j
 d	 ƒ ƒ }	 | j
 d
 ƒ }
 |
 d k r0d | j
 d	 ƒ j d ƒ d	 }
 n t |
 d	 d … ƒ }
 d |
 }
 | |
 ?|	 |
 ?k r~d Sqd | |  | ƒ rd d Sqd Wd S(   uj  
    Return True iff this host shouldn't be accessed using a proxy

    This function uses the MacOSX framework SystemConfiguration
    to fetch the proxy information.

    proxy_settings come from _scproxy._get_proxy_settings or get mocked ie:
    { 'exclude_simple': bool,
      'exceptions': ['foo.bar', '*.bar.com', '127.0.0.1', '10.1', '10.0/16']
    }
    i    (   u   fnmatchc             S   s…   |  j  d ƒ } t t t | ƒ ƒ } t | ƒ d k rY | d d d d g d  d … } n  | d d >| d d >B| d d >B| d	 BS(
   Nu   .i   i    i   i   i   i   i   i   (   u   splitu   listu   mapu   intu   len(   u   ipAddru   parts(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   ip2numq	  s
    #u,   _proxy_bypass_macosx_sysconf.<locals>.ip2numu   .u   exclude_simpleu
   exceptionsu   (\d+(?:\.\d+)*)(/\d+)?i   i   i   Ni    TF(   u   fnmatchu	   splitportu   Trueu   Noneu   getu   reu   matchu   socketu   gethostbynameu   erroru   groupu   countu   intu   False(   u   hostu   proxy_settingsu   fnmatchu   hostonlyu   portu   ip2numu   hostIPu   valueu   mu   baseu   mask(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   _proxy_bypass_macosx_sysconfa	  s:    
 #
u   _proxy_bypass_macosx_sysconfu   darwin(   u   _get_proxy_settingsu   _get_proxiesc             C   s   t  ƒ  } t |  | ƒ S(   N(   u   _get_proxy_settingsu   _proxy_bypass_macosx_sysconf(   u   hostu   proxy_settings(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   proxy_bypass_macosx_sysconf 	  s    	u   proxy_bypass_macosx_sysconfc               C   s   t  ƒ  S(   u±   Return a dictionary of scheme -> proxy server URL mappings.

        This function uses the MacOSX framework SystemConfiguration
        to fetch the proxy information.
        (   u   _get_proxies(    (    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   getproxies_macosx_sysconf¤	  s    u   getproxies_macosx_sysconfc             C   s!   t  ƒ  r t |  ƒ St |  ƒ Sd  S(   N(   u   getproxies_environmentu   proxy_bypass_environmentu   proxy_bypass_macosx_sysconf(   u   host(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   proxy_bypass®	  s    	
u   proxy_bypassc               C   s   t  ƒ  p t ƒ  S(   N(   u   getproxies_environmentu   getproxies_macosx_sysconf(    (    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   getproxies´	  s    c              C   sl  i  }  y d d l  } Wn t k
 r. |  SYn Xy| j | j d ƒ } | j | d ƒ d } | r?t | j | d ƒ d ƒ } d | k rï x® | j d ƒ D]M } | j d d ƒ \ } } t j d	 | ƒ sÞ d
 | | f } n  | |  | <q› Wq?| d d … d k r| |  d <q?d | |  d <d | |  d <d | |  d <n  | j	 ƒ  Wn t
 t t f k
 rgYn X|  S(   ux   Return a dictionary of scheme -> proxy server URL mappings.

        Win32 uses the registry to store proxies.

        i    Nu;   Software\Microsoft\Windows\CurrentVersion\Internet Settingsu   ProxyEnableu   ProxyServeru   =u   ;i   u   ^([^/:]+)://u   %s://%si   u   http:u   httpu	   http://%su
   https://%su   httpsu   ftp://%su   ftp(   u   winregu   ImportErroru   OpenKeyu   HKEY_CURRENT_USERu   QueryValueExu   stru   splitu   reu   matchu   Closeu   WindowsErroru
   ValueErroru	   TypeError(   u   proxiesu   winregu   internetSettingsu   proxyEnableu   proxyServeru   pu   protocolu   address(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   getproxies_registry¹	  s8    			u   getproxies_registryc               C   s   t  ƒ  p t ƒ  S(   u¥   Return a dictionary of scheme -> proxy server URL mappings.

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

        (   u   getproxies_environmentu   getproxies_registry(    (    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu
   getproxiesæ	  s    c          '   C   sî  y d d  l  } Wn t k
 r( d SYn XyK | j | j d ƒ } | j | d ƒ d } t | j | d ƒ d ƒ } Wn t k
 rŒ d SYn X| s› | rŸ d St |  ƒ \ } } | g }  y/ t j	 | ƒ } | | k rè |  j
 | ƒ n  Wn t j k
 r Yn Xy/ t j | ƒ } | | k r/|  j
 | ƒ n  Wn t j k
 rGYn X| j d ƒ } x | D]ˆ }	 |	 d k rƒd | k rƒd Sn  |	 j d d	 ƒ }	 |	 j d
 d ƒ }	 |	 j d d ƒ }	 x* |  D]" }
 t j |	 |
 t j ƒ rÀd SqÀWq^Wd S(   Ni    u;   Software\Microsoft\Windows\CurrentVersion\Internet Settingsu   ProxyEnableu   ProxyOverrideu   ;u   <local>u   .i   u   \.u   *u   .*u   ?(   u   winregu   ImportErroru   OpenKeyu   HKEY_CURRENT_USERu   QueryValueExu   stru   WindowsErroru	   splitportu   socketu   gethostbynameu   appendu   erroru   getfqdnu   splitu   replaceu   reu   matchu   I(   u   hostu   winregu   internetSettingsu   proxyEnableu   proxyOverrideu   rawHostu   portu   addru   fqdnu   testu   val(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   proxy_bypass_registryï	  sR    					u   proxy_bypass_registryc             C   s!   t  ƒ  r t |  ƒ St |  ƒ Sd S(   u¥   Return a dictionary of scheme -> proxy server URL mappings.

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

        N(   u   getproxies_environmentu   proxy_bypass_environmentu   proxy_bypass_registry(   u   host(    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   proxy_bypass!
  s    	
(~   u   __doc__u   base64u   bisectu   emailu   hashlibu   http.clientu   httpu   iou   osu	   posixpathu   reu   socketu   sysu   timeu   collectionsu   tempfileu
   contextlibu   warningsu   urllib.erroru   URLErroru	   HTTPErroru   ContentTooShortErroru   urllib.parseu   urlparseu   urlsplitu   urljoinu   unwrapu   quoteu   unquoteu	   splittypeu	   splithostu	   splitportu	   splituseru   splitpasswdu	   splitattru
   splitqueryu
   splitvalueu   splittagu   to_bytesu
   urlunparseu   urllib.responseu
   addinfourlu   addclosehooku   sslu   ImportErroru   Falseu	   _have_sslu   Trueu   __all__u   versionu   __version__u   Noneu   _openeru   _GLOBAL_DEFAULT_TIMEOUTu   urlopenu   install_openeru   _url_tempfilesu   urlretrieveu
   urlcleanupu   compileu   ASCIIu   _cut_port_reu   request_hostu   Requestu   OpenerDirectoru   build_openeru   BaseHandleru   HTTPErrorProcessoru   HTTPDefaultErrorHandleru   HTTPRedirectHandleru   _parse_proxyu   ProxyHandleru   HTTPPasswordMgru   HTTPPasswordMgrWithDefaultRealmu   AbstractBasicAuthHandleru   HTTPBasicAuthHandleru   ProxyBasicAuthHandleru   urandomu   _randombytesu   AbstractDigestAuthHandleru   HTTPDigestAuthHandleru   ProxyDigestAuthHandleru   AbstractHTTPHandleru   HTTPHandleru   hasattru   clientu   HTTPSHandleru   appendu   HTTPCookieProcessoru   UnknownHandleru   parse_keqv_listu   parse_http_listu   FileHandleru   _safe_gethostbynameu
   FTPHandleru   CacheFTPHandleru   MAXFTPCACHEu   nameu
   nturl2pathu   url2pathnameu   pathname2urlu   ftpcacheu	   URLopeneru   FancyURLopeneru
   _localhostu	   localhostu	   _thishostu   thishostu
   _ftperrorsu	   ftperrorsu
   _noheadersu	   noheadersu
   ftpwrapperu   getproxies_environmentu   proxy_bypass_environmentu   _proxy_bypass_macosx_sysconfu   platformu   _scproxyu   _get_proxy_settingsu   _get_proxiesu   proxy_bypass_macosx_sysconfu   getproxies_macosx_sysconfu   proxy_bypassu
   getproxiesu   getproxies_registryu   proxy_bypass_registry(    (    (    u3   /opt/alt/python33/lib64/python3.3/urllib/request.pyu   <module>D   sÚ   p					$?yŽ&hH*@
E	n
+4:8ÿ ¿Ô

[<
-	2