
    e                    `    d dl mZ d dlZd dlmZ ddlmZ  G d dej                  e         Zy)    )annotationsN)TracebackType   )ContainerIOc                  L     e Zd ZdZd fdZddZ	 	 	 	 	 	 	 	 ddZd	dZ xZS )
TarIOzHA file object that provides read access to a given member of a TAR file.c                
   t        |d      | _        	 | j                  j                  d      }t        |      dk7  rd}t	        |      |dd j                  d      }|j                  d      }|dk(  rd	}t	        |      |dkD  r|d| }t        |d
d d      }||k(  rn1| j                  j                  |dz   dz  t        j                         t        | 1  | j                  | j                  j                         |       y)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)	selftarfilefilesmsgnameisize	__class__s	           +/usr/lib/python3/dist-packages/PIL/TarIO.pyr   zTarIO.__init__   s     w%S!A1v}2cl"Tc7>>'*D		$AAv+cl"1uBQxqSz1%Dt|GGLL$*.<' , 	$'',,.$7    c                    | S N r   s    r'   	__enter__zTarIO.__enter__=   s    r(   c                $    | j                          y r*   )close)r   exc_typeexc_valexc_tbs       r'   __exit__zTarIO.__exit__@   s     	

r(   c                8    | j                   j                          y r*   )r   r/   r,   s    r'   r/   zTarIO.closeH   s    r(   )r   strr    r5   returnNone)r6   r   )r0   ztype[BaseException] | Noner1   zBaseException | Noner2   zTracebackType | Noner6   r7   )r6   r7   )	__name__
__module____qualname____doc__r   r-   r3   r/   __classcell__)r&   s   @r'   r   r      sA    R8D, & %	
 
r(   r   )	
__future__r   r   typesr    r   bytesr   r+   r(   r'   <module>rA      s*     # 	  1K##E* 1r(   