
    rbi,u                        d dl Z 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
mZmZmZ d dlZd dlmZ d dlmZmZ d dlmZ d dlZd dlmZmZ d dlmZ d dlmZmZ ej        d	             Z ej        d
             Z!d Z"ej#        $                    ej%        dk     d          d             Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3ej#        4                    d          d             Z5d Z6d  Z7d! Z8d" Z9d# Z:d$ Z;d% Z<ej#        =                    d&dej>        g          d'             Z?d( Z@d) ZAd* ZBd+ ZCd, ZDej#        E                    d-.          d/             ZFej#        E                    d-.          d0             ZGd1 ZHd2 ZId3 ZJej#        =                    d4dd5g          ej#        =                    d6d7d8g          d9                         ZKd: ZLd; ZMej#        $                    ejN        d<          d=             ZOej#        =                    d4dd5g          d>             ZPd? ZQd@ ZRdA ZSdB ZTdC ZUdD ZVdE ZWdF ZXdG ZYdH ZZdS )I    N)Version)GeometryCollection
LinearRing
LineStringPoint)GeoDataFrame	GeoSeries)from_shapely)assert_geodataframe_equalassert_geoseries_equal)assert_array_equal)assert_frame_equalassert_series_equalc            	          t          d t          t          d          t          d                    D                       S )Nc                 4    g | ]\  }}t          ||          S  r   ).0xys      s/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/geopandas/tests/test_pandas_methods.py
<listcomp>zs.<locals>.<listcomp>   s$    FFFdaeAqkkFFF       )r	   zipranger   r   r   sr      s5    FFc%((E!HH.E.EFFFGGGr   c                      t          d t          d          D             t          j        dd          t          j        g dd          d          S )Nc                 .    g | ]}t          ||          S r   r   )r   r   s     r   r   zdf.<locals>.<listcomp>   s     777q!777r   r   int64dtype      r$   geometryvalue1value2)r   r   nparangearrayr   r   r   dfr-      s]    77eAhh777i111hyyy888	
 	
  r   c                     dt          |           v sJ dt          |          v sJ d|                                v sJ d S )NPOINT)repr_repr_html_r   r-   s     r   	test_reprr3   &   sQ    d1ggd2hhbnn&&&&&&&&r   )r   	   r   zrequires GEOS>=3.9)reasonc                  B   t          dd          } t          dd          }t          | |d g          }dt          |          v sJ t          | |gd          }dt          |          v sJ t          dd          } t          d	d	          }t          | |d g          }d
t          |          v sJ t          | |gd          }d
t          |          v sJ dt          j        _        dt          |          v sJ dt          j        _        dt          |          v sJ d S )Ngrn5?$@gnI@gtk~@gc97ݚ4@zPOINT (10.12346 50.12346)  crsgsn5?p@gsn5?@@zPOINT (3000.123 3000.123)i  r$   zPOINT (10.1 50.1)r4   z!POINT (10.123456789 50.123456789))r   r	   r0   	geopandasoptionsdisplay_precision)p1p2s1s3s2s4s         r   !test_repr_boxed_display_precisionrC   ,   s>    
|\	*	*B	{L	)	)B	BD>	"	"B&$r((2222 
B8	&	&	&B&$r((2222 
~~	.	.B	~~	.	.B	BD>	"	"B&$r((2222 
B8	&	&	&B&$r((2222*+I'$r((*****+I'.$r((::::::r   c                      t          g d          } dt          |           v sJ t          g d| d          }dt          |          v sJ d|                                v sJ d S )NNNNNoner$   r%   r   ar'   r'   r	   r0   r   r1   r2   s     r   test_repr_all_missingrK   I   s~    $$$%%AT!WW	III155	6	6BT"XX))))))))r   c                      t          g           } t          |           dk    sJ t          g | d          }dt          |          v sJ d|                                v sJ d S )NzGeoSeries([], dtype: geometry)rH   zEmpty GeoDataFramer'   rJ   r2   s     r   test_repr_emptyrM   R   sr    "A7766666	BA..	/	/B488++++))))))))r   c                  *   t          t          g d          g          } dt          | j        d                   v sJ dt          |           v sJ t          t	          g d          t	          g d          g          }dt          |          vsJ d S )N)r   r   r$   r$   r$   
LINEARRINGr   )rO   rP   rQ   rO   )r	   r   strilocr   )r   rA   s     r   test_repr_linearringrV   \   s     	:777889::A3qvay>>))))3q66!!!! 
0001188899	

 
B s2ww&&&&&&r   c                    t          dd          }| d         |k    sJ | j        d         |k    sJ | j        d         |k    sJ |j        d         |k    sJ |j        d         |k    sJ t          t          dd          t          dd          gddg          }t	          | j        ddg         |           t	          | j        ddg         |           t	          |                     ddg          |           t	          |j        ddgdf         |           t          |j        ddgdf         |dd	           t          t          dd          t          dd          gddg          }t          j        g d
          }t	          | |         |           t	          | j        |         |           t	          ||         d         |           t	          |j        |df         |           g d| _	        t          t          dd          t          dd          gddg          }t          | dd          |           t          | j        dd          |           t          | j        dd          |           d S )Nr$   )r$   r'   )r$   r   r%   r   indexr'   F)check_series_typecheck_namesTFTrG   r   )
