
    h%                        d dl Z d dlZd dlZd dlZd dlmc mZ d dl	Z
d dlmZ d dlmZmZ d dlmZmZ d Zd Zd Zej.                  j1                  ddd	g      ej.                  j1                  d
ddg      d               Zej.                  j1                  ddd	g      d        Zej.                  j1                  dddg      ej.                  j1                  ddd	g      d               Zej.                  j1                  ddd	g      d        Zd Zd Z ej>                  d      d        Z ej.                  j1                  dd	dg      ej.                  j1                  dddg dfddg dfddg dfde
jB                  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
jB                  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      d-               Z#d. Z$ej.                  j1                  d/e
jB                  ejJ                  g      d0        Z&d1 Z'y)2    N)StringArrayStringDtype)ArrowStringArrayArrowStringArrayNumpySemanticsc                  J   t        j                  d       t        j                  t        j                  t        j                  gt        d            } | | k(  }t        j                  t        j                  t        j                  gd      }t        j                  ||       y )Npyarrowdtypezboolean[pyarrow])pytestimportorskippdarrayNAr   tmassert_extension_array_equal)aresultexpecteds      RD:\jyotish\venv\Lib\site-packages\pandas/tests/arrays/string_/test_string_arrow.pytest_eq_all_nar      sg    
	"
"%%{9'=>A!VFxx.@AH##FH5    c                    t               j                  dk(  sJ t        j                  d|       5  t               j                  | k(  sJ t        j                  ddg      }|j
                  j                  | k(  sJ 	 d d d        t        | t        j                        }|j                         j                  ddg|      }t        j                  |       y # 1 sw Y   ^xY w)Npythonstring_storager   bna_valuer	   )r   storager   option_contextr   r
   r   construct_array_type_from_sequencer   assert_equal)r   using_infer_stringr   r
   r   s        r   test_configr$      s     =  H,,,			+^	<}$$6663*%||##~555 
= 7E))+::C:U:SHOOFH% 
=	<s   ACC#c                      t        j                  d      } t        j                  t        |       5  dt
        j                  j                  _        d d d        y # 1 sw Y   y xY w)Nz#Value must be one of python|pyarrowmatchfoo)	reescaper   raises
ValueErrorr   optionsmoder   msgs    r   test_config_bad_storage_raisesr1   -   s;    
))9
:C	z	-).

& 
.	-	-s    AA#chunkedTF	array_libnumpyr   c                    t        j                  d      }| dk(  r|nt        } | j                  g d      }|r.| t        u rt        j                  d       |j                  |      }| t        u rd}nt        j                  d      }t        j                  t        |      5  t        |       d d d        y # 1 sw Y   y xY w)Nr            z%chunked not applicable to numpy arrayzBUnsupported type '<class 'numpy.ndarray'>' for ArrowExtensionArrayHArrowStringArray requires a PyArrow (chunked) array of large_string typer&   )r   r   npr   skipchunked_arrayr)   r*   r+   r,   r   )r3   r2   paarrr0   s        r   'test_constructor_not_string_type_raisesr@   3   s     
		Y	'B9,"I
//)
$C?KK?@s#BRiiV
 
z	- 
.	-	-s   !B66B?c                 t   t        j                  d      }|j                  g d|j                  |j	                         |j	                                     }| r|j                  |      }t        j                  d      }t        j                  t        |      5  t        |       d d d        y # 1 sw Y   y xY w)Nr   r6   r:   r&   )r   r   r   
dictionaryint32r=   r)   r*   r+   r,   r   )r2   r>   r?   r0   s       r   8test_constructor_not_string_type_value_dictionary_raisesrD   I   s    			Y	'B
((9bmmBHHJ
C
DCs#
))RC 
z	- 
.	-	-s   B..B7string_typestringlarge_stringc                 .   t        j                  d      }|j                  g d t        ||                    j	                         }|r|j                  |      }t        |      }|j                  j                  |j                  j                        sJ y )Nr   123)r   r   r   getattrdictionary_encoder=   r   typesis_large_string	_pa_arraytype)rE   r2   r>   r?   s       r   3test_constructor_valid_string_type_value_dictionaryrS   X   sy     
		Y	'B
