o
    gC                     @   s   d dl Z G dd dZdS )    Nc                   @   sP   e Zd ZdZdd Zdd ZejfddZdd	 Z	dddZ
dd Zdd ZdS )ContainerIOzm
    A file object that provides read access to a part of an existing
    file (for example a TAR file).
    c                 C   s(   || _ d| _|| _|| _| j | dS )z
        Create file object.

        :param file: Existing file.
        :param offset: Start of region, in bytes.
        :param length: Size of region, in bytes.
        r   N)fhposoffsetlengthseek)selffiler   r    r
   M/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/PIL/ContainerIO.py__init__   s
   zContainerIO.__init__c                 C   s   dS )NFr
   r   r
   r
   r   isatty,   s   zContainerIO.isattyc                 C   s`   |dkr| j | | _ n|dkr| j| | _ n|| _ tdt| j | j| _ | j| j| j   dS )a  
        Move file pointer.

        :param offset: Offset in bytes.
        :param mode: Starting position. Use 0 for beginning of region, 1
           for current offset, and 2 for end of region.  You cannot move
           the pointer outside the defined region.
              r   N)r   r   maxminr   r   r   )r   r   moder
   r
   r   r   /   s   	zContainerIO.seekc                 C   s   | j S )ze
        Get current file pointer.

        :returns: Offset from start of region, in bytes.
        )r   r   r
   r
   r   tellB   s   zContainerIO.tellr   c                 C   sT   |rt || j| j }n| j| j }|sd| jjv rdS dS | j| | _| j|S )z
        Read data.

        :param n: Number of bytes to read. If omitted or zero,
            read until end of region.
        :returns: An 8-bit string.
        b     )r   r   r   r   r   read)r   nr
   r
   r   r   J   s   zContainerIO.readc                 C   sV   d| j jv rdnd}d| j jv rdnd}	 | d}|s	 |S || }||kr*	 |S q)zJ
        Read a line of text.

        :returns: An 8-bit string.
        r   r   r      

Tr   )r   r   r   )r   snewline_charactercr
   r
   r   readline[   s   
zContainerIO.readlinec                 C   s$   g }	 |   }|s	 |S || q)zZ
        Read multiple lines of text.

        :returns: A list of 8-bit strings.
        )r   append)r   linesr   r
   r
   r   	readlinesl   s   
zContainerIO.readlinesN)r   )__name__
__module____qualname____doc__r   r   ioSEEK_SETr   r   r   r   r"   r
   r
   r
   r   r      s    
r   )r'   r   r
   r
   r
   r   <module>   s   