U
    <þjg0  ã                   @  s:   d dl mZ d dlZddlmZ G dd„ deje ƒZdS )é    )ÚannotationsNé   )ÚContainerIOc                      sV   e Zd ZdZddddœ‡ fdd„Zd dœdd	„Zd
ddœdd„Zddœdd„Z‡  ZS )ÚTarIOzHA file object that provides read access to a given member of a TAR file.ÚstrÚNone)ÚtarfileÚfileÚreturnc                   sÆ   t |dƒ| _| j d¡}t|ƒdkr0d}t|ƒ‚|dd…  d¡}| d¡}|dkr`d	}t|ƒ‚|dkrt|d|… }t|d
d… dƒ}||krqª| j |d d@ t	j
¡ qtƒ  | j| j ¡ |¡ dS )zz
        Create file object.

        :param tarfile: Name of TAR file.
        :param file: Name of member file.
        Úrbi   zunexpected end of tar fileNéd   zutf-8ú r   zcannot find subfileé|   é‡   é   iÿ  i þÿÿ)ÚopenÚfhÚreadÚlenÚOSErrorÚdecodeÚfindÚintÚseekÚioÚSEEK_CURÚsuperÚ__init__Útell)Úselfr   r	   ÚsÚmsgÚnameÚiÚsize©Ú	__class__© ú-/tmp/pip-unpacked-wheel-f170kk4x/PIL/TarIO.pyr      s"    
zTarIO.__init__)r
   c                 C  s   | S ©Nr'   ©r   r'   r'   r(   Ú	__enter__<   s    zTarIO.__enter__Úobject)Úargsr
   c                 G  s   |   ¡  d S r)   )Úclose)r   r-   r'   r'   r(   Ú__exit__?   s    zTarIO.__exit__c                 C  s   | j  ¡  d S r)   )r   r.   r*   r'   r'   r(   r.   B   s    zTarIO.close)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r+   r/   r.   Ú__classcell__r'   r'   r%   r(   r      s
   "r   )Ú
__future__r   r   Ú r   Úbytesr   r'   r'   r'   r(   Ú<module>   s   