((?$<GB$<$>
?
Q
Q
SCs#
3
C88##CMM$6$6777r   c                    t        j                  dd      }|j                  g d|j                               }| r|j	                  |      }t        |      }|j                  j                  |j                  j                        sJ y )Nr   18)
minversionrI   )
r   r   r   string_viewr=   r   rO   rP   rQ   rR   )r2   r>   r?   s      r   "test_constructor_valid_string_viewrX   f   sl     
		Y4	8B
((?BNN$4
5Cs#
3
C88##CMM$6$6777r   c                      t        j                  d       t        j                  dgt	        d            } t        | j                  t              sJ | j                  j                  dk(  sJ y )Nr   Er   r	   )r   r   r   Seriesr   
isinstancer
   r   )r   s    r   test_constructor_from_listr^   t   sS    
	"YYuK	$BCFfllK000<<9,,,r   c                    t        j                  d       t        j                  dd      5  t	        j
                  g dd       d d d        t        j                  dd      5  t	        j
                  g dd       d d d        t        j                  t        d       5  t	        j
                  g dd       d d d        t	        j
                  g dd	       | sdt        j                  t        d       5  t        j                  dd      5  t	        j
                  g dt                      d d d        d d d        t        j                  dd      5  t	        j
                  g dt                      d d d        | sFt        j                  t        d       5  t	        j
                  g dt        d             d d d        t	        j
                  g dt        d             t        j                  dd      5  t        j
                  g dd       d d d        t        j                  dd      5  t        j
                  g dd       d d d        t        j
                  g dd       t        j                  t        d       5  t        j
                  g dd	       d d d        | s@t        j                  dd      5  t        j
                  g dt                      d d d        | sdt        j                  t        d       5  t        j                  dd      5  t        j
                  g dt                      d d d        d d d        t        j
                  g dt        d             t        j                  t        d       5  t        j
                  g dt        d             d d d        y # 1 sw Y   xY w# 1 sw Y   TxY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   r   r   )r   NcrF   r	   r&   zstring[python]zstring[pyarrow])
r   r   r   r   r   r!   r+   AssertionErrorr   r   )r#   s    r   %test_from_sequence_wrong_dtype_raisesrb   |   s
   
	"			+X	6''(8I 
