U
    Evf                     @  sF   d dl mZ d dlZd dlmZ ddlmZ G dd deje ZdS )    )annotationsN)TracebackType   )ContainerIOc                      sZ   e Zd ZdZdddd fddZd ddd	Zd
d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-ciywl2yd/PIL/TarIO.pyr      s"    
zTarIO.__init__)r   c                 C  s   | S Nr(   r    r(   r(   r)   	__enter__=   s    zTarIO.__enter__ztype[BaseException] | NonezBaseException | NonezTracebackType | None)exc_typeexc_valexc_tbr   c                 C  s   |    d S r*   )close)r    r-   r.   r/   r(   r(   r)   __exit__@   s    zTarIO.__exit__c                 C  s   | j   d S r*   )r   r0   r+   r(   r(   r)   r0   H   s    zTarIO.close)	__name__
__module____qualname____doc__r   r,   r1   r0   __classcell__r(   r(   r&   r)   r      s
   "r   )	
__future__r   r   typesr    r   bytesr   r(   r(   r(   r)   <module>   s   