U
    Zwe-  ã                   @   sŒ   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 G dd„ deƒZ
G dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZdS )é    )Úabstractmethod)ÚAbstractContextManager)ÚIterableÚIteratorÚTuple)ÚSequenceRecordc                   @   sF   e Zd ZU eed< eed< eee dœdd„ƒZ	eddœdd„ƒZ
dS )	ÚSingleEndReaderZdelivers_qualitiesZnumber_of_records©Úreturnc                 C   s   dS )zÓ
        Iterate over an input containing sequence records

        Yields:
            `SequenceRecord` objects

        Raises:
            `FileFormatError`
                if there was a parse error
        N© ©Úselfr   r   ú/lib/python3.8/site-packages/dnaio/interfaces.pyÚ__iter__   s    zSingleEndReader.__iter__Nc                 C   s   d S ©Nr   r   r   r   r   Úclose   s    zSingleEndReader.close)Ú__name__Ú
__module__Ú__qualname__ÚboolÚ__annotations__Úintr   r   r   r   r   r   r   r   r   r      s   
r   c                   @   s<   e Zd Zeeeeef  dœdd„ƒZeddœdd„ƒZdS )ÚPairedEndReaderr	   c                 C   s   dS )a¸  
        Iterate over an input containing paired-end records

        Yields:
            Pairs of `SequenceRecord` objects

        Raises:
            `FileFormatError`
                if there was a parse error or if reads are improperly paired,
                that is, if there are more reads in one file than the other or
                if the record IDs do not match (according to
                `SequenceRecord.is_mate`).
        Nr   r   r   r   r   r      s    zPairedEndReader.__iter__Nc                 C   s   d S r   r   r   r   r   r   r   /   s    zPairedEndReader.close)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   r   c                   @   s2   e Zd Zeeddœdd„ƒZeddœdd„ƒZdS )ÚSingleEndWriterN)Úrecordr
   c                 C   s   dS )z'Write a `SequenceRecord` to the output.Nr   )r   r   r   r   r   Úwrite5   s    zSingleEndWriter.writer	   c                 C   s   d S r   r   r   r   r   r   r   9   s    zSingleEndWriter.close©r   r   r   r   r   r   r   r   r   r   r   r   4   s   r   c                   @   s4   e Zd Zeeeddœdd„ƒZeddœdd„ƒZdS )ÚPairedEndWriterN)Úrecord1Úrecord2r
   c                 C   s   dS )at  
        Write a pair of `SequenceRecord` objects to the paired-end output.

        This method does not verify that both records have matching IDs
        because this was already done at parsing time. If it is possible
        that the record IDs no longer match, check that
        ``record1.is_mate(record2)`` returns True before calling
        this method.
        Nr   )r   r   r   r   r   r   r   ?   s    zPairedEndWriter.writer	   c                 C   s   d S r   r   r   r   r   r   r   K   s    zPairedEndWriter.closer   r   r   r   r   r   >   s   r   c                   @   sZ   e Zd ZU eed< eeddœdd„ƒZeee	edf  dœdd	„ƒZ
edd
œdd„ƒZdS )ÚMultipleFileWriterZ_number_of_filesN)Úrecordsr
   c                 G   s   dS )zá
        Write N SequenceRecords to the output. N must be equal
        to the number of files the MultipleFileWriter was initialized with.

        This method does not check whether the records are properly paired.
        Nr   )r   r!   r   r   r   r   S   s    zMultipleFileWriter.write.)Úlist_of_recordsc                 C   s   dS )a¡  
        Iterate over the list (or other iterable container) and write all
        N-tuples of SequenceRecord to disk. N must be equal
        to the number of files the MultipleFileWriter was initialized with.

        This method does not check whether the records are properly paired.
        This method may provide a speed boost over calling write for each
        tuple of SequenceRecords individually.
        Nr   )r   r"   r   r   r   Úwrite_iterable\   s    z!MultipleFileWriter.write_iterabler	   c                 C   s   d S r   r   r   r   r   r   r   h   s    zMultipleFileWriter.close)r   r   r   r   r   r   r   r   r   r   r#   r   r   r   r   r   r    P   s   
r    N)Úabcr   Ú
contextlibr   Útypingr   r   r   Zdnaior   r   r   r   r   r    r   r   r   r   Ú<module>   s   
