a
    1$e#g                     @   s  d dl Z d dlmZ d dlZd dlZd dlm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mZ d dlmZ d dlmZ d dlmZmZ d dlmZmZ d dlZejd	d
 Z ejdd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd  Z+d!d" Z,d#d$ Z-d%d& Z.d'd( Z/d)d* Z0ej12d+d,d- Z3d.d/ Z4d0d1 Z5d2d3 Z6d4d5 Z7d6d7 Z8d8d9 Z9d:d; Z:ej1;d<dej<gd=d> Z=d?d@ Z>dAdB Z?dCdD Z@dEdF ZAdGdH ZBdIdJ ZCej1jDdKdLdMdN ZEej1jDdKdLdOdP ZFdQdR ZGdSdT ZHej1jIej1;dUddVgdWdX ZJdYdZ ZKd[d\ ZLd]d^ ZMej1;dUddVgd_d` ZNdadb ZOdcdd ZPdedf ZQdgdh ZRdidj ZSdkdl ZTdS )m    N)Version)assert_array_equal)PointGeometryCollection
LineString
LinearRing)GeoDataFrame	GeoSeries)from_shapely)assert_geodataframe_equalassert_geoseries_equal)assert_frame_equalassert_series_equalc                   C   s    t dd ttdtdD S )Nc                 S   s   g | ]\}}t ||qS  r   ).0xyr   r   _/var/www/html/django/DPS/env/lib/python3.9/site-packages/geopandas/tests/test_pandas_methods.py
<listcomp>       zs.<locals>.<listcomp>   )r	   zipranger   r   r   r   s   s    r   c                   C   s6   t dd tdD tjdddtjg ddddS )Nc                 S   s   g | ]}t ||qS r   r   )r   r   r   r   r   r      r   zdf.<locals>.<listcomp>r   int64dtype      r   geometryvalue1value2)r   r   nparangearrayr   r   r   r   df   s    r(   c                 C   s4   dt | v sJ dt |v s J d| v s0J d S )NZPOINT)repr_repr_html_r   r(   r   r   r   	test_repr&   s    r,   c                  C   s   t dd} t dd}t| |d g}dt|v s2J t| |gdd}dt|v sRJ t dd} t d	d	}t| |d g}d
t|v sJ t| |gdd}d
t|v sJ dtj_dt|v sJ dtj_dt|v sJ 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)	   z!POINT (10.123456789 50.123456789))r   r	   r)   	geopandasoptionsZdisplay_precision)p1p2s1s3s2s4r   r   r   !test_repr_boxed_display_precision,   s     



r9   c                  C   sR   t g d} dt| v sJ tg d| d}dt|v s>J d| v sNJ d S )NNNNNoner   r    r   ar"   r"   r	   r)   r   r*   r+   r   r   r   test_repr_all_missingH   s
    r@   c                  C   sJ   t g } t| dksJ tg | d}dt|v s6J d| v sFJ d S )NzGeoSeries([], dtype: geometry)r=   zEmpty GeoDataFramer"   r?   r+   r   r   r   test_repr_emptyQ   s
    rA   c                  C   sh   t tg dg} dt| jd v s(J dt| v s8J t tg dtg dg}dt|vsdJ d S )N)r   r   r   r   r   Z
LINEARRINGr   )rB   rC   rD   rB   )r	   r   strilocr   )r   r7   r   r   r   test_repr_linearring[   s    

rH   c                 C   s  t dd}| d |ksJ | jd |ks,J | jd |ks>J |jd |ksPJ |jd |ksbJ tt ddt ddgddgd}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d	 tt ddt ddgddgd}tg d
}t| | | t| j| | t|| d | t|j|df | g d| _	tt ddt ddgddgd}t| dd  | t| jdd  | t| jdd  | d S )Nr   )r   r"   )r   r   r    r   indexr"   F)Zcheck_series_typeZcheck_namesTFTr<   r   )
r   locrG   r	   r   reindexr   r%   r'   rJ   )r   r(   expmaskr   r   r   test_indexingm   s2    
  
 rP   c                 C   s   |  g d}ttddtddd gg dd}t|| |j g dd}t|j| |j ddgd}t|tstJ t|jtsJ t||ddg  |j ddgd}t|t	j