r   locrU   r	   r   reindexr   r*   r,   rY   )r   r-   expmasks       r   test_indexingra   n   su   
1++CQ43;;;;58s????6!96- C''''74=C U1a[[%1++.q!f
=
=
=C15!Q=#...161a&>3///199aV,,c222261a&*"45s;;;
A	C5e   
 U1a[[%1++.q!f
=
=
=C8'''((D1T7C(((15;,,,2d8J/55526$
"23S999 iiAG
U1a[[%1++.q!f
=
=
=C!""s###qrr
C(((abb	3'''''r   c                 r   |                      g d          }t          t          dd          t          dd          d gg d          }t          ||           |                     g d          }t          |j        |           |                     ddg          }t          |t                    sJ t          |j        t                    sJ t          ||ddg                    |                     ddg          }t          |          t          j
        u sJ t          ||ddg                    d S )	NrG   r$   r%   rX   r(   r'   columnsr)   )r^   r	   r   r   r'   
isinstancer   r   typepd	DataFrame)r   r-   resr_   s       r   test_reindexrj      s2   
))III

C
U1a[[%1++t4III
F
F
FC3$$$ **999*
%
%C3<--- **h
3*
4
4Cc<(((((clI.....sB*56777
**h1*
2
2C99$$$$sB(3455555r   c                    t          j        ddg          }|                     |          }| j        ddg         }t	          |t
                    sJ t          ||           |                    |d          }|j        ddgd d f         }t	          |t                    sJ t          ||           |	                    g d          }|                    |d          }|ddg         }t	          |t                    sJ t          ||           |                    t          j        ddg          d          }|dd	g         }t	          |t          j                  sJ t          ||           d S )
Nr   r%   axisr(   r)   r'   rc   r$   r(   r'   r)   )r*   r,   takerU   re   r	   r   r   r   r^   rg   rh   r   )r   r-   indsresultexpecteds        r   	test_takers      sv   8QFD VVD\\Fvq!f~Hfi(((((68,,, WWTW""Fw1vqqqy!Hfl+++++fh/// 
<<<	=	=BWWTW""F8Z()Hfl+++++fh///WWRXq!f%%AW..F8X&'Hfbl+++++vx(((((r   c                    t          j        g d          }t          j        dt	          |                    |_        |                    |d          }t          |t                    sJ |j	        dk    sJ t          |j        t          j
                  sJ |j        |d         d	k             ||d         d	k             fD ]G}t          |t                    sJ |j	        dk    sJ t          |j        t          j
                  sJ Hd S )
Nr    r!   z
2012-01-01)periodsr   rl   )r   r   r(   d   )r*   r,   rg   
date_rangelenrY   ro   re   r   shapeDatetimeIndexr]   )r   r-   rp   rq   s       r   test_take_emptyr{      s    8Bg&&&D }\3r77;;;BHWWTW""Ffl+++++<6!!!!flB$455555 6"X,,-r"X,2D/EF : :&,/////|v%%%%&,(8999999: :r   c                    t          t          dd          t          dd          t          dd          g          }|                                 }t          dd          |d<   t          ||           |                                 }t          dd          |j        d<   t          ||           |                                 }t          dd          |j        d<   t          ||           |                                }t          dd          |j        d<   t          |d         |           |                                }t          dd          |j        d<   t          |d         |           d S )N
   r$   r%   r   r   r'   r'   rO   )r	   r   copyr   r]   rU   )r   r-   r_   rA   df2s        r   test_assignmentr      s+   
U2r]]E!QKKq!=
>
>C	
B"bMMBqE2s###	
Bb"BF1I2s###	
Br2BGAJ2s###
''))C"2r]]CGM3z?C000
''))C2r]]CHTN3z?C00000r   c                     |                      d          }|                                 }d|d<   t          |t                    sJ t	          ||           d S )Nr$   )newr   )assignr   re   r   r   r-   ri   r_   s      r   test_assignr      sW    
)))

C
''))CCJc<(((((sC     r   c                    t          j        t                    5  |                     t                     d d d            n# 1 swxY w Y   |                     t
                    d         dk    sJ |                     t                    }t          t          j	                  t          d          k    smt          t          j	                  t          d          k    sCt          |t          j                  rt          |t                    rJ |j        t          k    sJ |                    d          }|                    dt          i          }t          |t                     sJ |                    t
                    }t          |t          j                  rt          |t                     rJ |                    dt
          i          }t          |t          j                  rt          |t                     rJ |                    t                    }t          |t          j                  rt          |t                     rJ |d         j        t          k    sJ d S )Nr   zPOINT (0 0)z2.1.0z2.1.1	geom_listr(   )pytestraises	TypeErrorastypeintrT   objectr   rg   __version__re   Seriesr	   r"   rename_geometryfloatr   rh   )r   r-   ri   s      r   test_astyper      s,   	y	!	!  	               88C==},,,,
((6

C		 	 GG$4$4	4	4BN##ww'7'777 #ry))L*S)2L2LLLLyF""""			K	(	(B ))Xu%
&
&Cc<((((( ))C..Cc2<((NC1N1NNNN
))[#&
'
'Cc2<((NC1N1NNNN
))F

Cc2<((NC1N1NNNN{!V++++++s   AAAc                      t          g dg dd          } |                     t                    }t          |t          j                  rt          |t                     rJ |d         j        t          k    sJ d S )NrG   )         rI   brI   )r   r   r   re   rg   rh   r"   )r-   ri   s     r    test_astype_invalid_geodataframer     sv     
IIIIII66	7	7B
))F

Cc2<((NC1N1NNNNs8>V######r   c                    |                                  }t          t          j        |                                            | j        | j        j                  }t          ||           | g d                                          }t          |g d         |           t          j	        r| 
                    d                              d          }t          t          j        |                                           |j        |j        j                  }|                                 }t          ||           |g d                                          }t          |g d         |           d S d S )Nr9   r'   rn   r7   )epsgpoints)r(   r)   r   )convert_dtypesr   rg   rh   r9   r'   namer   compat
HAS_PYPROJset_crsr   )r-   res1	expected1res2r   	expected2res3res4s           r   test_convert_dtypesr   "  so   
 D
R''))rv@P  I
 i... .../>>@@Di(H(H(HI4PPP Sjjdj##33H== L,,..CGclFW
 
 
	 !!##!)T222 1112AACC!),J,J,J"KTRRRRRS Sr   c                 ~    d                     dt          j                  }|                     d          |k    sJ d S )NzGgeometry,value1,value2
POINT (0 0),0,1
POINT (1 1),1,2
POINT (2 2),2,1

FrX   )replaceoslinesepto_csv)r-   r_   s     r   test_to_csvr   B  sB    UgdBJ  9959!!S((((((r   z;ignore:Dropping of nuisance columns in DataFrame reductionsc                 x   t          j        ddgddg          }|                    d          }t          ||           t	          j        t                    5  |                                  d d d            n# 1 swxY w Y   t	          j        t                    5  |                                  d d d            n# 1 swxY w Y   t	          j        t          t          f          5  | 	                                 d d d            n# 1 swxY w Y   t	          j        t                    5  |dz    d d d            n# 1 swxY w Y   t	          j        t                    5  | dz    d d d            n# 1 swxY w Y   |d	k    }t          j
        d
|j        |j                  }t          ||           d S )Nr   r   r(   r)   rX   Tnumeric_onlyr$   rv   F)rY   rd   )rg   r   sumr   r   r   r   max
ValueErroridxmaxrh   rY   rd   r   )r   r-   r_   ri   s       r   test_numerical_operationsr   I  s   
 )QF8X"6
7
7
7C
&&d&
#
#CS!!! 
y	!	!  	               
y	!	!  	               
	:.	/	/  	


              
 
y	!	!  
Q               
y	!	!  	A               )C
,uBHbj
A
A
ACsC     sZ   A;;A?A?C  CC+DDD0EE	E&E88E<?E<c                     |                      t          j        g d                    }t          t	          dd          d t	          dd          g          }t          ||           d S )Nr\   r   r%   )wherer*   r,   r	   r   r   )r   ri   r_   s      r   
test_wherer   j  s^    
''"(...//
0
0C
U1a[[$a4
5
5CS!!!!!r   c                 |    |                      t          j        g          }| ddg         }t          ||           d S )N)includer(   r)   )select_dtypesr*   numberr   r   s      r   test_select_dtypesr   p  sA    


BI;

/
/C
h!
"CsC     r   c                    |                                  }|                     |          du sJ d |j        d<   |                     |          du sJ |                                 }|                    |          du sJ t          dd          |j        d<   |                    |          du sJ |                                 }d|j        d<   |                    |          du sJ d S )NTr   Fr}   r~   r   r(   )r   equalsrU   r   r]   )r   r-   rA   r   s       r   test_equalsr   v  s    	
B88B<<4BGAJ88B<<5    
''))C99S>>T!!!!"2r]]CGM99S>>U""""
''))CCGK99S>>U""""""r   c                    t          t          dd          d t          dd          g          }|                    t          dd                    }t          ||            |                    t          j                  }t          ||           |                                }||d<   |                    t          dd                    }t          ||           t          j	        t          t          f          5  |                    d           d d d            n# 1 swxY w Y   |                                }t          j        |j        d<   |                    d          }t          |                    ddi          |           d S )Nr   r%   r$   r'   r   r(   r    )r	   r   fillnar   r*   nanr   r   r   r   NotImplementedErrorr   r]   r   )r   r-   rA   ri   r   df3s         r   test_fillna_scalarr     s   	E!QKKuQ{{3	4	4B
))E!QKK
 
 C3""" ))BF

C3### ''))CC
O
**U1a[[
!
!Cc2&&&	+Y7	8	8  

1              
 ''))C6CGK
**Q--Ccjj(G)<==rBBBBBs   =DD#&D#c                 ~   t          t          dd          d t          dd          g          }|                    t          t          dd          gdz                      }t          ||            g d}|                    t          d |D             |                    }t          ||            |                    t          t          dd          gdg                    }t          ||            |                    t          t          dd          gdg                    }t          ||           d S )	Nr   r%   r$   r   )r   r%   r$   c                 .    g | ]}t          ||          S r   r   )r   is     r   r   z&test_fillna_series.<locals>.<listcomp>  s     :::quQ{{:::r   rX   r4   )r	   r   r   r   )r   rA   ri   rY   s       r   test_fillna_seriesr     s&   	E!QKKuQ{{3	4	4B ))IuQ{{ma/00
1
1C3""" IIE
))I::E:::%HHH
I
IC3""" ))IuQ{{mA3777
8
8C3""" ))IuQ{{mA3777
8
8C3#####r   c                    t          t          dd          d t          dd          g          }|j        }|                    t          dd          d           t	          ||            t
          j        r|j        |u sJ d S d S )Nr   r%   r$   T)inplace)r	   r   r,   r   r   r   PANDAS_GE_21)r   rA   arrs      r   test_fillna_inplacer     s    	E!QKKuQ{{3	4	4B
(CIIeAqkk4I(((2q!!! x3 r   c                      t          t          dd          d t          dd          g          } |                                 }| j        ddg         }t	          ||           d S Nr   r%   )r	   r   dropnar]   r   )rA   ri   r_   s      r   test_dropnar     sX    	E!QKKuQ{{3	4	4B
))++C
&!Q.C3$$$$$r   NAc                     t          t          dd          | t          dd          gg dd          }t          j        g dg dd          }|                                }t          |          t          j        u sJ t          ||           |                                }t          ||           |                                }t          ||            |	                                }t          ||            d S )Nr   r%   )r%   r   r   ttrY   r   )FTF)
r	   r   rg   r   isnullrf   r   isnanotnullnotna)r   rA   r_   ri   s       r   	test_isnar     s    	E!QKKU1a[[1	N	N	NB
)(((			
E
E
EC
))++C99	!!!!S!!!
''))CS!!!
**,,CcT"""
((**CcT"""""r   c                     t          g           } t          | t          dd          g          }|                                rJ |                                sJ t          t          dd          t          dd          g          }|                                sJ |                                sJ t          | | g          }|                                rJ |                                rJ d S )Nr$   )r   r	   r   allany)emptyr   s     r   test_any_allr     s    r""E5%1++&''Auuww5577NNN5A;;a,--A5577NNN5577NNN5%.!!Auuwwuuwwr   c                     t          t          dd          t          dd          t          dd          g          } |                                 }|j                                        g dk    sJ |                     d          }|j                                        g dk    sJ t          | j        d d                                         | j        d d                    d S )Nr   r%   r   r%   r$   F	ascending)r$   r%   r   )r	   r   sort_valuesrY   tolistr   rU   )r   ri   r   s      r   test_sort_valuesr     s    5A;;aU1a[[9::A
--//C9****==5=))D:)))++++ 16"1":1133QVBQBZ@@@@@r   c            	      R   t          t          dd          d t                      t          dd          g          } |                                 }|j                                        g dk    sJ |                     d          }|j                                        g dk    sJ |                     d          }|j                                        g d	k    sJ |                     dd
          }|j                                        g dk    sJ t          g d          } |                                 }|j                                        g dk    sJ t          t                      t                      t                      g          } |                                 }|j                                        g dk    sJ t          t                      d t                      g          } |                                 }|j                                        g dk    sJ d S )Nr   r$   )r%   r   r   r$   Fr   )r   r   r%   r$   first)na_position)r$   r%   r   r   )r   r   )r$   r   r   r%   rE   )r   r$   r%   r   )r	   r   r   rY   r   )r   ri   s     r   test_sort_values_empty_missingr     s   5A;;egguQ{{;<<A
--//C9---- --%-
(
(C9---- --G-
,
,C9---- --%W-
=
=C9---- 	$$$%%A
--//C9****577EGGUWW-..A
--//C9****577D%''*++A
--//C9******r   c                     t          t          dd          t          dd          t          dd          g          } t          t          dd          t          dd          g          }t          |                                 |           d S r   )r	   r   r
   r   unique)r   r_   s     r   test_uniquer     sn    5A;;aU1a[[9::A
aU1a[[1
2
2Cqxxzz3'''''r   c            
         t          t          dd          t          dd          t          dd          g          } |                                 }d}t          j        ddgt          t          dd          t          dd          g          |          }t          ||           t          t          dd          t          dd          t          dd          gd          }|                                }t          ||           t          j        rN|                                j	        j
        j        J |                                j	        j
        j        dk    sJ t          t          dd          t          ddgddgg          t          dd          g          }|                                }t          t          dd          t          ddgddgg          g          }t          j        ddg||          }	t          ||	           t          t          dd          d t          dd          g          }
