U
    ڲg0                     @  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 fileNd   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-xela2va7/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   