/usr/local/lib64/python3.6/site-packages/pandas/io/sas/__pycache__
NameSizeModeActions
sas7bdat.cpython-36.pyc204660644editdlrm
sasreader.cpython-36.pyc37110644editdlrm
sas_constants.cpython-36.pyc57000644editdlrm
sas_xport.cpython-36.pyc105960644editdlrm
__init__.cpython-36.pyc2050644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/pandas/io/sas/__pycache__/sas7bdat.cpython-36.pyc (20466B)
3 :%Eg{o@sdZddlmZddlmZmZddlZddlZddlm Z m Z ddl Z ddl mZddlmZddljjjZddlmZe jee jd d d ZGd d d ZGdddZGdddeejZdS)a Read SAS7BDAT files Based on code written by Jared Hobbs: https://bitbucket.org/jaredhobbs/sas7bdat See also: https://github.com/BioStatMatt/sas7bdat Partial documentation of the file format: https://cran.r-project.org/package=sas7bdat/vignettes/sas7bdat.pdf Reference for binary data compression: http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/CUJ/1992/9210/ross/ross.htm )abc)datetime timedeltaN)EmptyDataErrorOutOfBoundsDatetime)get_filepath_or_buffer)Parser) ReaderBase) sas_datetimesunitreturnc Cs^ytj||ddStk rX|dkr6|jddS|dkrL|jddStdYnXd S) a Convert to Timestamp if possible, otherwise to datetime.datetime. SAS float64 lacks precision for more than ms resolution so the fit to datetime.datetime is ok. Parameters ---------- sas_datetimes : {Series, Sequence[float]} Dates or datetimes in SAS unit : {str} "d" if the floats represent dates, "s" for datetimes Returns ------- Series Series of datetime64 dtype or datetime.datetime. z 1960-01-01)r originscSstdddt|dS)Ni)seconds)rr) sas_floatrB/usr/local/lib64/python3.6/site-packages/pandas/io/sas/sas7bdat.py7sz$_convert_datetimes..dcSstdddt|dS)Nir)days)rr)rrrrr;szunit must be 'd' or 's'N)pd to_datetimerapply ValueError)r r rrr_convert_datetimes s  rc@s eZdZdS)_subheader_pointerN)__name__ __module__ __qualname__rrrrrAsrc@s eZdZdS)_columnN)rrrrrrrr Esr c@seZdZdZd>ddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd?d8d9Zd:d;Zdrrrcolumn_data_lengthssz"SAS7BDATReader.column_data_lengthscCstj|jtjdS)z0Return a numpy int64 array of the column offsets)rA)rBrCr4rD)r>rrrcolumn_data_offsetssz"SAS7BDATReader.column_data_offsetscCstj|jtjddS)zj Returns a numpy character array of the column types: s (string) or d (double) ZS1)rA)rBrCr5rA)r>rrr column_typesszSAS7BDATReader.column_typesc Cs(y|jjWntk r"YnXdS)N)r;closeAttributeError)r>rrrrHszSAS7BDATReader.closecCs |jjd|jjd|_|jdttjtjkrD|jtdd\}}|j tj tj }|tj krtj }d|_d|_tj|_tj|_nd|_tj|_tj|_d|_|j tjtj}|tjkrtj }||}|j tjtj}|dkrd |_nd |_|j tjtjd}|tjkr"tj||_nd |d |_|j tj tj!}|d krRd|_"n|dkrdd|_"nd|_"|j tj#tj$}|j%d|_&|j'r|j&j(|j)p|j*|_&|j tj+tj,}|j%d|_-|j'r|j-j(|j)p|j*|_-t.ddd}|j/tj0|tj1}|t2j3|dd|_4|j/tj5|tj6}|t2j3|dd|_7|j8tj9|tj:|_;|jj|j;d}|j|7_t|j|j;kr|jtd|j8tj<|tj=|_>|j8tj?|tj@|_A|j tjB|tjC}|j%d|_D|j'r|jDj(|j)p|j*|_D|j tjE|tjF}|j%d|_G|j'rB|jGj(|j)p<|j*|_G|j tjH|tjI}|j%d|_J|j'r|jJj(|j)p||j*|_J|j tjK|tjL}|j%d}t|dkr|j(|j)p|j*|_Mn@|j tjN|tjO}|j%d|_M|j'r|jMj(|j)p|j*|_MdS)Nri z'magic number mismatch (not a SAS file?)TF<>zunknown (code=)1unix2Zwindowsunknowns irr)r z*The SAS7BDAT file appears to be truncated.)rr)Pr7seekreadr2lenconstmagicrHr _read_bytesZalign_1_offsetZalign_1_lengthZu64_byte_checker_valueZ align_2_valueU64 _int_lengthZpage_bit_offset_x64_page_bit_offsetZsubheader_pointer_length_x64_subheader_pointer_lengthZpage_bit_offset_x86Zsubheader_pointer_length_x86Zalign_2_offsetZalign_2_lengthZalign_1_checker_valueZendianness_offsetZendianness_length byte_orderZencoding_offsetZencoding_lengthZencoding_names file_encodingZplatform_offsetZplatform_lengthplatformZdataset_offsetZdataset_lengthrstripnamer*decoder(r+Zfile_type_offsetZfile_type_length file_typer _read_floatZdate_created_offsetZdate_created_lengthrZ to_timedeltaZ date_createdZdate_modified_offsetZdate_modified_lengthZ date_modified _read_intZheader_size_offsetZheader_size_length header_lengthZpage_size_offsetZpage_size_length _page_lengthZpage_count_offsetZpage_count_lengthZ _page_countZsas_release_offsetZsas_release_lengthZ sas_releaseZsas_server_type_offsetZsas_server_type_lengthZ server_typeZos_version_number_offsetZos_version_number_length os_versionZos_name_offsetZos_name_lengthos_nameZos_maker_offsetZos_maker_length)r>Zalign1Zalign2bufZ total_alignepochxrrrr<s               zSAS7BDATReader._get_propertiescCs"|j|jp dd}|dkrt|S)Nr)nrows)rUr' StopIteration)r>darrr__next__.szSAS7BDATReader.__next__cCsJ|dkr|jtd|j||}|dkr0dnd}tj|j||dS)NrKrJzinvalid float widthfrr)rKrJ)rHrrYstructunpackr^)r>offsetwidthrkfdrrrre5s  zSAS7BDATReader._read_floatcCsP|d kr|jtd|j||}dddd d |}tj|j||d }|S) NrrKrJzinvalid int widthbhlq)rrxrKrJr)rrxrKrJ)rHrrYrsrtr^)r>rurvrkitZivrrrrf>s zSAS7BDATReader._read_intcCs|jdkrX|jj||jj|}t||krT|jd|dd|dd}t||S||t|jkrz|jtd|j|||SdS)NzUnable to read rz bytes from file position .zThe cached page is too small.)r2r7rTrUrVrHr)r>rulengthrkmsgrrrrYGs    zSAS7BDATReader._read_bytescCsZd}xP|sT|jj|j|_t|jdkr*Pt|j|jkrJ|jtd|j}qWdS)NFrz2Failed to read a meta data page from the SAS file.)r7rUrhr2rVrHr_process_page_meta)r>donerrrr=VszSAS7BDATReader._parse_metadatacCsV|jtjtjgtj}|j|kr,|j|jtj@}|jtjk}|pT|pT|jgkS)N) _read_page_headerrWpage_meta_typeZ page_amd_typepage_mix_types_current_page_type_process_page_metadatapage_data_typer1)r>pt is_data_pageZ is_mix_pagerrrras   z!SAS7BDATReader._process_page_metacCsX|j}tj|}|j|tj|_tj|}|j|tj|_tj |}|j|tj |_ dS)N) r\rWZpage_type_offsetrfZpage_type_lengthrZblock_count_offsetZblock_count_lengthZ_current_page_block_countZsubheader_count_offsetZsubheader_count_length_current_page_subheaders_count)r> bit_offsetZtxrrrrns   z SAS7BDATReader._read_page_headercCst|j}xht|jD]Z}|jtj||}|jdkr4q|jtjkrBq|j |j }|j ||j|j }|j ||qWdS)Nr)r\ranger_process_subheader_pointersrWZsubheader_pointers_offsetrr,Ztruncated_subheader_id_read_subheader_signatureru_get_subheader_indexptype_process_subheader)r>ripointersubheader_signaturesubheader_indexrrrrys   z%SAS7BDATReader._process_page_metadatacCs`tjj|}|dkr\|tjkp$|dk}|tjk}|jdkrL|rL|rLtjj}n|jt d|S)Nrr"zUnknown subheader signature) rWZsubheader_signature_to_indexgetZcompressed_subheader_idZcompressed_subheader_typer,SASIndexdata_subheader_indexrHr)r> signaturer,rr$f1f2rrrrs   z#SAS7BDATReader._get_subheader_indexc Cs|j}|||}|j||j}||j7}|j||j}||j7}|j|d}|d7}|j|d}t} || _|| _|| _|| _| S)Nr)r]rfr[rrurr,r) r>ruZsubheader_pointer_indexZsubheader_pointer_lengthZ total_offsetZsubheader_offsetZsubheader_lengthZsubheader_compressionZsubheader_typermrrrrs     z*SAS7BDATReader._process_subheader_pointerscCs|j||j}|S)N)rYr[)r>rurrrrrsz(SAS7BDATReader._read_subheader_signaturecCs|j}|j}|tjjkr |j}n|tjjkr4|j}n|tjjkrH|j }n|tjj kr\|j }nt|tjj krp|j }n`|tjjkr|j}nL|tjjkr|j}n8|tjjkr|j}n$|tjjkr|jj|dStd|||dS)Nzunknown subheader index)rurrWrZrow_size_index_process_rowsize_subheaderZcolumn_size_index_process_columnsize_subheaderZcolumn_text_index_process_columntext_subheaderZcolumn_name_index_process_columnname_subheaderZcolumn_attributes_index#_process_columnattributes_subheaderZformat_and_label_index_process_format_subheaderZcolumn_list_index_process_columnlist_subheaderZsubheader_counts_index_process_subheader_countsrr1appendr)r>rrrur processorrrrrs.          z!SAS7BDATReader._process_subheadercCs|j}|}|}|jr&|d7}|d7}n|d7}|d7}|j|tj|||_|j|tj|||_|j|tj|||_ |j|tj |||_ tj |}|j||||_ |j|d|_|j|d|_dS)Niiibizrx)r[rZrfrWZrow_length_offset_multiplierZ row_lengthZrow_count_offset_multiplier row_countZcol_count_p1_multiplier col_count_p1Zcol_count_p2_multiplier col_count_p2Z'row_count_on_mix_page_offset_multiplierZ_mix_page_row_count_lcs_lcp)r>rurint_lenZ lcs_offsetZ lcp_offsetZmxrrrrs(  z)SAS7BDATReader._process_rowsize_subheadercCsT|j}||7}|j|||_|j|j|jkrPtd|jd|jd|jddS)Nz Warning: column count mismatch (z + z != z) )r[rf column_countrrprint)r>rurrrrrrs z,SAS7BDATReader._process_columnsize_subheadercCsdS)Nr)r>rurrrrrsz(SAS7BDATReader._process_subheader_countsc Cs||j7}|j|tj}|j||}|d|jd}|}|jrR|j|jpN|j }|j j |t |j dkrd}xtj D]}||krz|}qzW||_||j8}|d} |jr| d7} |j| |j}|jd}|dkrd|_|d} |jr| d7} |j| |j}|d|j|_n|tjkrV|d } |jr6| d7} |j| |j}|d|j|_nH|jdkrd|_|d} |jr| d7} |j| |j}|d|j|_|jrt|d r|jj|jp|j |_dS) Nrs rr"rK ( creator_proc)r[rfrWZtext_block_size_lengthrYrar*rcr(r+r-rrVZcompression_literalsr,rZrrrZrle_compressionhasattr) r>rurZtext_block_sizerkZ cname_rawcnameZcompression_literalZclZoffset1rrrrsX          z,SAS7BDATReader._process_columntext_subheaderc Cs|j}||7}|d|dd}xt|D]}|tj|dtj}|tj|dtj}|tj|dtj}|j|tj} |j|tj } |j|tj } |j | } |j j | | | | q,WdS)Nrx rJr)r[rrWZcolumn_name_pointer_lengthZ!column_name_text_subheader_offsetZcolumn_name_offset_offsetZcolumn_name_length_offsetrfZ!column_name_text_subheader_lengthZcolumn_name_offset_lengthZcolumn_name_length_lengthr-r.r) r>rurrZcolumn_name_pointers_countrZtext_subheaderZcol_name_offsetZcol_name_lengthidx col_offsetZcol_lenZname_strrrrr-s   z,SAS7BDATReader._process_columnname_subheaderc Cs|j}|d|d|d}xt|D]}||tj||d}|d|tj||d}|d|tj||d}|j||} |jj| |j|tj } |j j| |j|tj } |j j| dkrdndq(WdS)NrxrrJrds) r[rrWZcolumn_data_offset_offsetZcolumn_data_length_offsetZcolumn_type_offsetrfr4rZcolumn_data_length_lengthr3Zcolumn_type_lengthr5) r>rurrZcolumn_attributes_vectors_countrZcol_data_offsetZ col_data_lenZ col_typesrmrrrrMs   z2SAS7BDATReader._process_columnattributes_subheadercCsdS)Nr)r>rurrrrrgsz,SAS7BDATReader._process_columnlist_subheadercCs|j}|tjd|}|tjd|}|tjd|}|tjd|}|tjd|}|tjd|} |j|tj } t | t |j d} |j|tj } |j|tj} |j|tj}t |t |j d}|j|tj}|j| tj}|j |}||||}|j | }|| | | }t |j}t}||_|j||_||_||_|j||_|j||_|jj||jj|dS)Nr)r[rWZ)column_format_text_subheader_index_offsetZcolumn_format_offset_offsetZcolumn_format_length_offsetZ(column_label_text_subheader_index_offsetZcolumn_label_offset_offsetZcolumn_label_length_offsetrfZ)column_format_text_subheader_index_lengthminrVr-Zcolumn_format_offset_lengthZcolumn_format_length_lengthZ(column_label_text_subheader_index_lengthZcolumn_label_offset_lengthZcolumn_label_length_lengthr0r Zcol_idr.rblabelformatr5ctyper3rr/r)r>rurrZtext_subheader_formatZcol_format_offsetZcol_format_lenZtext_subheader_labelZcol_label_offsetZ col_label_lenrmZ format_idxZ format_startZ format_lenZ label_idxZ label_startZ label_lenZ label_namesZ column_labelZ format_namesZ column_formatZcurrent_column_numbercolrrrrks@          z(SAS7BDATReader._process_format_subheadercCs|dkr|jdk r|j}n|dkr(|j}t|jdkrF|jtd|j|jkrVdS|j|j}||krn|}|jjd}|jjd}tj ||ft d|_ tj |d|ftj d|_d|_t|}|j||j}|jdk r|j|j}|S)NrzNo columns to parse from filerr)rArJ)r'rrVr5rHrr6countrBemptyobject _string_chunkZzerosZuint8 _byte_chunk_current_row_in_chunk_indexrrU_chunk_to_dataframer$Z set_index)r>rnmndnsprsltrrrrUs.       zSAS7BDATReader.readcCsg|_|jj|j|_t|jdkr(dSt|j|jkrf|jdt|jdd|jdd}t||j|j }|t j kr|j |t j @}t j gt j}| r|j |kr|jSdS)NrTz-failed to read complete page from file (read rz of z bytes)F)r1r7rUrhr2rVrHrrrrWrrrr_read_next_page)r>rZ page_typerrrrrrs"  zSAS7BDATReader._read_next_pagec Cs|j}|j}t|||}tj|d}d \}}xft|jD]V}|j|}|j|dkr|j|ddfj |j dd||<t j ||t j d||<|jr|j|tjkrt||d||<n"|j|tjkrt||d||<|d7}q<|j|dkrx|j|ddf||<|jrD|jdk rD||jj|jp<|j||<|jrn||jjdk} t j|j| |f<|d7}q<|jtd |j|qnrixrZjsZjbjrbiirrrrs8  $   z"SAS7BDATReader._chunk_to_dataframe)NTTNNTT)N)!rrr__doc__r@rErFrGrHr<rqrerfrYr=rrrrrrrrrrrrrrrrUrrrrrrr!JsJ $       4 0 "r!)r collectionsrrrrsZnumpyrBZ pandas.errorsrrZpandasrZpandas.io.commonrZpandas.io.sas._sasrZpandas.io.sas.sas_constantsioZsasZ sas_constantsrWZpandas.io.sas.sasreaderr ZSeriesr9rrr Iteratorr!rrrrs    !