ksJ t||ddg  d S )	Nr<   r   r    rI   r#   r"   columnsr$   )rM   r	   r   r   r"   
isinstancer   r   typepd	DataFrame)r   r(   resrN   r   r   r   test_reindex   s    "
rX   c                 C   s   t ddg}| |}| jddg }t|ts4J t|| |j|dd}|jddgd d f }t|tspJ t|| |j	g dd}|j|dd}|ddg }t|tsJ t|| |jt ddgdd}|dd	g }t|t
jsJ t|| d S )
Nr   r    Zaxisr#   r$   r"   rQ   r   r#   r"   r$   )r%   r'   takerG   rS   r	   r   r   r   rM   rU   rV   r   )r   r(   indsresultexpectedr   r   r   	test_take   s$    



r_   c                 C   s   t jg dd}tjdt|d|_|j|dd}t|ts>J |j	dksLJ t|jtj
s^J |j|d d	k ||d d	k fD ]2}t|tsJ |j	dksJ t|jtj
sJ qd S )
Nr   r   z
2012-01-01)Zperiodsr   rY   )r   r   r#   d   )r%   r'   rU   Z
date_rangelenrJ   r[   rS   r   shapeZDatetimeIndexrL   )r   r(   r\   r]   r   r   r   test_take_empty   s    &rc   c                 C   s   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"   rB   )r	   r   copyr   rL   rG   )r   r(   rN   r7   df2r   r   r   test_assignment   s      


rh   c                 C   s8   | j dd}|  }d|d< t|ts*J t|| d S )Nr   )newri   )assignrf   rS   r   r   r(   rW   rN   r   r   r   test_assign   s
    rl   c                 C   sB  t t | t W d    n1 s*0    Y  | td dksJJ | t}ttj	tdkst
|tjr|t
|trJ |jtksJ |d}|dti}t
|tsJ |t}t
|tjrt
|trJ |dti}t
|tjrt
|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	geom_listr#   )pytestraises	TypeErrorastypeintrF   objectr   rU   __version__rS   Seriesr	   r   rename_geometryfloatr   rV   )r   r(   rW   r   r   r   test_astype   s"    (



rw   c                  C   sP   t g dg dd} | t}t|tjr6t|t r:J |d jtksLJ d S )Nr<   )         )r>   br>   )r   rp   rr   rS   rU   rV   r   )r(   rW   r   r   r    test_astype_invalid_geodataframe  s    
r|   c                 C   s   |   }tt|   | j| jjd}t|| | g d   }t|g d | | jdd	d}tt|  |j|jjd}|  }t|| |g d   }t|g d | d S )N)r/   r"   rZ   r-   )Zepsgpoints)r#   r$   r}   )
Zconvert_dtypesr   rU   rV   r/   r"   namer   set_crsru   )r(   Zres1Z	expected1res2rg   Z	expected2res3res4r   r   r   test_convert_dtypes  s    

r   c                 C   s&   d dtj}| jdd|ks"J d S )NzGgeometry,value1,value2
POINT (0 0),0,1
POINT (1 1),1,2
POINT (2 2),2,1

FrI   )replaceoslinesepZto_csv)r(   rN   r   r   r   test_to_csv=  s
    r   z;ignore:Dropping of nuisance columns in DataFrame reductionsc                 C   sf  t jddgddgd}tjs&| }n|jdd}t|| tt |   W d    n1 sd0    Y  tt | 	  W d    n1 s0    Y  ttt
f |   W d    n1 s0    Y  tt |d  W d    n1 s0    Y  tt | d  W d    n1 s20    Y  |d	k}t jd
|j|jd}t|| d S )Nr   rx   r#   r$   rI   TZnumeric_onlyr   r`   F)rJ   rR   )rU   rt   compatPANDAS_GE_20sumr   rm   rn   ro   max
ValueErrorZidxmaxrV   rJ   rR   r   )r   r(   rN   rW   r   r   r   test_numerical_operationsD  s$    

&&&&(r   c                 C   s<   |  tg d}ttddd tddg}t|| d S )NrK   r   r    )wherer%   r'   r	   r   r   )r   rW   rN   r   r   r   
test_whereh  s    r   c                 C   s*   | j tjgd}| ddg }t|| d S )N)includer#   r$   )Zselect_dtypesr%   numberr   rk   r   r   r   test_select_dtypesn  s    r   c                 C   s   |   }| |du sJ d |jd< | |du s6J |  }||du sPJ tdd|jd< ||du srJ |  }d|jd< ||du sJ d S )NTr   Frd   re   r   r#   )rf   equalsrG   r   rL   )r   r(   r7   rg   r   r   r   test_equalst  s    