|
                    d	          }t          j        dgt          t          dd          g          |          }t          ||           t          j        ddgt          t          dd          d g          |          }|
                    d
	          }t          ||           d S )Nr   r$   countr%   r   	EPSG:4326r8   T)r   F)r	   r   value_countsrg   r   r
   r   r   r   rY   r,   r9   r   )r   ri   r   r_   rA   r   r@   r   rY   exp3rB   r   exp4_dropnaexp4_keepnares4_keepnas                  r   test_value_countsr   !  s   5A;;aU1a[[9::A
..

CD
)QF,aU1a[[/I"J"JQU
V
V
VCS!!!	E!QKKq!eAqkk:	L	L	LB??Dc""" @  &,0<<<  &,0K???? 
E!QKKaVaV,<!=!=uQ{{K	L	LB??D%1++zAq6Aq62B'C'CDEEE9aV5t444Dd### 
E!QKKuQ{{3	4	4B??$?''D)QC|U1a[[M'B'BNNNKk***)QF,aT7J*K*KRVWWWK/////K[11111r   F)strictc                      t          t          dd          t          dd          g          } |                                 }t          |          dk    sJ d S )Nr   r$   )r	   r   drop_duplicatesrx   )dupsdroppeds     r   test_drop_duplicates_seriesr  B  sT     eAqkk5A;;/00D""$$Gw<<1r   c                     d} t          d t          |           D             t          |           d          }|                    d          }t          |          dk    sJ |                                }t          |          | k    sJ d S )Nr   c                 .    g | ]}t          d d           S )r   r   )r   _s     r   r   z.test_drop_duplicates_frame.<locals>.<listcomp>R  s     :::aeAqkk:::r   )r'   r(   r'   )subsetr$   )r   r   r   rx   )gdf_lendup_gdfdropped_geometrydropped_alls       r   test_drop_duplicates_framer  M  s     G::5>>:::eGnnUU G ..j.AA  A%%%%))++K{w&&&&&&r   c                    |                      d                                          }t          j        ddgddgddgd                              d          }t          ||           |                      d                              d          }t          j        ddgddgdd	                              d          }t          ||           |                      d          d
                             d           }t          t          j
                            ddg          t          dd          gt          j        ddgd          d
          }t          ||           |                      d          d
                             d           }t          j        ddgt          j        ddgd          d
          }t          ||           d S )Nr)   r%   r$   r&   Tr   )r(   r)   r    r!   r'   c                 *    |                                  S N	union_allr   s    r   <lambda>ztest_groupby.<locals>.<lambda>k  s    1;;== r   rO   r%   r%   r   r   c                 4    |                                  j        S r  )r  arear  s    r   r  ztest_groupby.<locals>.<lambda>u  s    1;;==;M r           )groupbyr   rg   rh   	set_indexr   r   applyr	   shapelyr'   
MultiPointr   Indexr   r   r   s      r   test_groupbyr  Z  s   
**X


$
$
&
&C
,V1v!Q@@ i  sC    **X


"
"
"
5
5C
,1a&QF;;7
K
K
K
U
U C sC    **X

z
*
0
01H1H
I
IC
			$	$ff%5	6	6aDh1vH---  C
 S!!! **X

z
*
0
01M1M
N
NC
)S#Jbh1vH&E&E&EJ
W
W
WCS!!!!!r   c                    |                      d                              dd i                              d          }|                      d                              dd f                              d          }t          t          j                            ddg          t          dd          gt          j	        dd	gd
                    }t          ||           t          ||           d S )Nr)   r'   c                 *    |                                  S r  r  r  s    r   r  z(test_groupby_agg_tuple.<locals>.<lambda>~  s    AKKMM r   c                 *    |                                  S r  r  r  s    r   r  z(test_groupby_agg_tuple.<locals>.<lambda>  s    Q[[]] r   r'   rO   r  r$   r%   r  )r'   rY   )r  aggset_geometryr   r  r'   r  r   rg   r  r   )r-   res_dictres_tupr_   s       r   test_groupby_agg_tupler(  {  s    


8	j112	3	3	j	!	!  	

8	z#:#:;	<	<	j	!	! 
 "--vv.>??q!Mh1vH---  C gs+++h00000r   c                     |                      d          }|                    d          }t          |t                    sJ | j        ddg         }t          ||           d S )Nr)   r$   r   r%   )r  	get_groupre   r   r]   r   )r-   gri   r_   s       r   test_groupby_groupsr,    s]    


8A
++a..Cc<(((((
&!Q.CsC     r   r9   r   geometry_namer'   geomc                 x     r t           j        st          j        d           t	          t          dd          t          dd          t          dd          gdt          j        dd          dt          j        g d	d          i 
          }i }t           j	        rt          d          } fd} |                    d          j        |fi | t           j	        sdk    r1|                    d          dg                             |           nat          j        t                    5  |                    d          dg                             |           d d d            n# 1 swxY w Y    |                    d          j        fdfi |}|                    g d                              dt           j	        d                                                              ddi                              g d          }t)          |                    dg          |           d S )Nrequires pyprojr   r$   r(   r   r    r!   r)   r#   r   F)include_groupsc                 P    t          | t                    sJ | j        k    sJ d S r  )re   r   r9   )groupr9   s    r   funcz#test_groupby_metadata.<locals>.func  s2    %.....yCr   r'   c                 B    t          j        | | dg         d          S )Nr(   inner)how)r:   sjoin)r   r-  s    r   r  z'test_groupby_metadata.<locals>.<lambda>  s"    )/!Qx'@%AwOOO r   )r   r   r%   r%   r$   T)dropappendvalue1_leftrc   )r   r%   r   r%   r$   )value1_rightindex_right)r   r   r   skipr   r   r*   r+   r,   PANDAS_GE_22dictr  r  r   AttributeErrorro   r  	swaplevelrenamer   r   r9  )r9   r-  r-   kwargsr4  ri   rr   s   ``     r   test_groupby_metadatarE    s     '6$ '%&&&	E!QKKq!eAqkkBbi111bhyyy888	

 
 
 
B F , U+++          BJJxt..v... H}
::


8mX67==dCCCC ]>** 	H 	HJJx  -!:;AA$GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H %"**X


$OOOO 
 C 	  	8&"5d	C	C		=1	2	2	___	-	-  chhh??JJJJJs   41E11E58E5c                 *   d }|                      |          }t          |t                    sJ t          ||            d }|                      |          }t          |t                    rJ t	          |t          j        g d                     d S )Nc                 4    t          | t                    sJ | S r  )re   r   r.  s    r   	geom_funcztest_apply.<locals>.geom_func  s    $&&&&&r   c                 >    t          | t                    sJ | j        S r  )re   r   r   rH  s    r   numeric_funcz test_apply.<locals>.numeric_func  s    $&&&&&vr   )r  g      ?g       @)r  re   r	   r   r   rg   r   )r   rI  rq   rK  s       r   
test_applyrL    s       WWYFfi(((((61%%%   WW\""F&),,,,,	/// : :;;;;;r   c                     | j         dgdf         }|                    d           }|j        }t          j                            ||           d S )Nr   r'   c                     | j         S r  )is_emptyrH  s    r   r  z%test_apply_loc_len1.<locals>.<lambda>  s    t} r   )r]   r  rO  r*   testingassert_allclose)r-   r  rq   rr   s       r   test_apply_loc_len1rR    sP     VQCO$F\\4455FHJvx00000r   z$convert_dtype is removed in pandas 3c                    t           j        st          j        d          }nt	          j                    }|5 }|                     d dd          }d d d            n# 1 swxY w Y   t          ||            t           j        r5t          |          dk    sJ dt          |d         j
                  v sJ d S t          |          dk    sJ d S )	NT)recordc                     | S r  r   r  s    r   r  z3test_apply_convert_dtypes_keyword.<locals>.<lambda>  s     r   r   )convert_dtypeargsr$   zthe convert_dtype parameterr   )r   r   warningscatch_warningsr   warnsr  r   rx   rT   message)r   recorderrT  ri   s       r   !test_apply_convert_dtypes_keywordr]    s%     "*$777<>>	 @VggkkBg??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @3"""  6{{a,F1I4E0F0FFFFFFF6{{as   AA"%A"c                    |r5t           j        st          j        d           |                     |          } |                     d d          }t          |          t          j        u sJ | 	                    t                    }t          ||           |                     d d          }t          |          t          j        u sJ t          ||           d S )Nr0  c                 6    |                      t                    S r  r   rT   cols    r   r  z/test_apply_no_geometry_result.<locals>.<lambda>      #**S// r   r   rl   c                 6    |                      t                    S r  r`  ra  s    r   r  z/test_apply_no_geometry_result.<locals>.<lambda>  rc  r   r$   )r   r   r   r>  r   r  rf   rg   rh   r   rT   r   )r-   r9   rq   rr   s       r   test_apply_no_geometry_resultre    s    
   	+K)***ZZ__XX11X::F<<2<''''yy~~Hvx(((XX11X::F<<2<''''vx(((((r   c                     |                      d          } |                     d d          }|j        j        dk    sJ d S )Nr.  c                     | S r  r   ra  s    r   r  z4test_apply_preserves_geom_col_name.<locals>.<lambda>  s    # r   r   rl   )r   r  r'   r   )r-   rq   s     r   "test_apply_preserves_geom_col_namerh    sH    			F	#	#BXXooAX..F?6))))))r   c                                           d d          }t          | j        d                                 d d          }t          | d                             d                                            d d          }|j        d	k    sJ                       d
 d          }|j        dk    sJ                        fdd          }|j        dk    sJ d S )Nc                     | j         S r  r#  rows    r   r  z0test_df_apply_returning_series.<locals>.<lambda>  s    #, r   r$   rl   F)	check_crsc                     | j         S r  )r(   rk  s    r   r  z0test_df_apply_returning_series.<locals>.<lambda>  s    #* r   r(   c                      t          d          S )NNaN)r   r  s    r   r  z0test_df_apply_returning_series.<locals>.<lambda>  s    e r   float64c                     d S r  r   r  s    r   r  z0test_df_apply_returning_series.<locals>.<lambda>  s     r   r   c                 6    j                                         S r  )r'   to_frame)rl  r-   s    r   r  z0test_df_apply_returning_series.<locals>.<lambda>#  s    r{3355 r   )r  r   r'   r   rC  r"   )r-   rq   ri   s   `  r   test_df_apply_returning_seriesru    s    XX..QX77F62;%@@@@XX,,1X55F8 3 3D 9 9:::XX,,1X55F<9$$$$XXnn1X--F<8#### ((5555A(
