î
\á[\Œ  ã               @   sƒ   d  Z  d d l Z d d d d g Z Gd d „  d e j ƒ Z Gd d „  d e ƒ Z Gd	 d „  d e ƒ Z Gd
 d „  d e ƒ Z d S)a  Response classes used by urllib.

The base class, addbase, defines a minimal file-like interface,
including read() and readline().  The typical response object is an
addinfourl instance, which defines an info() method that returns
headers and a geturl() method that returns the url.
é    NÚaddbaseÚaddclosehookÚaddinfoÚ
addinfourlc                   sL   e  Z d  Z d Z ‡  f d d †  Z d d „  Z d d „  Z d d	 „  Z ‡  S)
r   zOBase class for addinfo and addclosehook. Is a good idea for garbage collection.c                s,   t  t |  ƒ j | d d d ƒ| |  _ d  S)Nz<urllib response>ZdeleteF)Úsuperr   Ú__init__Úfp)Úselfr   )Ú	__class__© ú%/usr/lib/python3.4/urllib/response.pyr      s    zaddbase.__init__c             C   s    d |  j  j t |  ƒ |  j f S)Nz<%s at %r whose fp = %r>)r
   Ú__name__ÚidÚfile)r	   r   r   r   Ú__repr__   s    zaddbase.__repr__c             C   s   |  j  j r t d ƒ ‚ n  |  S)NzI/O operation on closed file)r   ÚclosedÚ
ValueError)r	   r   r   r   Ú	__enter__   s    zaddbase.__enter__c             C   s   |  j  ƒ  d  S)N)Úclose)r	   ÚtypeÚvalueÚ	tracebackr   r   r   Ú__exit__!   s    zaddbase.__exit__)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   )r
   r   r      s
   c                   s:   e  Z d  Z d Z ‡  f d d †  Z ‡  f d d †  Z ‡  S)r   z*Class to add a close hook to an open file.c                s,   t  t |  ƒ j | ƒ | |  _ | |  _ d  S)N)r   r   r   Ú	closehookÚhookargs)r	   r   r   r   )r
   r   r   r   (   s    	zaddclosehook.__init__c                sE   |  j  r. |  j  |  j Œ  d  |  _  d  |  _ n  t t |  ƒ j ƒ  d  S)N)r   r   r   r   r   )r	   )r
   r   r   r   -   s
    		zaddclosehook.close)r   r   r   r   r   r   r   r   )r
   r   r   %   s   c                   s4   e  Z d  Z d Z ‡  f d d †  Z d d „  Z ‡  S)r   z.class to add an info() method to an open file.c                s#   t  t |  ƒ j | ƒ | |  _ d  S)N)r   r   r   Úheaders)r	   r   r   )r
   r   r   r   8   s    zaddinfo.__init__c             C   s   |  j  S)N)r   )r	   r   r   r   Úinfo<   s    zaddinfo.info)r   r   r   r   r   r   r   r   )r
   r   r   5   s   c                   sC   e  Z d  Z d Z d ‡  f d d † Z d d „  Z d d „  Z ‡  S)	r   z9class to add info() and geturl() methods to an open file.Nc                s/   t  t |  ƒ j | | ƒ | |  _ | |  _ d  S)N)r   r   r   ÚurlÚcode)r	   r   r   r    r!   )r
   r   r   r   C   s    	zaddinfourl.__init__c             C   s   |  j  S)N)r!   )r	   r   r   r   ÚgetcodeH   s    zaddinfourl.getcodec             C   s   |  j  S)N)r    )r	   r   r   r   ÚgeturlK   s    zaddinfourl.geturl)r   r   r   r   r   r"   r#   r   r   )r
   r   r   @   s   )r   ZtempfileÚ__all__Z_TemporaryFileWrapperr   r   r   r   r   r   r   r   Ú<module>   s   