7 
		+Y	7''(8I 
8 
~T	2''(8@PQ 
3 ##$4<MN]]>6""#3X> //0@V ? 7 
		+Y	7''(8N 
8 ]]>6++ H(= 7
 ##$4K	<RS			+X	6""#38D 
7 
		+Y	7""#38D 
8 /7GH	~T	2""#3;LM 
3 /:&&'7{}M ; ]]>6""#3Y?**+;;=Q @ 7 /{87LM	~T	2""#3;y;QR 
3	2c 
7	6 
8	7 
3	2 ?> 76 
8	7 76 
7	6 
8	7
 
3	2 ;:
 @? 76 
3	2s   O$O!O9O7"O*2O7"P#PP:P+P8
"QQ("Q
Q#Q,OOO'*O4	/O77PPPP(+P58QQQ	QQ),Q5c                      t        j                  d      } t        j                  t        |       5  t        d       d d d        t        j                  t        |       5  t        g        d d d        t        j                  t        |       5  t        g        d d d        t        j                  t        |       5  t        j                  g d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)Nz.pyarrow>=10.0.1 is required for PyArrow backedr&   r   r[   )r   Nr   )	r)   r*   r   r+   ImportErrorr   r   r   r!   r/   s    r   !test_pyarrow_not_installed_raisesre      s    
))D
EC	{#	.I& 
/ 
{#	. 
/ 
{#	.&r* 
/ 
{#	.''(89 
/	. 
/	. 
/	. 
/	. 
/	.s/   C !C,C8?D C),C58DDmultiple_chunkszkey, value, expectedXX)r   r   r`   drh   r7   )r   rh   r`   ri   e)r   Nr`   ri   rj   r9   )r   rh   r`   rh   rj   YY)r   rh   r`   rk   rj   )r   rh   r`   Nrj   )rh   r   r`   ri   rk   )rk   r   r`   ri   rh   )r   r   r`   rh   rh   r8      )r   r   rh   rk   rj   )r   r   rk   rh   rj   )rh   rh   rh   rh   rh   )FTFTFc                 N   t        j                  d      }|j                  t        d            }|j                  |      }| r2|j	                  |d d |dd  g      }|j	                  |d d |dd  g      }t        |      }t        |      }|||<   t        j                  ||       y )Nr   abcder9   )r   r   r   listr=   r   r   r"   )rf   keyvaluer   r>   r   s         r   test_setitemrr      s    , 
		Y	'BXXd7m$Fxx!H!!6"1:vabz":;##Xbq\8AB<$@Af%F)HF3KOOFH%r   c                     t        j                  d      } t        | j                  t	        d                  }t        j
                  t        d       5  d|d<   d d d        t        j
                  t        d       5  d|d<   d d d        t        j
                  t        d       5  d|ddg<   d d d        t        j
                  t        d       5  d|ddg<   d d d        t        j
                  t        d       5  d|g d<   d d d        t        j
                  t        d       5  g d	|dd
g<   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   y xY w)Nr   rn   r&   r(      ir   )TTF)r(   barbazr7   )r   r   r   r   ro   r+   
IndexErrorr,   )r>   r?   s     r   #test_setitem_invalid_indexer_raisesrx      s"   			Y	'B
288DM2
3C	z	.A 
/ 
z	.B 
/ 
z	.QF 
/ 
z	.QG 
/ 
z	.#(  
/ 
z	.+QF 
/	. 
/	. 
/	. 
/	. 
/	. 
/	. 
/	.sH   D:=E&EE<E*'
E6:EEEE'*E36E?r   c                    t        j                  d       t        d|       }t        j                  t        d      |      }|j                  d      }t        j                  |      }t        j                  |      }t        |      t        |      kD  sJ t        j                  |      }t        j                  ||       t        j                  |      }t        j                  ||       y )Nr   r   
   r	   r8   )r   r   r   r   r\   rangeheadpickledumpslenloadsr   assert_series_equal)r   r
   r   expected_slicedfull_pickledsliced_pickledr   result_sliceds           r   test_pickle_roundtripr     s     	"	H5Eyyr%0HmmA&O<<)L\\/2N|s>2222\\,'F68,LL0M=/:r   c                      t        j                  d       d} t        j                  t        |       5  t	        d       d d d        y # 1 sw Y   y xY w)Nr   z&Storage must be 'python' or 'pyarrow'.r&   bla)r   r   r+   r,   r   r/   s    r   test_string_dtype_error_messager     s7    
	"
2C	z	-E 
.	-	-s   AA)(r}   r)   r4   r;   r   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   pandas._testing_testingr   pandas.core.arrays.string_r   r   pandas.core.arrays.string_arrowr   r   r   r$   r1   markparametrizer@   rD   rS   rX   r^   rb   skip_if_installedre   r   slicerr   rx   nanr   r    r   r   <module>r      s    	   ) )  6& / T5M2w	&:; < 3( T5M2 3 >(BCT5M2	8 3 D	8 T5M2
8 3
8-4Sn i : !:  *UDM:	T-.	
D,-	
D,-	
BEE-.
Q23
Q$:;
Q$:;
Q$ ;<
R4, ;<
a4, ;<	q$:;	q!tTl$?@	q!R4,(CD	td:;	*T4L:UV(&) ;*&",0 beeRVV_5; 6;$r   