>
>C9      r   c                     g fd}| j         | d<   |                     |           dt          fdt          j        fdt          j        fdt          fg}|k    sJ d S )Nc                 Z                         | j        t          |           f           d S r  )r:  r   rf   )srsapply_typess    r   
get_dtypesz1test_df_apply_geometry_dtypes.<locals>.get_dtypes+  s*    CHd3ii011111r   geom2r'   r(   r)   )r'   r  r	   rg   r   )r-   rz  rr   ry  s      @r   test_df_apply_geometry_dtypesr|  '  s    K2 2 2 2 2 +BwKHHZ	Y	29	29	)	H (""""""r   c                     |                      d          }t          t          j        |                                d                    }t	          ||           d S )Nr(   rc   )pivotr   rg   rh   r   )r-   rq   rr   s      r   
test_pivotr  9  sU     XXhX''FBL,,2282DDEEHfh/////r   c                  v   t          j        dg i                                          } t          dg i                                          }t	          | |           t          j        dg i                                          } t          dg id                                          }t	          | |           d S )Nr'   rI   r#  )rg   rh   r   r   r   )rr   actuals     r   test_isna_empty_dtypesr  A  s     |Z,--2244H:r*++0022Fx((( |S"I&&++--H3)c2227799Fx(((((r   c                 .   d| j         d<   ddi}| j         |k    sJ | d d         | | d         dk             | ddg         fD ]}| j         |k    sJ |                                 }|j         |k    sJ |                    d          }|j         |k    sJ d S )	Nmy_namer   r%   r(   r)   r'   T)index_parts)attrsreset_indexexplode)r-   r  r  r   r   s        r   test_preserve_attrsr  N  s     BHVYE8u bqb62blQ./Xz4J1KL ! !x5      ..

