Sindbad~EG File Manager
�
Mٜg; � �H � d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddl Z ddl
Zddlm
Z
ddlmZ ddlZdd lmZ dd
lmZ erddlmZmZmZmZ dZd
ZdZdZg d�ZdZ dZ!dZ"dZ#de � de"� de!� de#� d� Z$de � de!� d�Z%dZ&d!d�Z'd"d�Z(d� Z)d� Z* G d� d eejV � Z,y)#a-
Read a SAS XPort format file into a Pandas DataFrame.
Based on code from Jack Cushman (github.com/jcushman/xport).
The file format is defined here:
https://support.sas.com/content/dam/SAS/support/en/technical-papers/record-layout-of-a-sas-version-5-or-6-data-set-in-sas-transport-xport-format.pdf
� )�annotations)�abc)�datetimeN)�
TYPE_CHECKING)�Appender)�find_stack_level)�
get_handle)�
ReaderBase)�CompressionOptions�DatetimeNaTType�FilePath�
ReadBufferzPHEADER RECORD*******LIBRARY HEADER RECORD!!!!!!!000000000000000000000000000000 zKHEADER RECORD*******MEMBER HEADER RECORD!!!!!!!000000000000000001600000000zPHEADER RECORD*******DSCRPTR HEADER RECORD!!!!!!!000000000000000000000000000000 zPHEADER RECORD*******OBS HEADER RECORD!!!!!!!000000000000000000000000000000 )�ntype�nhfun�field_length�nvar0�name�label�nform�nfl�num_decimals�nfj�nfill�niform�nifl�nifd�npos�_z�Parameters
----------
filepath_or_buffer : str or file-like object
Path to SAS file or object implementing binary read method.z�index : identifier of index column
Identifier of column that should be used as index of the DataFrame.
encoding : str
Encoding for text data.
chunksize : int
Read file `chunksize` lines at a time, returns iterator.zBformat : str
File format, only `xport` is currently supported.z\iterator : bool, default False
Return XportReader object for reading file incrementally.z#Read a SAS file into a DataFrame.
�
a
Returns
-------
DataFrame or XportReader
Examples
--------
Read a SAS Xport file:
>>> df = pd.read_sas('filename.XPT')
Read a Xport file in 10,000 line chunks:
>>> itr = pd.read_sas('filename.XPT', chunksize=10000)
>>> for chunk in itr:
>>> do_something(chunk)
z$Class for reading SAS Xport files.
z�
Attributes
----------
member_info : list
Contains information about the file
fields : list
Contains information about the variables in the file
z�Read observations from SAS Xport file, returning as data frame.
Parameters
----------
nrows : int
Number of rows to read from data file; if None, read whole
file.
Returns
-------
A DataFrame.
c �n � t j | d� S # t $ r t j cY S w xY w)z1Given a date in xport format, return Python date.z%d%b%y:%H:%M:%S)r �strptime�
ValueError�pd�NaT)�datestrs �B/usr/local/lib/python3.12/site-packages/pandas/io/sas/sas_xport.py�_parse_dater'