zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
U
­ý°de9ã@sˆddlZddlmZddlZddlZddlmZddlZddlZ    ddl
Z
ddl m Z ddl mmZddlZddlmZe
jdd„ƒZe
jdeddƒfd    dgfgd
d d „ƒZGd d„dƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z e
j! "dddg¡dd„ƒZ#d d!„Z$d"d#„Z%d$d%„Z&d&d'„Z'd(d)„Z(d*d+„Z)d,d-„Z*d.d/„Z+d0d1„Z,d2d3„Z-e
j! "d4d5d6d7g¡d8d9„ƒZ.d:d;„Z/d<d=„Z0dS)>éN)Údatetime)ÚPath)ÚEmptyDataErrorcCs |dddƒS)NÚioÚsasÚdata©)ÚdatapathrrúXd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/sas/test_sas7bdat.pyÚdirpathsr ééé)Úparamsc CsÎ|j\}}tj |d|›d¡}t |¡}tdddƒ}tj|ddd}|||d<tj|ddd}|||d<t|j    dƒD]D}    |j
dd…|    f}
|
j t j kr€| |    |j
dd…|    f t j¡¡q€||fS)    NZtest_sas7bdat_z.csvi¨r ZColumn4Úd)ÚunitZColumn12)ÚparamÚosÚpathÚjoinÚpdÚread_csvrZ to_timedeltaÚrangeÚshapeÚilocÚdtypeÚnpÚint64ZisetitemÚastypeÚfloat64) Úrequestr ÚiÚtest_ixÚfnameÚdfÚepochÚt1Út2ÚkÚcolrrr
Ú data_test_ixs
 
    $r*c@s eZdZejjdd„ƒZejjdd„ƒZejjdd„ƒZejjdd„ƒZ    e
  d    ¡ejjd
d „ƒƒZ ejjej  d d ¡ej  deddƒ¡dd„ƒƒƒZdd„ZdS)Ú TestSAS7BDATcCsF|\}}|D]4}tj |d|›d¡}tj|dd}t ||¡q dS©NÚtestú    .sas7bdatúutf-8©Úencoding)rrrrÚread_sasÚtmÚassert_frame_equal©Úselfr r*Údf0r"r(r#r$rrr
Útest_from_file*s
zTestSAS7BDAT.test_from_filec
CsŠ|\}}|D]x}tj |d|›d¡}t|dƒ}| ¡}W5QRXt |¡}    tj|    dddd}
|
 ¡} W5QRXt    j
| |dd    q dS)
Nr-r.ÚrbÚsas7bdatTr/©ÚformatÚiteratorr1F©Z check_exact) rrrÚopenÚreadrÚBytesIOrr2r3r4) r6r r*r7r"r(r#ÚfZbytsÚbufÚrdrr$rrr
Útest_from_buffer2s 
ÿzTestSAS7BDAT.test_from_bufferc    
Cs˜|\}}|D]†}tj |d|›d¡}tj|dddV}| d¡}t ||jdd…dd…f¡| d¡}t ||jdd    …dd…f¡W5QRXq dS)
Nr-r.Tr/©r=r1rréé)    rrrrr2r@r3r4r)    r6r r*r7r"r(r#rDr$rrr
Útest_from_iterator@s
 