C9 ++$+
'
'C9r   c                     t          dd          t          dd          g} t          ddg| d          }ddd|_        t          ddg| d          }|j                                        |_        t          dd	g| d          }|j                                        |_        t	          j        |||g          j        |j        k    sJ d
di|_        t	          j        |||g          j        i k    sJ d S )Nr%   r   )Ar'   r$   r   r   r   r      c)r   r   r  r   rg   concat)geomsdf1r   r   s       r   test_attrs_concatr  a  s     1a[[%1++&E
aV77
8
8Ca  CI
aV77
8
8C	  CI
aV77
8
8C	  CI9c3_%%+sy8888aCI9c3_%%+r111111r   c                     t          dd          t          dd          g} t          ddgddg| d          }ddd|_        t          ddgddg| d	          }|j                                        |_        t	          j        ||          j        |j        k    sJ d
di|_        t	          j        ||          j        i k    sJ d S )Nr%   r   rI   r   r$   )keyval1r'   r   r   )r  val2r'   r  )r   r   r  r   rg   merge)r  r  r   s      r   test_attrs_merger  q  s    1a[[%1++&E
SzAq6uMM
N
NCa  CI
SzAq6uMM
N
NC	  CI8C#sy0000aCI8C#r))))))r   c                    |                      d          } | j        j        du sJ | d d         | | d         dk             | ddg         fD ]}| j        j        du sJ |                                 }|j        j        du sJ t	          j        t                    5  |                     g d           d d d            n# 1 swxY w Y   t	          j        t                    5  | g d          d d d            n# 1 swxY w Y   t	          j        t                    5  t          j	        | | g           d d d            d S # 1 swxY w Y   d S )	NF)allows_duplicate_labelsr%   r(   r)   r'   )r   r   r$   )r(   r(   r'   )
	set_flagsflagsr  r  r   r   r   r^   rg   r  )r-   r  r   s      r   test_preserve_flagsr    s#   	e	4	4B8+u4444 bqb62blQ./Xz4J1KL 9 9x/588888 ..

C9,5555 
z	"	"  


999               
z	"	" - -
+++,,- - - - - - - - - - - - - - - 
z	"	"  
	2r(                 s6   C  CC$C;;C?C?EE
Ec                  x   t          t          dd          t          dd          t          dd          g          } t          j        | d          }t	          |t                     sJ |j        j        j        j        sJ t          dd          |j	        d<   |j
        d         t          dd          k    sJ d S )Nr$   r%   r   r}   r   )r	   r   r  bufferre   r,   _datar  	writeabler]   rU   )serrq   s     r   