r   c                 C   s   t tddd tddg}|tdd}t||  |tj}t|| | }||d< |tdd}t|| t	t
tf |d W d    n1 s0    Y  | }tj|jd< |d}t|ddi| d S )Nr   r    r   r"   r   r#   r   )r	   r   fillnar   r%   nanrf   r   rm   rn   NotImplementedErrorro   rL   rp   )r   r(   r7   rW   rg   df3r   r   r   test_fillna_scalar  s    


(
r   c                 C   s   t tddd tddg}|t tddgd }t||  g d}|t dd |D |d}t||  |t tddgdgd}t||  |t tddgd	gd}t|| d S )
Nr   r    r   r   )r   r    r   c                 S   s   g | ]}t ||qS r   r   )r   ir   r   r   r     r   z&test_fillna_series.<locals>.<listcomp>rI   r0   )r	   r   r   r   )r   r7   rW   rJ   r   r   r   test_fillna_series  s    


r   c                 C   sV   t tddd tddg}|j}|jtdddd t||  tjrR|j|u sRJ d S )Nr   r    r   T)Zinplace)r	   r   r'   r   r   r   PANDAS_GE_21)r   r7   Zarrr   r   r   test_fillna_inplace  s    
r   c                  C   s>   t tddd tddg} |  }| jddg }t|| d S Nr   r    )r	   r   dropnarL   r   )r7   rW   rN   r   r   r   test_dropna  s    r   NAc                 C   s   t tdd| tddgg ddd}tjg dg ddd}| }t|tjksVJ t|| | }t|| | }t||  |	 }t||  d S )Nr   r    )r    rx   ry   ttrJ   r~   )FTF)
r	   r   rU   rt   ZisnullrT   r   ZisnaZnotnullZnotna)r   r7   rN   rW   r   r   r   	test_isna  s    $

r   c                  C   s   t g } t| tddg}| r&J | s2J ttddtddg}| sVJ | sbJ t| | g}| rzJ | rJ d S )Nr   )r   r	   r   allany)emptyr   r   r   r   test_any_all  s    r   c                  C   s   t tddtddtddg} |  }|j g dks>J | jd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_valuesrJ   tolistr   rG   )r   rW   r   r   r   r   test_sort_values  s     r   c                  C   s8  t tddd t tddg} |  }|j g dks<J | jdd}|j g dks^J | jdd}|j g d	ksJ | jddd
}|j g dksJ t g d} |  }|j g dksJ t t t t g} |  }|j g dksJ t t d t g} |  }|j g dks4J 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    r:   )r   r   r    r   )r	   r   r   rJ   r   )r   rW   r   r   r   test_sort_values_empty_missing  s$    r   c                  C   sJ   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   rN   r   r   r   test_unique  s     r   c                 C   s   t jrt| S | S d S N)r   PANDAS_GE_14r
   rI   r   r   r   pd14_compat_index  s    r   c                  C   s^  t tddtddtddg} |  }tjr4d}nd }t 8 tjddgttddtddg|d}W d    n1 s~0    Y  t	|| t tddtddtddgdd}| }t	|| tj
r| jjjd u sJ 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 $ tjddg||d}	W d    n1 sl0    Y  t	||	 t tddd tddg}
|
jdd	}t . tjdgttddg|d}W d    n1 s0    Y  t	|| t 2 tjddgttddd g|d}W d    n1 s:0    Y  |
jd
d	}t	|| d S )Nr   r   countr    r   	EPSG:4326r.   T)r   F)r	   r   Zvalue_countsr   r   Zignore_shapely2_warningsrU   rt   r   r   r   rJ   r'   r/   r   )r   rW   r~   rN   r7   r   r6   r   rJ   Zexp3r8   r   Zexp4_dropnaZexp4_keepnaZres4_keepnar   r   r   test_value_counts&  s@     
$
$
*"
4

