o
    ž<[a9	  ã                   @   sZ   d Z ddlZg d¢ZG dd„ dejƒZG dd„ deƒZG dd	„ d	eƒZG d
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                       s8   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Z‡  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>F)Údelete)Úsuperr   Ú__init__Úfp)Úselfr	   ©Ú	__class__© ú-/var/www/Python-3.10.0/Lib/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ƒ‚| S )NzI/O operation on closed file)r	   ÚclosedÚ
ValueErrorr   r   r   r   Ú	__enter__   s   zaddbase.__enter__c                 C   s   |   ¡  d S ©N)Úclose)r
   ÚtypeÚvalueÚ	tracebackr   r   r   Ú__exit__!   s   zaddbase.__exit__)	r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Ú__classcell__r   r   r   r   r      s    r   c                       s,   e Zd ZdZ‡ fdd„Z‡ fdd„Z‡  ZS )r   z*Class to add a close hook to an open file.c                    s    t t| ƒ |¡ || _|| _d S r   )r   r   r   Ú	closehookÚhookargs)r
   r	   r!   r"   r   r   r   r   (   s   
zaddclosehook.__init__c              	      s^   z&| j }| j}|rd | _ d | _||Ž  W tt| ƒ ¡  d S W tt| ƒ ¡  d S tt| ƒ ¡  w r   )r!   r"   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   r   %   s    r   c                       s(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )r   z.class to add an info() method to an open file.c                    s   t t| ƒ |¡ || _d S r   )r   r   r   Úheaders)r
   r	   r#   r   r   r   r   <   s   
zaddinfo.__init__c                 C   ó   | j S r   )r#   r   r   r   r   Úinfo@   ó   zaddinfo.info)r   r   r   r   r   r%   r    r   r   r   r   r   9   s    r   c                       s>   e Zd ZdZd‡ fdd„	Zedd„ ƒZdd„ Zd	d
„ Z‡  Z	S )r   z9class to add info() and geturl() methods to an open file.Nc                    s"   t t| ƒ ||¡ || _|| _d S r   )r   r   r   ÚurlÚcode)r
   r	   r#   r'   r(   r   r   r   r   G   s   
zaddinfourl.__init__c                 C   r$   r   ©r(   r   r   r   r   ÚstatusL   s   zaddinfourl.statusc                 C   r$   r   r)   r   r   r   r   ÚgetcodeP   r&   zaddinfourl.getcodec                 C   r$   r   )r'   r   r   r   r   ÚgeturlS   r&   zaddinfourl.geturlr   )
r   r   r   r   r   Úpropertyr*   r+   r,   r    r   r   r   r   r   D   s    
r   )r   ÚtempfileÚ__all__Ú_TemporaryFileWrapperr   r   r   r   r   r   r   r   Ú<module>   s    