Files
vibe_data_ana/tests/__pycache__/test_data_understanding.cpython-311-pytest-8.3.3.pyc

215 lines
49 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<00>ߪi<DFAA>)<00><00>T<00>dZddlZddlmcmZddlZddlZ ddl
Z ddl m Z m Z ddlmZmZmZmZmZmZmZmZddlmZmZGd<06>d<07><00>ZGd<08>d <09><00>ZGd
<EFBFBD>d <0B><00>ZGd <0C>d <0A><00>ZGd<0E>d<0F><00>ZGd<10>d<11><00>ZGd<12>d<13><00>Z Gd<14>d<15><00>Z!dS)u$数据理解引擎的单元测试。<E8AF95>N)<02>datetime<6D> timedelta)<08>generate_basic_stats<74>understand_data<74>_infer_column_type<70>_infer_data_type<70>_identify_key_fields<64>_evaluate_data_quality<74>_get_sample_values<65>_generate_column_statistics)<02> DataProfile<6C>
ColumnInfoc<00><00>eZdZdZd<02>Zd<03>ZdS)<05>TestGenerateBasicStatsu测试基础统计生成。c<00>Z<00>tjgd<01>gd<02>gd<03>d<04><03><00>}t|d<05><00>}|d}d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<04><00>d <09>z}d
d |iz}t tj|<07><00><00><00><00>d x}x}}|d }d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<04><00>d <09>z}d
d |iz}t tj|<07><00><00><00><00>d x}x}}|d}d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<04><00>d <09>z}d
d |iz}t tj|<07><00><00><00><00>d x}x}}|d}t|<08><00>}d} || k}
|
s<EFBFBD>tjd|
fd|| f<02><00>dtj
<00><00>vstj t<00><00>rtjt<00><00>ndtj|<08><00>tj|<04><00>tj| <09><00>d<14>z} dd| iz} t tj| <0C><00><00><00><00>d x}x}x}
} d S)<17>测试基本功能。<E883BD><05><00><00><00><00>)<05>A<>B<>C<>D<>E)g%@g<><67><EFBFBD><EFBFBD><EFBFBD>L4@g<><67><EFBFBD><EFBFBD><EFBFBD>>@gffffffD@g<><67><EFBFBD><EFBFBD><EFBFBD>I@)<03>id<69>name<6D>value<75>test.csv<73> file_path<74><01>==<3D>z%(py1)s == %(py4)s<><02>py1<79>py4<79>assert %(py6)s<>py6N<36> row_countr<00> column_countr<00>columns<6E>z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)s<>len<65><04>py0<79>py2r(<00>py7<79>assert %(py9)s<>py9<79> <0C>pd<70> DataFramer<00>
@pytest_ar<61>_call_reprcompare<72> _saferepr<70>AssertionError<6F>_format_explanationr/<00> @py_builtins<6E>locals<6C>_should_repr_global_name<6D> <0A>self<6C>df<64>stats<74> @py_assert0<74> @py_assert3<74> @py_assert2<74> @py_format5<74> @py_format7<74> @py_assert1<74> @py_assert6<74> @py_assert5<74> @py_format8<74> @py_format10s <20>DD:\code\iov_data_analysis_agent_old\tests\test_data_understanding.py<70>test_basic_functionalityz/TestGenerateBasicStats.test_basic_functionalityse<00><00> <0F>\<5C>!<21>/<2F>/<2F>-<2D>-<2D>-<2D>3<>3<>3<>
<EFBFBD>
<EFBFBD> <0B> <0B><02> %<25>R<EFBFBD><1A>4<>4<><05>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>c<00><<00>tj<00><00>}t|d<01><00>}|d}d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<04><00>d<06>z}dd|iz}t tj|<07><00><00><00><00>d x}x}}|d
}d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<04><00>d<06>z}dd|iz}t tj|<07><00><00><00><00>d x}x}}|d }t|<08><00>}d} || k}
|
s<EFBFBD>tjd|
fd || f<02><00>d tj
<00><00>vstj t<00><00>rtjt<00><00>nd tj|<08><00>tj|<04><00>tj| <09><00>d<0E>z} dd| iz} t tj| <0C><00><00><00><00>d x}x}x}
} d S)u测试空 DataFrame。z empty.csvr+rr#r%r&r)r*Nr,r-r.r/r0r4r5r6rAs rO<00>test_empty_dataframez+TestGenerateBasicStats.test_empty_dataframe's<><00><00> <0F>\<5C>^<5E>^<5E><02>$<24>R<EFBFBD><1B>5<>5<><05>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)rQN)<06>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rPrS<00>rQrOrrs8<00><00><00><00><00><00>%<25>%<25> *<2A> *<2A> *<2A>*<2A>*<2A>*<2A>*<2A>*rQrc<00>*<00>eZdZdZd<02>Zd<03>Zd<04>Zd<05>ZdS)<07>TestInferColumnTypeu测试列类型推断。c<00><><00>tjgd<01><01><00>}t|<01><00>}d}||k}|s<>tjd|fd||f<02><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndtj|<03><00>d<06>z}dd|iz}ttj
|<06><00><00><00><00>d x}}d S)
u测试数值列。r<00>numericr#<00>z%(py0)s == %(py3)s<>dtype<70>r1<00>py3<79>assert %(py5)s<>py5N<35> r7<00>Seriesrr9r:r>r?r@r;r<r=<00>rB<00>colr^rGrJ<00> @py_format4<74> @py_format6s rO<00>test_numeric_columnz'TestInferColumnType.test_numeric_column5s<><00><00><10>i<EFBFBD><0F><0F><0F>(<28>(<28><03>"<22>3<EFBFBD>'<27>'<27><05>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!rQc<00><><00>tjgd<01><01><00>}t|<01><00>}d}||k}|s<>tjd|fd||f<02><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndtj|<03><00>d<06>z}dd|iz}ttj
|<06><00><00><00><00>d x}}d S)
u测试分类列。)
rrrrrrrrrr<00> categoricalr#r]r^r_rarbNrcres rO<00>test_categorical_columnz+TestInferColumnType.test_categorical_column;s<><00><00><10>i<EFBFBD>J<>J<>J<>K<>K<><03>"<22>3<EFBFBD>'<27>'<27><05>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%rQc<00><><00>tjtjdd<02><03><00><00><00>}t|<01><00>}d}||k}|s<>t jd|fd||f<02><00>dt j<00><00>vst j|<02><00>rt j |<02><00>ndt j |<03><00>d<08>z}d d
|iz}tt j |<06><00><00><00><00>d x}}d S) u测试日期时间列。<E58897>
2020-01-01r<00><01>periodsrr#r]r^r_rarbN) r7rd<00>
date_rangerr9r:r>r?r@r;r<r=res rO<00>test_datetime_columnz(TestInferColumnType.test_datetime_columnAs<><00><00><10>i<EFBFBD><02> <0A>l<EFBFBD>A<EFBFBD>><3E>><3E>><3E>?<3F>?<3F><03>"<22>3<EFBFBD>'<27>'<27><05>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"rQc<00><><00>tjd<01>td<02><00>D<00><00><00><00>}t|<01><00>}d}||k}|s<>t jd|fd||f<02><00>dt j<00><00>vst j|<02><00>rt j |<02><00>ndt j |<03><00>d<07>z}dd |iz}tt j |<06><00><00><00><00>d
x}}d
S) u$测试文本列唯一值多。c<00><00>g|]}d|<01><00><02><02>S)<01>text_rX)<02>.0<EFBFBD>is rO<00>
<listcomp>z8TestInferColumnType.test_text_column.<locals>.<listcomp>Is<00><00>9<>9<>9<><11><1B><11><1B><1B>9<>9<>9rQ<00>d<00>textr#r]r^r_rarbN) r7rd<00>rangerr9r:r>r?r@r;r<r=res rO<00>test_text_columnz$TestInferColumnType.test_text_columnGs<00><00><10>i<EFBFBD>9<>9<>e<EFBFBD>C<EFBFBD>j<EFBFBD>j<EFBFBD>9<>9<>9<>:<3A>:<3A><03>"<22>3<EFBFBD>'<27>'<27><05><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E>rQN)rTrUrVrWrirlrrr|rXrQrOrZrZ2sV<00><00><00><00><00><00>"<22>"<22>"<22>"<22>"<22> &<26>&<26>&<26> #<23>#<23>#<23> <1F><1F><1F><1F>rQrZc<00>*<00>eZdZdZd<02>Zd<03>Zd<04>Zd<05>ZdS)<07>TestInferDataTypeu测试数据类型推断。c<00><><00>tdddd<04><05><00>tdddd<08><05><00>td d
dd<04><05><00>g}t|<01><00>}d }||k}|s<>tjd |fd ||f<02><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndtj|<03><00>d<0F>z}dd|iz}ttj |<06><00><00><00><00>dx}}dS)u测试工单数据识别。<E588AB> ticket_idrz<00>ry<00>rr^<00> missing_rate<74> unique_count<6E>statusrkr<00>
created_atr<00>ticketr#r]<00> data_typer_rarbN<>
rrr9r:r>r?r@r;r<r=<00>rBr-r<>rGrJrgrhs rO<00>test_ticket_dataz"TestInferDataType.test_ticket_dataQs(<00><00> <17>K<EFBFBD>v<EFBFBD>C<EFBFBD>VY<56> Z<> Z<> Z<> <16>H<EFBFBD>M<EFBFBD><03>Z[<5B> \<5C> \<5C> \<5C> <16>L<EFBFBD>
<EFBFBD><13>[^<5E> _<> _<> _<>
<EFBFBD><07> %<25>W<EFBFBD>-<2D>-<2D> <09>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$rQc<00><><00>tdddd<04><05><00>tdddd<08><05><00>td d
dd <0B><05><00>g}t|<01><00>}d }||k}|s<>tjd |fd||f<02><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndtj|<03><00>d<10>z}dd|iz}ttj |<06><00><00><00><00>dx}}dS)u测试销售数据识别。<E588AB>order_idrzr<>ryr<><00>productrk<00>
<00>amountr\<00>2<00>salesr#r]r<>r_rarbNr<4E>r<>s rO<00>test_sales_dataz!TestInferDataType.test_sales_data\s(<00><00> <17>J<EFBFBD>f<EFBFBD>3<EFBFBD>UX<55> Y<> Y<> Y<> <16>I<EFBFBD>]<5D><13>[]<5D> ^<5E> ^<5E> ^<5E> <16>H<EFBFBD>I<EFBFBD>C<EFBFBD>VX<56> Y<> Y<> Y<>
<EFBFBD><07> %<25>W<EFBFBD>-<2D>-<2D> <09>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#rQc<00><><00>tdddd<04><05><00>tdddd<04><05><00>tdddd<04><05><00>g}t|<01><00>}d}||k}|s<>tjd |fd
||f<02><00>d t j<00><00>vstj|<02><00>rtj|<02><00>nd tj|<03><00>d <0C>z}d d|iz}ttj |<06><00><00><00><00>dx}}dS)u测试用户数据识别。<E588AB>user_idrzr<>ryr<>r<00>email<69>userr#r]r<>r_rarbNr<4E>r<>s rO<00>test_user_dataz TestInferDataType.test_user_datags(<00><00> <17>I<EFBFBD>V<EFBFBD>#<23>TW<54> X<> X<> X<> <16>F<EFBFBD>&<26>s<EFBFBD>QT<51> U<> U<> U<> <16>G<EFBFBD>6<EFBFBD><03>RU<52> V<> V<> V<>
<EFBFBD><07> %<25>W<EFBFBD>-<2D>-<2D> <09>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"rQc<00><><00>tdddd<04><05><00>tdddd<04><05><00>g}t|<01><00>}d}||k}|s<>tjd|fd ||f<02><00>d
t j<00><00>vstj|<02><00>rtj|<02><00>nd
tj|<03><00>d <0B>z}d d |iz}ttj |<06><00><00><00><00>dx}}dS)u测试未知数据类型。<E59E8B>col1r\r<>ryr<><00>col2<6C>unknownr#r]r<>r_rarbNr<4E>r<>s rO<00>test_unknown_dataz#TestInferDataType.test_unknown_datars<00><00> <17>F<EFBFBD>)<29>#<23>TW<54> X<> X<> X<> <16>F<EFBFBD>)<29>#<23>TW<54> X<> X<> X<>
<EFBFBD><07>
%<25>W<EFBFBD>-<2D>-<2D> <09>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%rQN)rTrUrVrWr<>r<>r<>r<>rXrQrOr~r~NsV<00><00><00><00><00><00>%<25>%<25> %<25> %<25> %<25> $<24> $<24> $<24> #<23> #<23> #<23>&<26>&<26>&<26>&<26>&rQr~c<00>$<00>eZdZdZd<02>Zd<03>Zd<04>ZdS)<06>TestIdentifyKeyFieldsu测试关键字段识别。c<00><00>tdddd<04><05><00>tdddd<04><05><00>g}t|<01><00>}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>d t j<00><00>vstj|<02><00>rtj|<02><00>nd d
<EFBFBD>z}d d |iz}ttj |<06><00><00><00><00>d x}}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>d t j<00><00>vstj|<02><00>rtj|<02><00>nd d
<EFBFBD>z}d d |iz}ttj |<06><00><00><00><00>d x}}d}|d}||v}|sltjd|fd||f<02><00>tj|<03><00>tj|<07><00>d<10>z}dd|iz} ttj | <09><00><00><00><00>d x}x}}d}|d}||v}|sltjd|fd||f<02><00>tj|<03><00>tj|<07><00>d<10>z}dd|iz} ttj | <09><00><00><00><00>d x}x}}d S)u测试时间字段识别。r<E38082>rr<>ryr<><00> closed_at<61><01>in<69>z%(py1)s in %(py3)s<>
key_fields<EFBFBD>r'r`rarbNu 创建时间<E697B6>z%(py1)s in %(py4)sr&r)r*u 完成时间<E697B6>
rr r9r:r;r>r?r@r<r=<00>
rBr-r<>rErGrgrhrFrHrIs
rO<00>test_time_fieldsz&TestIdentifyKeyFields.test_time_fields<64>s8<00><00> <17>L<EFBFBD>
<EFBFBD><13>[^<5E> _<> _<> _<> <16>K<EFBFBD>z<EFBFBD><03>Z]<5D> ^<5E> ^<5E> ^<5E>
<EFBFBD><07>
*<2A>'<27>2<>2<>
<EFBFBD>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>9<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8rQc<00><><00>tdddd<04><05><00>g}t|<01><00>}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd <09>z}d
d |iz}ttj |<06><00><00><00><00>d x}}d }|d}||v}|sltjd|fd||f<02><00>tj|<03><00>tj|<07><00>d<0F>z}dd|iz} ttj | <09><00><00><00><00>d x}x}}d S)u测试状态字段识别。r<E38082>rkr<>rr<>r<>r<>r<>r<>rarbNu状态r<E68081>r&r)r*r<>r<>s
rO<00>test_status_fieldz'TestIdentifyKeyFields.test_status_field<6C>s<><00><00> <17>H<EFBFBD>M<EFBFBD><03>Z[<5B> \<5C> \<5C> \<5C>
<EFBFBD><07>*<2A>'<27>2<>2<>
<EFBFBD>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/rQc<00><><00>tdddd<04><05><00>g}t|<01><00>}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd <09>z}d
d |iz}ttj |<06><00><00><00><00>d x}}d }|d}||v}|sltjd|fd||f<02><00>tj|<03><00>tj|<07><00>d<0F>z}dd|iz} ttj | <09><00><00><00><00>d x}x}}d S)u测试ID字段识别。r<E38082>rzr<>ryr<>r<>r<>r<>r<>rarbNu 标识符r<E7ACA6>r&r)r*r<>r<>s
rO<00> test_id_fieldz#TestIdentifyKeyFields.test_id_field<6C>s<><00><00> <17>K<EFBFBD>v<EFBFBD>C<EFBFBD>VY<56> Z<> Z<> Z<>
<EFBFBD><07>*<2A>'<27>2<>2<>
<EFBFBD>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5rQN)rTrUrVrWr<>r<>r<>rXrQrOr<>r<>}sG<00><00><00><00><00><00>%<25>%<25> 9<> 9<> 9<> 0<> 0<> 0<> 6<> 6<> 6<> 6<> 6rQr<>c<00>$<00>eZdZdZd<02>Zd<03>Zd<04>ZdS)<06>TestEvaluateDataQualityu测试数据质量评估。c<00><><00>tdddd<04><05><00>tdddd<08><05><00>g}t|d<04> <09><00>}d
}||k}|s<>tjd |fd ||f<02><00>d t j<00><00>vstj|<02><00>rtj|<02><00>nd tj|<03><00>d<0E>z}dd|iz}ttj |<06><00><00><00><00>dx}}dS)u测试高质量数据。r<E38082>r\r<>ryr<>r<>rkr<00>r+<00>P)<01>>=)z%(py0)s >= %(py3)s<> quality_scorer_rarbN<>
rr
r9r:r>r?r@r;r<r=<00>rBr-r<>rGrJrgrhs rO<00>test_high_quality_dataz.TestEvaluateDataQuality.test_high_quality_data<74>s<00><00> <17>F<EFBFBD>)<29>#<23>TW<54> X<> X<> X<> <16>F<EFBFBD>-<2D>c<EFBFBD>XY<58> Z<> Z<> Z<>
<EFBFBD><07>
/<2F>w<EFBFBD>#<23>F<>F<>F<> <0A>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"rQc<00><><00>tdddd<04><05><00>tdddd <09><05><00>g}t|d
<EFBFBD> <0B><00>}d }||k}|s<>tjd |fd||f<02><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndtj|<03><00>d<10>z}dd|iz}ttj |<06><00><00><00><00>dx}}dS)u*测试低质量数据高缺失率。r<E38082>r\g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>r<>r<>rkg<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?rryr<>r<><00><01><)z%(py0)s < %(py3)sr<73>r_rarbNr<4E>r<>s rO<00>test_low_quality_dataz-TestEvaluateDataQuality.test_low_quality_data<74>s<00><00> <17>F<EFBFBD>)<29>#<23>TV<54> W<> W<> W<> <16>F<EFBFBD>-<2D>c<EFBFBD>XY<58> Z<> Z<> Z<>
<EFBFBD><07>
/<2F>w<EFBFBD>#<23>F<>F<>F<> <0A>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!<21>!rQc<00>v<00>g}t|d<01><02><00>}d}||k}|s<>tjd|fd||f<02><00>dtj<00><00>vstj|<02><00>rtj|<02><00>ndtj|<03><00>d<07>z}dd |iz}ttj|<06><00><00><00><00>d
x}}d
S) u测试空数据。rr<>r<>r#r]r<>r_rarbN) r
r9r:r>r?r@r;r<r=r<>s rO<00>test_empty_dataz'TestEvaluateDataQuality.test_empty_data<74>s<><00><00><14><07>.<2E>w<EFBFBD>!<21>D<>D<>D<> <0A>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#rQN)rTrUrVrWr<>r<>r<>rXrQrOr<>r<><00>sG<00><00><00><00><00><00>%<25>%<25> #<23> #<23> #<23> "<22> "<22> "<22>$<24>$<24>$<24>$<24>$rQr<>c<00>$<00>eZdZdZd<02>Zd<03>Zd<04>ZdS)<06>TestGetSampleValuesu测试示例值获取。c<00><><00>tjgd<01><01><00>}t|d<02><03><00>}t|<02><00>}d}||k}|s<>t jd|fd||f<02><00>dt j<00><00>vst jt<00><00>rt j t<00><00>nddt j<00><00>vst j|<02><00>rt j |<02><00>ndt j |<03><00>t j |<04><00>d<08>z}d d
|iz}tt j |<07><00><00><00><00>d x}x}}d <0C>|D<00><00>}t|<08><00>} | s<>d dt j<00><00>vst jt<00><00>rt j t<00><00>ndt j |<08><00>t j | <09><00>d<0F>z}
tt j |
<EFBFBD><00><00><00><00>d x}} d S)r)
rrrrr<00><00><00><00> r<>r<00><01> max_samples<65><01><=<3D>z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} <= %(py6)sr/<00>samples<65>r1r'r`r*<00>assert %(py8)s<>py8Nc3<00>NK<00>|] }t|ttf<02><00>V<00><00>!dS<00>N)<03>
isinstance<EFBFBD>int<6E>float<61>rv<00>ss rO<00> <genexpr>z?TestGetSampleValues.test_basic_functionality.<locals>.<genexpr><3E>s6<00><00><00><00>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@rQ<00>,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}<7D>all<6C>r1r2r() r7rdr r/r9r:r>r?r@r;r<r=r<><00> rBrfr<>rGrL<00> @py_assert4rI<00> @py_format9rJrFrHs rOrPz,TestGetSampleValues.test_basic_functionality<74>s<00><00><10>i<EFBFBD>7<>7<>7<>8<>8<><03>$<24>S<EFBFBD>a<EFBFBD>8<>8<>8<><07> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@rQc<00>v<00>tjgd<01><01><00>}t|d<02><03><00>}t|<02><00>}d}||k}|s<>t jd|fd||f<02><00>dt j<00><00>vst jt<00><00>rt j t<00><00>nddt j<00><00>vst j|<02><00>rt j |<02><00>ndt j |<03><00>t j |<04><00>d <09>z}d
d |iz}tt j |<07><00><00><00><00>d x}x}}d S) u测试包含空值的情况。)rrNrNr<4E>rr<>rr<>r<>r/r<>r<>r<>r<>N) r7rdr r/r9r:r>r?r@r;r<r=)rBrfr<>rGrLr<>rIr<>s rO<00>test_with_null_valuesz)TestGetSampleValues.test_with_null_values<65>sY<00><00><10>i<EFBFBD>0<>0<>0<>1<>1<><03>$<24>S<EFBFBD>a<EFBFBD>8<>8<>8<><07> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> rQc<00><00>tjtjdd<02><03><00><00><00>}t|d<04><05><00>}t |<02><00>}d}||k}|s<>t jd|fd||f<02><00>dtj<00><00>vst j t<00><00>rt j
t<00><00>ndd tj<00><00>vst j |<02><00>rt j
|<02><00>nd t j
|<03><00>t j
|<04><00>d
<EFBFBD>z}d d |iz}tt j |<07><00><00><00><00>d x}x}}d<0E>|D<00><00>}t|<08><00>} | s<>ddtj<00><00>vst j t<00><00>rt j
t<00><00>ndt j
|<08><00>t j
| <09><00>d<11>z}
tt j |
<EFBFBD><00><00><00><00>d x}} d S)u测试日期时间值。rnrrorr<>r<>r<>r/r<>r<>r<>r<>Nc3<00>@K<00>|]}t|t<00><00>V<00><00>dSr<>)r<><00>strr<72>s rOr<>z;TestGetSampleValues.test_datetime_values.<locals>.<genexpr><3E>s0<00><00><00><00>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7rQr<>r<>r<>)r7rdrqr r/r9r:r>r?r@r;r<r=r<>r<>s rO<00>test_datetime_valuesz(TestGetSampleValues.test_datetime_values<65>s<00><00><10>i<EFBFBD><02> <0A>l<EFBFBD>A<EFBFBD>><3E>><3E>><3E>?<3F>?<3F><03>$<24>S<EFBFBD>a<EFBFBD>8<>8<>8<><07> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7rQN)rTrUrVrWrPr<>r<>rXrQrOr<>r<><00>sJ<00><00><00><00><00><00>"<22>"<22>A<01>A<01>A<01>!<21>!<21>!<21>8<>8<>8<>8<>8rQr<>c<00>*<00>eZdZdZd<02>Zd<03>Zd<04>Zd<05>ZdS)<07>TestGenerateColumnStatisticsu测试列统计信息生成。c<00><> <00>tjgd<01><01><00>}t|d<02><00>}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}d }||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}d }||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}d }||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}|d}d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<07><00>d<12>z}dd|iz} ttj
| <09><00><00><00><00>d
x}x}}|d }d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<07><00>d<12>z}dd|iz} ttj
| <09><00><00><00><00>d
x}x}}|d}d}||k}|sltjd|fd||f<02><00>tj|<03><00>tj|<07><00>d<12>z}dd|iz} ttj
| <09><00><00><00><00>d
x}x}}d
S)u测试数值列统计。rr\<00>meanr<6E>r<>rDr<>rarbN<>median<61>std<74>min<69>maxg@r#r%r&r)r*g<00>?g@<40> r7rdr r9r:r;r>r?r@r<r=<00>
rBrfrDrErGrgrhrFrHrIs
rO<00>test_numeric_statisticsz4TestGenerateColumnStatistics.test_numeric_statistics<63>s!<00><00><10>i<EFBFBD><0F><0F><0F>(<28>(<28><03>+<2B>C<EFBFBD><19>;<3B>;<3B><05><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D><1D>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"rQc<00><><00>tjgd<01><01><00>}t|d<02><00>}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}d }||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}|d}d }||k}|sltjd |fd||f<02><00>tj|<03><00>tj|<07><00>d<0F>z}dd|iz} ttj
| <09><00><00><00><00>d
x}x}}|d }d}||k}|sltjd |fd||f<02><00>tj|<03><00>tj|<07><00>d<0F>z}dd|iz} ttj
| <09><00><00><00><00>d
x}x}}d
S)u测试分类列统计。)rrrrrrk<00> most_commonr<6E>r<>rDr<>rarbN<>most_common_countrr#r%r&r)r*rr<>r<>s
rO<00>test_categorical_statisticsz8TestGenerateColumnStatistics.test_categorical_statistics<63>s<00><00><10>i<EFBFBD>1<>1<>1<>2<>2<><03>+<2B>C<EFBFBD><1D>?<3F>?<3F><05>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>+<2B>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.rQc<00>H<00>tjtjdd<02><03><00><00><00>}t|d<04><00>}d}||v}|s<>t jd|fd||f<02><00>t j|<03><00>dtj<00><00>vst j |<02><00>rt j|<02><00>ndd <09>z}d
d |iz}tt j |<06><00><00><00><00>d x}}d }||v}|s<>t jd|fd||f<02><00>t j|<03><00>dtj<00><00>vst j |<02><00>rt j|<02><00>ndd <09>z}d
d |iz}tt j |<06><00><00><00><00>d x}}d}||v}|s<>t jd|fd||f<02><00>t j|<03><00>dtj<00><00>vst j |<02><00>rt j|<02><00>ndd <09>z}d
d |iz}tt j |<06><00><00><00><00>d x}}d S)u测试日期时间列统计。rnr<>ror<00>min_dater<65>r<>rDr<>rarbN<>max_date<74>date_range_days) r7rdrqr r9r:r;r>r?r@r<r=<00>rBrfrDrErGrgrhs rO<00>test_datetime_statisticsz5TestGenerateColumnStatistics.test_datetime_statisticss<><00><00><10>i<EFBFBD><02> <0A>l<EFBFBD>B<EFBFBD>?<3F>?<3F>?<3F>@<40>@<40><03>+<2B>C<EFBFBD><1A><<3C><<3C><05>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>"<22>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)<29>)rQc<00><><00>tjgd<01><01><00>}t|d<02><00>}d}||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}d }||v}|s<>tjd|fd||f<02><00>tj|<03><00>dt j<00><00>vstj|<02><00>rtj|<02><00>ndd<07>z}dd |iz}ttj
|<06><00><00><00><00>d
x}}d
S) u测试文本列统计。)<03>hello<6C>world<6C>testrz<00>
avg_lengthr<EFBFBD>r<>rDr<>rarbN<>
max_lengthr<EFBFBD>r<>s rO<00>test_text_statisticsz1TestGenerateColumnStatistics.test_text_statistics s<><00><00><10>i<EFBFBD>2<>2<>2<>3<>3<><03>+<2B>C<EFBFBD><16>8<>8<><05>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>$rQN)rTrUrVrWr<>r<>r<>r<>rXrQrOr<>r<><00>sV<00><00><00><00><00><00>(<28>(<28> #<23> #<23> #<23> /<2F> /<2F> /<2F>*<2A>*<2A>*<2A>%<25>%<25>%<25>%<25>%rQr<>c<00><00>eZdZdZd<02>Zd<03>ZdS)<05>TestUnderstandDatau$测试完整的数据理解流程。c<00><> <00>tjgd<01>gd<02>tjdd<04><05><00>gd<06>d<07><04><00>}td|<01> <09><00>}t |t
<00><00>}|<03>sd
d t j<00><00>vstj t<00><00>rtj
t<00><00>nd d t j<00><00>vstj |<02><00>rtj
|<02><00>nd d t j<00><00>vstj t
<00><00>rtj
t
<00><00>nd tj
|<03><00>d<0E>z}ttj |<04><00><00><00><00>d}|j }d}||k}|s<>tjd|fd||f<02><00>d t j<00><00>vstj |<02><00>rtj
|<02><00>nd tj
|<05><00>tj
|<06><00>d<12>z}dd|iz}ttj |<08><00><00><00><00>dx}x}}|j}d}||k}|s<>tjd|fd||f<02><00>d t j<00><00>vstj |<02><00>rtj
|<02><00>nd tj
|<05><00>tj
|<06><00>d<12>z}dd|iz}ttj |<08><00><00><00><00>dx}x}}|j} t#| <09><00>}d}
||
k} | <0B>stjd| fd||
f<02><00>dt j<00><00>vstj t"<00><00>rtj
t"<00><00>ndd t j<00><00>vstj |<02><00>rtj
|<02><00>nd tj
| <09><00>tj
|<06><00>tj
|
<EFBFBD><00>d<19>z} dd| iz} ttj | <0A><00><00><00><00>dx} x}x} }
|j}gd<1C>}||v}|s<>tjd|fd||f<02><00>d t j<00><00>vstj |<02><00>rtj
|<02><00>nd tj
|<05><00>tj
|<06><00>d<12>z}dd|iz}ttj |<08><00><00><00><00>dx}x}}d}|j}||k} d }
||
k}| r|s<>tjd!| |fd"|||
f<03><00>tj
|<0E><00>d t j<00><00>vstj |<02><00>rtj
|<02><00>nd tj
|<0F><00>tj
|
<EFBFBD><00>d#<23>z} dd| iz} ttj | <0A><00><00><00><00>dx}x} x}x}}
|j} t#| <09><00>}d}
||
k} | <0B>stjd$| fd%||
f<02><00>dt j<00><00>vstj t"<00><00>rtj
t"<00><00>ndd t j<00><00>vstj |<02><00>rtj
|<02><00>nd tj
| <09><00>tj
|<06><00>tj
|
<EFBFBD><00>d<19>z} dd| iz} ttj | <0A><00><00><00><00>dx} x}x} }
dS)&rr)<05>open<65>closedr<00>pendingrrnrro)ry<00><><00><>i,<00><>)r<>r<>r<>r<>r!<00><01>dataz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}r<><00>profiler )r1r'r2r(Nr#<00>z1%(py2)s
{%(py2)s = %(py0)s.row_count
} == %(py5)s<>r1r2rb<00>assert %(py7)sr3r)z4%(py2)s
{%(py2)s = %(py0)s.column_count
} == %(py5)s)zM%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.columns
})
} == %(py8)sr/)r1r'r`rbr<>zassert %(py10)s<>py10)r<>r<>r<>r<>r<>)z5%(py2)s
{%(py2)s = %(py0)s.inferred_type
} in %(py5)srry)r<>r<>)z5%(py1)s <= %(py6)s
{%(py6)s = %(py4)s.quality_score
}z5%(py6)s
{%(py6)s = %(py4)s.quality_score
} <= %(py8)s)r'r(r*r<>)<01>>)zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.summary
})
} > %(py8)s)r7r8rqrr<>r r>r?r9r@r;r<r=r+r:r,r-r/<00> inferred_typer<65><00>summary)rBrCr rFrHrJr<>rhrMrG<00> @py_assert7rKr<><00> @py_format11rErLs rOrPz+TestUnderstandData.test_basic_functionalitys<><00><00> <0F>\<5C>(<28><1F><1F>E<>E<>E<><1C>-<2D> <0C>a<EFBFBD>@<40>@<40>@<40>/<2F>/<2F>/<2F> 
<EFBFBD>
<EFBFBD> <0B> <0B><02>"<22>*<2A>2<EFBFBD>6<>6<>6<><07>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>0<>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'rQc<00>b<00>tjgd<01>gd<02>d<03><02><00>}td|<01><05><00>}|j}d}||k}|s<>t jd|fd||f<02><00>d t j<00><00>vst j|<02><00>rt j |<02><00>nd t j |<03><00>t j |<04><00>d
<EFBFBD>z}d d |iz}tt j |<07><00><00><00><00>d x}x}}|j }d}||k}|s<>t jd|fd||f<02><00>d t j<00><00>vst j|<02><00>rt j |<02><00>nd t j |<03><00>t j |<04><00>d
<EFBFBD>z}d d |iz}tt j |<07><00><00><00><00>d x}x}}d S)u!测试包含缺失值的数据。)rrNrr)rNrrN)r<>r<>r!r rr#r r r rr3Nryr<>)z4%(py2)s
{%(py2)s = %(py0)s.quality_score
} < %(py5)s) r7r8rr+r9r:r>r?r@r;r<r=r<>)rBrCr rJr<>rFrhrMs rO<00>test_with_missing_valuesz+TestUnderstandData.test_with_missing_values,s<00><00> <0F>\<5C>&<26>&<26>&<26>/<2F>/<2F>/<2F>
<EFBFBD>
<EFBFBD> <0B> <0B><02>
"<22>*<2A>2<EFBFBD>6<>6<>6<><07>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>%<25>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*rQN)rTrUrVrWrPrrXrQrOrrs8<00><00><00><00><00><00>.<2E>.<2E>(<28>(<28>(<28>& +<2B> +<2B> +<2B> +<2B> +rQr)"rW<00>builtinsr><00>_pytest.assertion.rewrite<74> assertion<6F>rewriter9<00>pytest<73>pandasr7<00>numpy<70>nprr<00>src.engines.data_understandingrrrrr r
r r <00>
src.modelsr rrrZr~r<>r<>r<>r<>rrXrQrO<00><module>r!s*<00><01>*<2A>*<2A><00><00><00><00><00><00><00><00><00><00><00><00><00> <0A> <0A> <0A> <0A><13><13><13><13><12><12><12><12>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02> <02>/<2F>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>:<1F><1F><1F><1F><1F><1F><1F><1F>8,&<26>,&<26>,&<26>,&<26>,&<26>,&<26>,&<26>,&<26>^%6<>%6<>%6<>%6<>%6<>%6<>%6<>%6<>P$<24>$<24>$<24>$<24>$<24>$<24>$<24>$<24>D8<>8<>8<>8<>8<>8<>8<>8<><.%<25>.%<25>.%<25>.%<25>.%<25>.%<25>.%<25>.%<25>b!+<2B>!+<2B>!+<2B>!+<2B>!+<2B>!+<2B>!+<2B>!+<2B>!+<2B>!+rQ