U
    d                     @   s@   d dl mZ d dlmZ d dlmZmZmZ G dd deZdS )    )core)Reader)ScalarStructdata_type_for_dtypec                   @   s"   e Zd ZdZdddZdd ZdS )	TextFileReaderz?
    Wrapper around operators for reading from text files.
       c           	      C   sr   t |tstd| D ]\}}t |tstdqdd | D }t| | |jg |||d| _	|| _
dS )a  
        Create op for building a TextFileReader instance in the workspace.

        Args:
            init_net   : Net that will be run only once at startup.
            filename   : Path to file to read from.
            schema     : schema.Struct representing the schema of the data.
                         Currently, only support Struct of strings and float32.
            num_passes : Number of passes over the data.
            batch_size : Number of rows to read at a time.
        zSchema must be a schema.Structz3Only scalar fields are supported in TextFileReader.c                 S   s   g | ]}t |qS  )r   ).0Zdtyper	   r	   B/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/text_file_reader.py
<listcomp>    s    z+TextFileReader.__init__.<locals>.<listcomp>)filename
num_passesfield_typesN)
isinstancer   AssertionErrorZget_childrenr   r   r   __init__ZCreateTextFileReader_reader_batch_size)	selfZinit_netr   schemar   
batch_sizenamechildr   r	   r	   r   r      s     zTextFileReader.__init__c                 C   s\   |j | jgt|   | jd}t|tjkr6|g}|	|d gt
|d}||fS )z8
        Create op for reading a batch of rows.
        )r   r   Zshould_stop)ZTextFileReaderReadr   lenr   field_namesr   typer   ZBlobReferenceZIsEmptyZScopedBlobReferenceZNextName)r   netZblobsZis_emptyr	   r	   r   read*   s    zTextFileReader.readN)r   r   )__name__
__module____qualname____doc__r   r   r	   r	   r	   r   r      s   
r   N)	Zcaffe2.pythonr   Zcaffe2.python.dataior   Zcaffe2.python.schemar   r   r   r   r	   r	   r	   r   <module>   s   