>

&r   F)strictc                  C   s4   t tddtddg} |  }t|dks0J d S )Nr   r   )r	   r   drop_duplicatesra   )ZdupsZdroppedr   r   r   test_drop_duplicates_seriesQ  s    r   c                  C   s\   d} t dd t| D t| d}|jdd}t|dks@J | }t|| ksXJ d S )Nr   c                 S   s   g | ]}t d d qS )r   r   )r   _r   r   r   r   a  r   z.test_drop_duplicates_frame.<locals>.<listcomp>)r"   r#   r"   )subsetr   )r   r   r   ra   )Zgdf_lenZdup_gdfZdropped_geometryZdropped_allr   r   r   test_drop_duplicates_frame\  s    r   c                 C   s,  |  d }tddgddgddgdd}t|| tjsR|  d }n|  djdd}tjddgddgddd	d}t|| |  dd
 	dd }t
tjddgtddgtjddgddd
d}t|| |  dd
 	dd }tjddgtjddgddd
d}t|| d S )Nr$   r    r   r!   Tr   )r#   r$   r   r   r"   c                 S   s   | j S r   )unary_unionr   r   r   r   <lambda>|  r   ztest_groupby.<locals>.<lambda>rB   )r    r    )r~   r   c                 S   s   | j jS r   )r   Zarear   r   r   r   r     r           )groupbyr   rU   rV   	set_indexr   r   r   r   applyr	   shapelyr"   Z
MultiPointr   Indexr   rt   rk   r   r   r   test_groupbyi  s0    


"r   c                 C   s>   |  d}|d}t|ts"J | jddg }t|| d S )Nr$   r   r   r    )r   Z	get_grouprS   r   rL   r   )r(   grW   rN   r   r   r   test_groupby_groups  s
    

r   r/   r   c                    s   t tddtddtddgtjdddtjg dddd d} fd	d
}|d| |ddd }|g djdddd	 j
ddidjg dd}t|jdgd| d S )Nr   r   r   r   r   r   r!   r.   c                    s    t | tsJ | j ksJ d S r   )rS   r   r/   )groupr.   r   r   func  s    z#test_groupby_metadata.<locals>.funcr$   c                 S   s   t j| | ddg ddS )Nr"   r#   inner)how)r1   Zsjoinr   r   r   r   r     r   z'test_groupby_metadata.<locals>.<lambda>)r   r    r   r    r   FT)dropappendr#   Zvalue1_leftrQ   )r   r   r    r    r   )Zvalue1_rightZindex_right)r   r   r%   r&   r'   r   r   r[   r   Z	swaplevelrenamerj   r   r   )r/   r(   r   rW   r^   r   r.   r   test_groupby_metadata  s*    


r   c                 C   sb   dd }|  |}t|ts J t||  dd }|  |}t|trJJ t|tg d d S )Nc                 S   s   t | tsJ | S r   )rS   r   geomr   r   r   	geom_func  s    ztest_apply.<locals>.geom_funcc                 S   s   t | tsJ | jS r   )rS   r   r   r   r   r   r   numeric_func  s    z test_apply.<locals>.numeric_func)r   g      ?g       @)r   rS   r	   r   r   rU   rt   )r   r   r]   r   r   r   r   
test_apply  s    


