U e5d� � @ s: d Z ddlZejZG dd� dej�ZG dd� dej�ZdS )z7Internal classes used by the gzip, lzma and bz2 modules� Nc @ s0 e Zd ZdZdd� Zdd� Zdd� Zdd � Zd S )� BaseStreamzMode-checking helper functions.c C s | j rtd��d S )NzI/O operation on closed file)�closed� ValueError��self� r �$/usr/lib64/python3.8/_compression.py�_check_not_closed s zBaseStream._check_not_closedc C s | � � st�d��d S )NzFile not open for reading)�readable�io�UnsupportedOperationr r r r �_check_can_read s zBaseStream._check_can_readc C s | � � st�d��d S )NzFile not open for writing)�writabler r r r r r �_check_can_write s zBaseStream._check_can_writec C s( | � � st�d��| �� s$t�d��d S )Nz3Seeking is only supported on files open for readingz3The underlying file object does not support seeking)r r r �seekabler r r r �_check_can_seek s zBaseStream._check_can_seekN)�__name__� __module__�__qualname__�__doc__r r r r r r r r r s r c sj e Zd ZdZdd� Zddd�Z� fdd�Zd d � Zdd� Zddd�Z dd� Z ejfdd�Z dd� Z� ZS )�DecompressReaderz5Adapts the decompressor API to a RawIOBase reader APIc C s dS )NTr r r r r r $ s zDecompressReader.readabler c K s> || _ d| _d| _d| _|| _|| _| jf | j�| _|| _d S )NFr �����)�_fp�_eof�_pos�_size�_decomp_factory�_decomp_args� _decompressor�_trailing_error)r �fpZdecomp_factoryZtrailing_errorZdecomp_argsr r r �__init__' s zDecompressReader.__init__c s d | _ t� �� S �N)r �super�closer �� __class__r r r$ ; s zDecompressReader.closec C s | j �� S r" )r r r r r r r ? s zDecompressReader.seekablec C sP t |��:}|�d��$}| �t|��}||d t|��<