
    A>i$                         S SK r S SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJrJrJr  S SKJr   " S S\5      r\R$                  R'                  S\\\/5      S 5       rg)	    N)BooleanArray)
kleene_and	kleene_or
kleene_xor)BaseOpsUtilc            
       $   \ rS rSrS rS rS r\R                  R                  SS\
R                  " SSSS	5      \R                  " S
5      /5      S 5       r\R                  R                  SSS// SQ/5      S 5       rS r\R                  R                  SSS/5      S 5       rS r\R                  R                  S\
R&                  / SQ4S/ SQ4\R(                  " S5      / SQ4S/ SQ4\R(                  " S5      / SQ4/5      S 5       rS r\R                  R                  S\
R&                  / SQ4S/ SQ4S/ SQ4\R(                  " S5      / SQ4\R(                  " S5      / SQ4/5      S 5       rS r\R                  R                  S\
R&                  / SQ4S/ SQ4\R(                  " S5      / SQ4\R(                  " S5      / SQ4/5      S 5       r\R                  R                  SSS\
R&                  / SQS -  /5      S! 5       rS"rg#)$TestLogicalOps   c                 $   [         R                  " / SQSS9n[        X!5      n[        R                  " U" S5      U" [
        R                  " S5      5      5        [        R                  " U" S5      U" [
        R                  " S5      5      5        g )NTFNbooleandtypeTF)pdarraygetattrtmassert_extension_array_equalnpbool_)selfall_logical_operatorsaops       g/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/arrays/boolean/test_logical.pytest_numpy_scalars_ok$TestLogicalOps.test_numpy_scalars_ok   s_    HH(	:Q.
''4"RXXd^2DE
''5	2bhhuo3FG    c                    ^ UR                  S5      nSU;   a  UOUS-   n [        [        U5      nU$ ! [         a    [        [        USS  5      mU4S jn U$ f = f)N_xor   c                    > T" X5      $ )N )xyrops     r   <lambda>1TestLogicalOps.get_op_from_name.<locals>.<lambda>!   s	    c!ir   )stripr   operatorAttributeError)r   op_nameshort_opnamer   r'   s       @r   get_op_from_nameTestLogicalOps.get_op_from_name   sk    }}S)','<|,QTBT	(<0B 	  	((L$45C'B		(s   3 #AAc                 8   [         R                  " / SS9nUn[        X#5      " S5      n[        R                  " X$5        [        X#5      " S5      n[        R                  " X$5        [        X#5      " [         R
                  5      n[        R                  " X$5        g )Nr   r   TF)r   r   r   r   r   NA)r   r   r   r-   results        r   test_empty_okTestLogicalOps.test_empty_ok%   sr    HHRy)'$T*
''2$U+
''2$RUU+
''2r   otherr   i  r"         c                     [         R                  " SS/5      nX!:H  n[         R                  " SS/5      n[        R                  " X45        X!:g  n[         R                  " SS/5      n[        R                  " X45        g )NTFr   r   r   r   )r   r6   arrr3   expecteds        r   test_eq_mismatched_type&TestLogicalOps.test_eq_mismatched_type1   sd    
 hhe}%88UEN+
''988T4L)
''9r   TF)TFTFc                     Un[         R                  " / SQSS9nSn[        R                  " [        US9   [        XC5      " U5        S S S 5        [        R                  " [        US9   [        XC5      " [        R                  " U5      5        S S S 5        [        R                  " [        US9   [        XC5      " [         R                  " USS95        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nf= f! , (       d  f       g = f)Nr   r   r   zLengths must matchmatch)r   r   pytestraises
ValueErrorr   r   )r   r6   r   r-   r   msgs         r   #test_logical_length_mismatch_raises2TestLogicalOps.test_logical_length_mismatch_raises?   s    'HH(	:"]]:S1A& 2 ]]:S1A0 2 ]]:S1Ai @A 21 21 21 21s#   C(&C./%C?
C+.
C<?
Dc                     Un[         R                  " / SQSS9nSn[        R                  " [        US9   [        X25      " [        R                  5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   zGot float insteadr@   )r   r   rB   rC   	TypeErrorr   r   nan)r   r   r-   r   rE   s        r   test_logical_nan_raises&TestLogicalOps.test_logical_nan_raisesN   sH    'HH(	:!]]9C0A' 100s    A
A,c                     [         R                  " SS/SS9n[        R                  " [        [        [        U5      R                  5      S9   [        X25      " U5        S S S 5        g ! , (       d  f       g = f)NTFr   r   r@   )	r   r   rB   rC   rI   strtype__name__r   )r   r6   r   r   s       r    test_non_bool_or_na_other_raises/TestLogicalOps.test_non_bool_or_na_other_raisesV   sM    HHdE])4]]9CU0D0D,EFA-e4 GFFs   A((
A6c                    [         R                  " S/S-  S/S-  -   S /S-  -   SS9n[         R                  " / SQS-  SS9nX-  n[         R                  " / SQSS9n[        R                  " X45        X!-  n[        R                  " X45        [        R                  " U[         R                  " S/S-  S/S-  -   S /S-  -   SS95        [        R                  " U[         R                  " / SQS-  SS95        g )NT   Fr   r   r   )	TTTTFNTNNr:   r   r   br3   r<   s        r   test_kleene_orTestLogicalOps.test_kleene_or\   s    HHdVaZ5'A+-
:)LHH(1,I>88C9
 	''9
''9 	''rxx
eWq[0D6A:=YO	
 	''rxx+a/yA	
r   zother, expected)TNNTTTr   c                    [         R                  " / SQSS9nX1-  n[         R                  " USS9n[        R                  " XB5        X-  n[        R                  " XB5        [        R                  " U[         R                  " / SQSS95        g Nr   r   r   r:   r   r6   r<   r   r3   s        r   test_kleene_or_scalar$TestLogicalOps.test_kleene_or_scalarq   sp     HH(	:88HI6
''9
''9 	''rxx+9=	
r   c                    [         R                  " S/S-  S/S-  -   S /S-  -   SS9n[         R                  " / SQS-  SS9nX-  n[         R                  " / SQSS9n[        R                  " X45        X!-  n[        R                  " X45        [        R                  " U[         R                  " S/S-  S/S-  -   S /S-  -   SS95        [        R                  " U[         R                  " / SQS-  SS95        g )NTrT   Fr   r   r   )	TFNFFFNFNr:   rU   s        r   test_kleene_andTestLogicalOps.test_kleene_and   s    HHdVaZ5'A+-
:)LHH(1,I>88Gy
 	''9
''9 	''rxx
eWq[0D6A:=YO	
 	''rxx+a/yA	
r   )NFN)FFFc                    [         R                  " / SQSS9nX1-  n[         R                  " USS9n[        R                  " XB5        X-  n[        R                  " XB5        [        R                  " U[         R                  " / SQSS95        g r[   r:   r\   s        r   test_kleene_and_scalar%TestLogicalOps.test_kleene_and_scalar   sp     HH(	:88HI6
''9
''9 	''rxx+9=	
r   c                    [         R                  " S/S-  S/S-  -   S /S-  -   SS9n[         R                  " / SQS-  SS9nX-  n[         R                  " / SQSS9n[        R                  " X45        X!-  n[        R                  " X45        [        R                  " U[         R                  " S/S-  S/S-  -   S /S-  -   SS95        [        R                  " U[         R                  " / SQS-  SS95        g )NTrT   Fr   r   r   )	FTNTFNNNNr:   rU   s        r   test_kleene_xorTestLogicalOps.test_kleene_xor   s    HHdVaZ5'A+-
:)LHH(1,I>88DI
 	''9
''9 	''rxx
eWq[0D6A:=YO	
 	''rxx+a/yA	
r   )NNN)FTNc                    [         R                  " / SQSS9nX1-  n[         R                  " USS9n[        R                  " XB5        X-  n[        R                  " XB5        [        R                  " U[         R                  " / SQSS95        g r[   r:   r\   s        r   test_kleene_xor_scalar%TestLogicalOps.test_kleene_xor_scalar   sp     HH(	:88HI6
''9
''9 	''rxx+9=	
r   rT   c                    [         R                  R                  [        R                  " / SQ5      [        R                  " S/S-  / SQ-   5      5      n[         R                  " S/S-  S/S-  -   S /S-  -   SS9n[        U[        5      (       a  [         R                  " USS9n[        X25      " U5      n[        XB5      " U5      n[        R                  " XV5        [        U[        5      (       ak  SUR                  UR                  '   SUR                  UR                  '   [        X25      " U5      n[        XB5      " U5      n[        R                  " XV5        g g )	N)	TTTFFFTFTF   rY   TrT   r   r   )r   arraysr   r   r   
isinstancelistr   r   r   _data_mask)r   r6   r   r   rV   r3   r<   s          r   test_no_masked_assumptions)TestLogicalOps.test_no_masked_assumptions   s    II""HHOPHHeWq[#556
 HHdVaZ5'A+-
:)LeT""HHU)4E25914U;
''9e\**'+EKK$$AGGAGGQ6u=Fq8?H++F= +r   r$   N)rP   
__module____qualname____firstlineno__r   r/   r4   rB   markparametrizer   	Timestampr   timedelta64r=   rF   rK   rQ   rW   r2   r   r]   r`   rc   rf   ri   rr   __static_attributes__r$   r   r   r	   r	      s=   H

3 [[#r||D!Q3R^^A5FG	:	: [[We}6P&QRB SB( [[WsAh/5 05

* [[UU&'%&XXd^/0'(XXe_12	
	
	

* [[UU'(&')*XXd^01XXe_34	
	
	

( [[UU&'&'XXd^01XXe_12		


 [[WtUBEE;NQR;R&ST> U>r   r	   	operationc           	          Sn[         R                  " [        US9   U " SS[        R                  " S5      [        R                  " S5      5        S S S 5        g ! , (       d  f       g = f)Nz3Either `left` or `right` need to be an np\.ndarray.r@   Tr"   )rB   rC   rI   r   zeros)r|   rE   s     r   test_error_both_scalarr      s?    
@C	y	,$bhhqk288A;7 
-	,	,s   4A
A')r+   numpyr   rB   pandasr   pandas._testing_testingr   pandas.arraysr   pandas.core.ops.mask_opsr   r   r   pandas.tests.extension.baser   r	   rw   rx   r   r$   r   r   <module>r      sb         & 
 4f>[ f>R y*j&IJ8 K8r   