zTestSAS7BDAT.test_from_iteratorcCsJ|\}}|D]8}ttj |d|›d¡ƒ}tj|dd}t ||¡q dSr,)rrrrrr2r3r4r5rrr
Útest_path_pathlibKs
zTestSAS7BDAT.test_path_pathlibzpy.pathc    CsVddlm}|\}}|D]8}|tj |d|›d¡ƒ}tj|dd}t ||¡qdS)Nr)Úlocalr-r.r/r0)    Zpy.pathrKrrrrr2r3r4)    r6r r*Z    LocalPathr7r"r(r#r$rrr
Útest_path_localpathSs  z TestSAS7BDAT.test_path_localpathÚ    chunksize)rGrHé
é r(r éc    Cs`tj |d|›d¡}tj||dd"}d}|D]}||jd7}q0W5QRX||jks\t‚dS)Nr-r.r/)rMr1r)rrrrr2rÚ    row_countÚAssertionError)r6r r(rMr#rDÚyÚxrrr
Útest_iterator_loop^s zTestSAS7BDAT.test_iterator_loopc    Csxtj |d¡}tj|dddd}| |jd¡}W5QRXtj|ddd}| |jd¡}W5QRXt ||¡dS)Nútest1.sas7bdatr:Tr/r;érF)    rrrrr2r@rQr3r4)r6r r#rDÚd1Zd2rrr
Útest_iterator_read_too_muchjsÿz(TestSAS7BDAT.test_iterator_read_too_muchN)Ú__name__Ú
__module__Ú __qualname__ÚpytestÚmarkZslowr8rErIrJÚtdZ
skip_if_norLÚ parametrizerrUrYrrrr
r+)s 
 
 
 
 
          r+c
    CsÊ|ddddƒ}t |¡}tj|dd}|jD]2}z||j d¡||<Wq,tk
r\Yq,Xq,t ||¡ddlm    }t
  ||d    d
¡}|  ¡}W5QRXt |j|jƒD]\}}    ||     ¡ks¬t‚q¬dS) NrrrrVr/r0r)ÚSAS7BDATReaderF)Zconvert_header_text)rr2ÚcolumnsÚstrÚdecodeÚAttributeErrorr3r4Zpandas.io.sas.sas7bdatraÚ
contextlibÚclosingr@ÚziprR)
r    r#Údf1Údf2r)rarDZdf3rTrSrrr
Útest_encoding_optionsws
 
  rkc    Cst|ddddƒ}tj|ddd}|jdks.t‚| ¡}W5QRXtj|ddd}| ¡}W5QRXt ||¡dS)    NrrrrVZinferT)r1r=Úcp1252)rr2Zinferred_encodingrRr@r3r4)r    r#Z
df1_readerriZ
df2_readerrjrrr
Útest_encoding_inferŠsrmcCsj|ddddƒ}tj|dd}|ddddƒ}tj|dgd    }d
d d d g}|| tj¡||<t ||¡dS)Nrrrzproductsales.sas7bdatr/r0zproductsales.csvZMONTH©Z parse_datesZACTUALZPREDICTZQUARTERZYEAR©rr2rrrrr3r4)r    r#r$r7Zvnrrr
Útest_productsales™s rpcCsL|ddddƒ}t |¡}|ddddƒ}t |¡}| tj¡}t ||¡dS)Nrrrztest_12659.sas7bdatztest_12659.csvro©r    r#r$r7rrr
Ú
test_12659£s 
 
 rrcCsP|ddddƒ}t |¡}|ddddƒ}t |¡}| tj¡}tj||dddS)Nrrrzairline.sas7bdatz airline.csvFr>rorqrrr
Ú test_airline¬s 
 
 rscCsr|ddddƒ}t |¡}|ddddƒ}tj|dddd    d
gd }|jdd…d fj d ¡||jd <t ||¡dS)Nrrrzdatetime.sas7bdatz datetime.csvZDate1ZDate2ÚDateTimeZ
DateTimeHiZTaiwrnrGÚus)    rr2rrÚdtÚroundrbr3r4rqrrr
Útest_date_timeµs
 ÿ$rxÚcolumnZWGTZCYLcCsD|ddddƒ}tj|dd}||}|| ¡}tj||dddS)    Nrrrz cars.sas7bdatúlatin-1r0Tr>)rr2rwr3Zassert_series_equal)r    ryr#r$ÚresultÚexpectedrrr
Útest_compact_numerical_valuesÂs
 r}cCsH|ddddƒ}tj|dd}|ddddƒ}tj|dd}t ||¡dS)Nrrrzmany_columns.sas7bdatrzr0zmany_columns.csv©rr2rr3r4rqrrr
Útest_many_columnsÐs
rcCs0|ddddƒ}tj|dd}t|ƒdks,t‚dS)Nrrrzload_log.sas7bdatrzr0i1©rr2ÚlenrR©r    r#r$rrr
Ú test_inconsistent_number_of_rowsÛsrƒc    Cs6|ddddƒ}tjtddt |¡W5QRXdS)Nrrrzzero_variables.sas7bdatzNo columns to parse from file©Úmatch)r]Úraisesrrr2)r    r#rrr
Útest_zero_variablesâsr‡cCsD|ddddƒ}t |¡}t dddœg¡jdd…}t ||¡dS)    Nrrrzzero_rows.sas7bdatÚagð?)Z
char_fieldZ    num_fieldr)rr2Ú    DataFramerr3r4)r    r#r{r|rrr
Útest_zero_rowsés
rŠc    Cs:|ddddƒ}d}tjt|dt |¡W5QRXdS)Nrrrzcorrupt.sas7bdatz4'SAS7BDATReader' object has no attribute 'row_count'r„)r]r†rerr2)r    r#Úmsgrrr
Útest_corrupt_readñsrŒcCsjt|tƒr*|jtt|jdƒdƒddSt|tƒrbtjj    |d}|jtt|jdƒdƒddS|SdS)Néýÿÿÿéè)Ú microsecond)Ztimestr)
Ú
isinstancerÚreplaceÚintrwrrcÚdateutilÚparserÚparse)ÚtsÚ_tsrrr
Úround_datetime_to_msús 
 
 r˜c Cs|ddddƒ}tj|dd}| dd„¡}z|d    j d
¡|d    <WnJtjjjjk
rh| t    ¡}Yn&t
k
rŒ|d      t    ¡|d    <YnXtj d d gd dgt dddddddƒt dddddddƒgddgt dddƒt dddƒgdœddd    ddgd}t ||¡dS) Nrrrúmax_sas_date.sas7bdatú
iso-8859-1r0cSst|tƒr| ¡S|S©N©rrcÚlstrip©rTrrr
Ú<lambda> óz#test_max_sas_date.<locals>.<lambda>Údt_as_dtruÚmaxÚnormalçßÿÿÊ`‰MBçžïÿÝÜAé'é ééé;éX>iãér ç€qgFAç€@Õ@©ÚtextÚ dt_as_floatr¡Ú date_as_floatÚ date_as_dater°r±r²r³©rb)rr2ÚapplymaprvrwÚ_libsÚtslibsÚ np_datetimeÚOutOfBoundsDatetimer˜reÚapplyr‰rr3r4©r    r#r$r|rrr
Útest_max_sas_dates*þø
õ r¼c CsRdddddg}|dddd    ƒ}g}tj|d
d d D]Ž}| d d„¡}z|dj d¡|d<WnJtjjjjk
r€| t    ¡}Yn&t
k
r¤|d  t    ¡|d<YnX|j ddd|  |¡q0tjdgdgtdddddddƒgdgtdddƒgdœ|dtjdgdgt d¡gd gt d!¡gdœ|dg}t||ƒD]\}}t ||¡q6dS)"Nr°r±r¡r²r³rrrr™ršr )r1rMcSst|tƒr| ¡S|Sr›rœržrrr
rŸ1r z,test_max_sas_date_iterator.<locals>.<lambda>ruT)ZinplaceZdropr¢r¤r¦r§r¨r©rªr«r­r¯r´r£r¥z2019-08-01 23:59:59.999r®z
2019-08-01)rr2rµrvrwr¶r·r¸r¹r˜rerºZ reset_indexÚappendr‰rrZ
datetime64rhr3r4)r    Z    col_orderr#Úresultsr$r|r{rrr
Útest_max_sas_date_iterator'sD  ûø
 
 
ûøõr¿c Cs`|ddddƒ}tj|dd}t tddd    ƒtjgtddd    d
d d d ƒtjgd œ¡}t ||¡dS)Nrrrzdates_null.sas7bdatr/r0r¦r§r¨r©rªiQ>)ZdatecolZ datetimecol)rr2r‰rZNaTr3r4r»rrr
Útest_null_dateUs
þþûÿ rÀcCs,|ddddƒ}t |¡}t|ƒdks(t‚dS)Nrrrztest_meta2_page.sas7bdatrŽr€r‚rrr
Útest_meta2_pagehs
rÁz8test_file, override_offset, override_value, expected_msg)útest2.sas7bdaté½×éú Out of bounds)rÂrÃr zunknown control byte)ztest3.sas7bdatišÍé¸rÅc    Csft|ddd|ƒdƒ}t| ¡ƒ}W5QRX|||<tjt|dtjt     |¡ddW5QRXdS)    z1Errors in RLE/RDC decompression should propagate.rrrr9r„r:)r<N)
r?Ú    bytearrayr@r]r†Ú    Exceptionrr2rrA)r    Z    test_fileZoverride_offsetZoverride_valueZ expected_msgÚfdrrrr
Útest_rle_rdc_exceptionsos
rÊcCsH|ddddƒ}tj|dd}|ddddƒ}tj|dd    }t ||¡dS)
Nrrrz0x40controlbyte.sas7bdatÚasciir0z0x40controlbyte.csvÚobject)rr~rqrrr
Útest_0x40_control_byte‚s
rÍcCs2|ddddƒ}ttj|ddƒ}|jdks.t‚dS)Nrrrz0x00controlbyte.sas7bdat.bz2éø*)rM)rÎrW)Únextrr2rrRr‚rrr
Útest_0x00_control_byte‹srÐ)1rfrrrÚpathlibrZdateutil.parserr“Únumpyrr]Z pandas.errorsrZpandas.util._test_decoratorsÚutilZ_test_decoratorsr_ZpandasrZpandas._testingZ_testingr3Zfixturer rr*r+rkrmrprrrsrxr^r`r}rrƒr‡rŠrŒr˜r¼r¿rÀrÁrÊrÍrÐrrrr
Ú<module>sX    
 
N
         
     
#.ýþ