o
    5cX                     @   s  d dl Z d dlZd dlZd dlmZ d dlZd dlm	Z
 d dlmZmZ d dlmZ ejjeddZedd Zd	d
 Zdd Zeejdddgejdddgdd Zedd Zejje dddd Zeejdddgejdddg dfddg d fddg d!fdejg d!fdd"gdg d#fdd"gdd$gg d%fdd"gddgg d&fdd"gdejgg d&fd dgdd$gg d'fdd gdd$gg d(fed"ddg d)fed*d+dd$gg d,fed"dddd$gg d-feddg d.fg d/dd$gg d%fgd0d1 Zed2d3 ZdS )4    N)pa_version_under1p01)StringArrayStringDtype)ArrowStringArrayz9pyarrow>=1.0.0 is required for PyArrow backed StringArray)reasonc                  C   sH   t jt jt jgtdd} | | k}t jt jt jgdd}t|| d S )Npyarrowdtypeboolean)pdarrayNAr   tmassert_extension_array_equal)aresultexpected r   c/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/arrays/string_/test_string_arrow.pytest_eq_all_na   s   r   c                 C   s   t d|  t j| ksJ t ddg}|jj| ksJ W d    n1 s(w   Y  t|  ddg}t	|| d S )Nstring_storager   b)
r   option_contextr   storager   r	   construct_array_type_from_sequencer   assert_equal)r   r   r   r   r   r   test_config   s   r   c                  C   sH   t d} tjt| d dtjj_W d    d S 1 sw   Y  d S )Nz#Value must be one of python|pyarrowmatchfoo)	reescapepytestraises
ValueErrorr   optionsmoder   msgr   r   r   test_config_bad_storage_raises*   s   
"r*   chunkedTFr   numpyr   c                 C   s   dd l }| dkr
|nt} | g d}|r#| tu rtd ||}| tu r*d}ntd}tjt	|d t
| W d    d S 1 sFw   Y  d S )Nr   r   )         z%chunked not applicable to numpy arrayzBUnsupported type '<class 'numpy.ndarray'>' for ArrowExtensionArrayzBArrowStringArray requires a PyArrow (chunked) array of string typer   )r   npr   r#   skipchunked_arrayr!   r"   r$   r%   r   )r   r+   paarrr)   r   r   r   'test_constructor_not_string_type_raises0   s   


"r5   c                	   C   s  t dd tjg ddd W d    n1 sw   Y  t dd tjg ddd W d    n1 s9w   Y  tjtd d tjg ddd W d    n1 sYw   Y  tjg dd	d tjtd d( t dd tjg dt d W d    n1 sw   Y  W d    n1 sw   Y  t dd tjg dt d W d    n1 sw   Y  tjtd d tjg dtdd W d    n1 sw   Y  tjg dtdd t dd tjg ddd W d    n	1 sw   Y  t dd tjg ddd W d    n	1 s&w   Y  tjg ddd tjtd d tjg dd	d W d    n	1 sPw   Y  t dd tjg dt d W d    n	1 sqw   Y  tjtd d) t dd tjg dt d W d    n	1 sw   Y  W d    n	1 sw   Y  tjg dtdd tjtd d tjg dtdd W d    d S 1 sw   Y  d S )
Nr   python)r   Ncstringr   r   r   zstring[python]zstring[pyarrow])	r   r   r   r   r#   r$   AssertionErrorr   r   r   r   r   r   %test_from_sequence_wrong_dtype_raisesG   s\   $r:   zpyarrow is installedc                  C   s   t d} tjt| d tdd W d    n1 sw   Y  tjt| d tg  W d    n1 s7w   Y  tjt| d tg d W d    d S 1 sVw   Y  d S )Nz-pyarrow>=1.0.0 is required for PyArrow backedr   r   )r   )r   Nr   )r!   r"   r#   r$   ImportErrorr   r   r   r(   r   r   r   !test_pyarrow_not_installed_raisesx   s   

"r<   multiple_chunkszkey, value, expectedXX)r   r   r7   dr?   r-   )r   r?   r7   r@   e)r   Nr7   r@   rA   r/   )r   r?   r7   r?   rA   YY)r   r?   r7   rB   rA   )r   r?   r7   NrA   )r?   r   r7   r@   rB   )rB   r   r7   r@   r?   )r   r   r7   r?   r?   r.      )r   r   r?   rB   rA   )r   r   rB   r?   rA   )r?   r?   r?   r?   r?   )FTFTFc                 C   s   dd l }|td}||}| r0||d d |dd  g}||d d |dd  g}t|}t|}|||< t|| |jj|jjksLJ d S )Nr   abcder/   )	r   r   listr2   r   r   r   _data
num_chunks)r=   keyvaluer   r3   r   r   r   r   test_setitem   s   
rJ   c                  C   sx  dd l } t| td}tjtd d d|d< W d    n1 s#w   Y  tjtd d d|d< W d    n1 s>w   Y  tjtd d d|ddg< W d    n1 s[w   Y  tjtd d d|ddg< W d    n1 sxw   Y  tjtd d d|g d< W d    n1 sw   Y  tjtd d g d|dd	g< W d    d S 1 sw   Y  d S )
Nr   rD   r   r       i)TTF)r    barbazr-   )r   r   r   rE   r#   r$   
IndexErrorr%   )r3   r4   r   r   r   #test_setitem_invalid_indexer_raises   s(   

"rO   )r!   r,   r0   r#   pandas.compatr   pandasr   pandas._testing_testingr   pandas.core.arrays.string_r   r   pandas.core.arrays.string_arrowr   markskipifskip_if_no_pyarrowr   r   r*   parametrizer5   r:   r<   r   slicerJ   rO   r   r   r   r   <module>   sf    

0
