a
    Pf                     @   s   d dl Z d dlmZ d dlZd dlZd dlZd dlm	Z
 d dlmZ edZejdejdejddd	 egd
d Zejdejddd Zejdejddd Zejdejddd Zdd Zdd Zdd Zejdejddd ZdS )    N)Path)Version
pyreadstatz,ignore::pandas.errors.ChainedAssignmentErrorz+ignore:ChainedAssignmentError:FutureWarning
path_klassc                 C   s   | S )N )pr   r   R/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/io/test_spss.py<lambda>       r	   c                 C   s   | |dddd}t j|dd}t jddid	gd
}t |d |d< t|| t j|dd}t jddid	gd
}t|| d S )Niodataspsslabelled-num.savTconvert_categoricalsVAR00002This is oner   )indexF      ?pd	read_spss	DataFrameCategoricaltmassert_frame_equal)r   datapathfnamedfexpectedr   r   r   test_spss_labelled_num   s    r    c                 C   s~   | dddd}t j|dd}t ddd gi}t |d |d< t|| t j|d	d}t dd
tjgi}t|| d S )Nr   r   r   zlabelled-num-na.savTr   r   r   Fr   )r   r   r   r   r   r   npnanr   r   r   r   r   r   r   test_spss_labelled_num_na"   s    r$   c                 C   s|   | dddd}t j|dd}t ddd	gi}t |d |d< t|| t j|d
d}t dddgi}t|| d S )Nr   r   r   zlabelled-str.savTr   ZgenderZMaleZFemaleFMFr   r#   r   r   r   test_spss_labelled_str3   s    r'   c                 C   s|   | dddd}t j|dd}t dg di}t |d |d< t|| t j|d	d}t dg d
i}t|| d S )Nr   r   r   umlauts.savTr   var1)   the ä umlautu   the ü umlautr*   u   the ö umlautFr   g       @r   g      @r   r#   r   r   r   test_spss_umlautsD   s    
r,   c                 C   sN   | dddd}t jtdd tj|dd W d    n1 s@0    Y  d S )	Nr   r   r   r   zusecols must be list-like.matchr   )Zusecols)pytestraises	TypeErrorr   r   )r   r   r   r   r   test_spss_usecolsW   s    r2   c                    s   | dddd}t j|d|d}t jdg did	d
|dkrptdddlm  t  fddjD t	| d S )Nr   r   r   r(   F)r   dtype_backendr)   r+   ZInt64)ZdtypeZpyarrowr   )ArrowExtensionArrayc                    s$   i | ]}| j | d dqS )T)Zfrom_pandas)array).0colr4   r   par   r   
<dictcomp>m   s   z3test_spss_umlauts_dtype_backend.<locals>.<dictcomp>)
r   r   r   r/   importorskipZpandas.arraysr4   columnsr   r   )r   r3   r   r   r   r8   r   test_spss_umlauts_dtype_backend_   s    
r=   c                  C   sD   d} t jt| d tjddd W d    n1 s60    Y  d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r-   testnumpy)r3   )r/   r0   
ValueErrorr   r   )msgr   r   r   test_invalid_dtype_backendv   s    rB   c                 C   s   | dddd}t |}dgd gdd idddddd	iid
dd	iidd
ig ddiddid i i ddiddiddiddid dd}ttjtdkr|tddddddtddddddd |j|ksJ d S )Nr   r   r   r   r   zUTF-8   r   r   Zlabels0zF8.0double   unknownzsav/zsav)Zcolumn_namesZcolumn_labelsZcolumn_names_to_labelsfile_encodingZnumber_columnsZnumber_rowsZvariable_value_labelsZvalue_labelsZvariable_to_labelnotesZoriginal_variable_typesZreadstat_variable_typesZ
table_nameZmissing_rangesZmissing_user_valuesZvariable_storage_widthZvariable_display_widthZvariable_alignmentZvariable_measureZ
file_labelZfile_formatz1.2.4i           !   $   )Zcreation_timeZmodification_time)r   r   r   r   __version__updatedatetimeattrs)r   r   r   metadatar   r   r   test_spss_metadata   s>    


rS   )rP   pathlibr   r?   r!   r/   Zpandasr   Zpandas._testingZ_testingr   Zpandas.util.versionr   r;   r   markfilterwarningsZparametrizer    r$   r'   r,   r2   r=   rB   rS   r   r   r   r   <module>   s4   








	