test_ufuncr    s     U1a[[%1++uQ{{;
<
<C^C##Ffi((((( <#----"bMMFJqM;q>U2r]]******r   )[r   rX  packaging.versionr   numpyr*   pandasrg   r  shapely.geometryr   r   r   r   r:   geopandas._compat_compatr   r   r	   geopandas.arrayr
   r   geopandas.testingr   r   numpy.testingr   pandas.testingr   r   fixturer   r-   r3   markskipifgeos_versionrC   rK   rM   rV   ra   rj   rs   r{   r   r   r   r   r   r   filterwarningsr   r   r   r   r   r   r   r   parametrizer   r   r   r   r   r   r   xfailr  r  r  r(  r,  rE  rL  rR  PANDAS_GE_30r]  re  rh  ru  r|  r  r  r  r  r  r  r  r   r   r   <module>r     s   				  % % % % % %          N N N N N N N N N N N N     " " " " " " - - - - - - - - ( ( ( ( ( (  O O O O O O O O , , , , , , B B B B B B B B H H H   ' ' ' G(94=QRR; ; SR;8* * ** * *' ' '$!( !( !(H6 6 6*) ) )8: : :(1 1 10! ! !, , ,D$ $ $S S S@) ) ) A ! ! !<" " "! ! !# # #&C C C6$ $ $,  % % % bf~..# # /.#"  $A A A+ + +@( ( (2 2 2B %    !  %  	' 	' ! 	'" " "B1 1 1&! ! ! { 344:v*>??1K 1K @? 541Kh< < <(1 1 1 F'0VWW    XW $ { 344) ) 54)* * *! ! !(# # #$0 0 0
) 
) 
)  &2 2 2 * * *  0+ + + + +r   