r   c                 C   s6   | j dgdf }|dd }|j}tj|| d S )Nr   r"   c                 S   s   | j S r   )is_emptyr   r   r   r   r     r   z%test_apply_loc_len1.<locals>.<lambda>)rL   r   r   r%   testingZassert_allclose)r(   r   r]   r^   r   r   r   test_apply_loc_len1  s    r   c                 C   s   t jstjdd}nt }|$}| jdd ddd}W d    n1 sJ0    Y  t||  t jrt|dkstJ dt	|d	 j
v sJ nt|d	ksJ d S )
NT)recordc                 S   s   | S r   r   r   r   r   r   r     r   z3test_apply_convert_dtypes_keyword.<locals>.<lambda>r   )Zconvert_dtypeargsr   zthe convert_dtype parameterr   )r   r   warningscatch_warningsrm   Zwarnsr   r   ra   rF   message)r   Zrecorderr   rW   r   r   r   !test_apply_convert_dtypes_keyword  s    2
r   c                 C   sx   |r|  |} | jdd dd}t|tju s2J | t}t|| | jdd dd}t|tju sjJ t|| d S )Nc                 S   s
   |  tS r   rp   rF   colr   r   r   r     r   z/test_apply_no_geometry_result.<locals>.<lambda>r   rY   c                 S   s
   |  tS r   r   r   r   r   r   r     r   r   )r   r   rT   rU   rV   rp   rF   r   )r(   r/   r]   r^   r   r   r   test_apply_no_geometry_result  s    


r   c                 C   s0   |  d} | jdd dd}|jjdks,J d S )Nr   c                 S   s   | S r   r   r   r   r   r   r     r   z4test_apply_preserves_geom_col_name.<locals>.<lambda>r   rY   )ru   r   r"   r~   )r(   r]   r   r   r   "test_apply_preserves_geom_col_name  s    
r   c                    s    j dd dd}t| jdd  j dd dd}t| d d   j d	d dd}|jd
kshJ  j dd dd}|jdksJ  j  fdddd}|jdksJ d S )Nc                 S   s   | j S r   )r"   rowr   r   r   r     r   z0test_df_apply_returning_series.<locals>.<lambda>r   rY   F)Z	check_crsc                 S   s   | j S r   )r#   r   r   r   r   r      r   r#   c                 S   s   t dS )NNaN)rv   r   r   r   r   r     r   float64c                 S   s   d S r   r   r   r   r   r   r     r   rr   c                    s
    j  S r   )r"   Zto_framer   r(   r   r   r     r   )r   r   r"   r   r   r   )r(   r]   rW   r   r   r   test_df_apply_returning_series  s    r   c                    sT   g   fdd}| j | d< | | dtfdtjfdtjfdtfg} |ksPJ d S )Nc                    s     | jt| f d S r   )r   r~   rT   )ZsrsZapply_typesr   r   
get_dtypes  s    z1test_df_apply_geometry_dtypes.<locals>.get_dtypesZgeom2r"   r#   r$   )r"   r   r	   rU   rt   )r(   r   r^   r   r   r   test_df_apply_geometry_dtypes  s    

r   c                 C   s0   | j dd}tt| j dd}t|| d S )Nr#   rQ   )Zpivotr   rU   rV   r   )r(   r]   r^   r   r   r   
test_pivot!  s    r   c                 C   s   d| j d< ddi}| j |ks J | d d | | d dk | ddg fD ]}| j |ksFJ qF|  }|j |kspJ |jdd}|j |ksJ d S )	NZmy_namer~   r    r#   r$   r"   T)Zindex_parts)attrsreset_indexZexplode)r(   r   r   rg   r   r   r   r   test_preserve_attrs)  s    
*r   c                 C   s  | j dd} | jjdu sJ | d d | | d dk | ddg fD ]}| jjdu sBJ qB|  }|jjdu spJ tt | g d W d    n1 s0    Y  tt | g d  W d    n1 s0    Y  tt t	| | g W d    n1 s0    Y  d S )	NF)allows_duplicate_labelsr    r#   r$   r"   )r   r   r   )r#   r#   r"   )
Z	set_flagsflagsr   r   rm   rn   r   rM   rU   concat)r(   r   rg   r   r   r   test_preserve_flags<  s    *,*r   )Ur   Zpackaging.versionr   r   numpyr%   Znumpy.testingr   ZpandasrU   r   Zshapely.geometryr   r   r   r   r1   r   r	   Zgeopandas._compat_compatr   Zgeopandas.arrayr
   Zgeopandas.testingr   r   Zpandas.testingr   r   rm   Zfixturer   r(   r,   r9   r@   rA   rH   rP   rX   r_   rc   rh   rl   rw   r|   r   r   markfilterwarningsr   r   r   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   Zxfailr   r   r   r   Zskip_no_sindexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   


	
$	
!

 +


#!

