3
Ud                 @   s  d Z ddlmZmZ ddlmZmZmZmZ ddl	m
Z
mZ ddlmZ erXddlmZ G dd ded	Zede
ee ee ee eeedddZede
ee ee ee deedef dddZde
ee ee ee ee eedef dddZdS )z#
Read SAS sas7bdat or xport files.
    )ABCMetaabstractmethod)TYPE_CHECKINGOptionalUnionoverload)FilePathOrBufferLabel)stringify_path)	DataFramec               @   s*   e Zd ZdZedddZedd ZdS )
ReaderBasez>
    Protocol for XportReader and SAS7BDATReader classes.
    Nc             C   s   d S )N )selfZnrowsr   r   K/var/www/html/virt/lib64/python3.6/site-packages/pandas/io/sas/sasreader.pyread   s    zReaderBase.readc             C   s   d S )Nr   )r   r   r   r   close   s    zReaderBase.close)N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r      s   r   )	metaclass.)filepath_or_bufferformatindexencoding	chunksizeiteratorreturnc             C   s   d S )Nr   )r   r   r   r   r   r   r   r   r   read_sas   s    	r   Nr   c             C   s   d S )Nr   )r   r   r   r   r   r   r   r   r   r   *   s    	Fc             C   s   |dkrVd}t | } t| ts&t|| j }|jdr>d}n|jdrNd}ntd|j dkrdd	lm} || |||d
}	n2|j dkrddlm	}
 |
| |||d
}	ntd|s|r|	S |	j
 }|	j  |S )a|  
    Read SAS files stored as either XPORT or SAS7BDAT format files.

    Parameters
    ----------
    filepath_or_buffer : str, path object or file-like object
        Any valid string path is acceptable. The string could be a URL. Valid
        URL schemes include http, ftp, s3, and file. For file URLs, a host is
        expected. A local file could be:
        ``file://localhost/path/to/table.sas``.

        If you want to pass in a path object, pandas accepts any
        ``os.PathLike``.

        By file-like object, we refer to objects with a ``read()`` method,
        such as a file handler (e.g. via builtin ``open`` function)
        or ``StringIO``.
    format : str {'xport', 'sas7bdat'} or None
        If None, file format is inferred from file extension. If 'xport' or
        'sas7bdat', uses the corresponding format.
    index : identifier of index column, defaults to None
        Identifier of column that should be used as index of the DataFrame.
    encoding : str, default is None
        Encoding for text data.  If None, text data are stored as raw bytes.
    chunksize : int
        Read file `chunksize` lines at a time, returns iterator.
    iterator : bool, defaults to False
        If True, returns an iterator for reading the file incrementally.

    Returns
    -------
    DataFrame if iterator=False and chunksize=None, else SAS7BDATReader
    or XportReader
    NzVIf this is a buffer object rather than a string name, you must specify a format stringz.xptZxportz	.sas7bdatZsas7bdatz"unable to infer format of SAS filer   )XportReader)r   r   r   )SAS7BDATReaderzunknown SAS format)r
   
isinstancestr
ValueErrorlowerendswithZpandas.io.sas.sas_xportr   Zpandas.io.sas.sas7bdatr    r   r   )r   r   r   r   r   r   Zbuffer_error_msgfnamer   readerr    datar   r   r   r   6   s2    *


).....).....)NNNNF)r   abcr   r   typingr   r   r   r   Zpandas._typingr   r	   Zpandas.io.commonr
   Zpandasr   r   r"   intboolr   r   r   r   r   <module>   s6               