a
    1$e}                     @   s^   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZ G dd dZdS )    N)assert_geodataframe_equal)assert_index_equalPoint)GeoDataFrame	GeoSeriesc                   @   sb   e Zd Zdd ZdddZdd Zd	d
 Zdd Zdd Zdd Z	dd Z
ejddd ZdS )TestMergingc                 C   s\   t dd tdD | _tg d| _t| jtdd| _tg dg dd| _	d S )Nc                 S   s   g | ]}t ||qS  r   .0ir	   r	   V/var/www/html/django/DPS/env/lib/python3.9/site-packages/geopandas/tests/test_merge.py
<listcomp>       z,TestMerging.setup_method.<locals>.<listcomp>   )      r   )geometryvalues)g?g?g333333?)col1Zcol2)
r   rangegseriespdZSeriesZseriesr   gdf	DataFramedf)selfr	   r	   r   setup_method   s    zTestMerging.setup_methodr   Nc                 C   s    |j |ksJ |j|ksJ d S N)_geometry_column_namecrs)r   r   geometry_column_namer    r	   r	   r   _check_metadata   s    zTestMerging._check_metadatac                 C   s   | j j| jddd}t|ts"J t|jts2J | | d| j _| j j	ddid
d| _ | j j| jddd}t|tsJ t|jtsJ | |d| j j d S )Nr   r   )Zleft_onZright_on	epsg:4326r   Zpoints)columns)r   merger   
isinstancer   r   r   r"   r    renameZset_geometryr   resr	   r	   r   
test_merge   s    
zTestMerging.test_mergec                 C   s   t | j| jg}|jdks J t|ts.J t|jts>J | | tt t 	| jt 	| jg}t
|| t | jj| jjg}|jdksJ t|tsJ t|jtsJ d S )N)   r   )r+   )r   concatr   shaper&   r   r   r   r"   r   r   )r   r)   expr	   r	   r   test_concat_axis0.   s    
"
zTestMerging.test_concat_axis0c                 C   s  t | j| jg}| | t | jd| jdg}| j|dd tjtdd6 t | j| jdg}| j|dd W d    n1 s0    Y  tjt	dd. t | jd| jdg W d    n1 s0    Y  tjtdd@ t | j| jd| jdg}| j|dd W d    n1 s>0    Y  tjt	dd2 t | j| jd| jdg W d    n1 s0    Y  d S )Nr#   r    2CRS not set for some of the concatenation inputs.*matchz6Cannot determine common CRS for concatenation inputs.*	epsg:4327)
r   r,   r   r"   set_crspytestwarnsUserWarningraises
ValueError)r   r)   Zres1Zres2res3r	   r	   r   test_concat_axis0_crs>   s4    
,<.z!TestMerging.test_concat_axis0_crsc                 C   sv  | j dj| j jdd}|ddg }|dg }t ( td t||g W d    n1 sj0    Y  t ( td t||g W d    n1 s0    Y  |dg jt	dd t
t|D d}t ( td t||g W d    n1 s0    Y  tjtd	d
4 | j dg }d |jd< t||g W d    n1 sh0    Y  d S )Nr#   r4   )geomr=   r   errorc                 S   s   g | ]}d qS r   r	   )r   _r	   r	   r   r   y   r   z@TestMerging.test_concat_axis0_unaligned_cols.<locals>.<listcomp>r1   r2   r   )r   r5   Zassignr   warningscatch_warningssimplefilterr   r,   r   r   lenr6   r7   r8   Ziloc)r   r   Zboth_geom_colsZsingle_geom_colZexplicit_all_none_caseZpartial_none_caser	   r	   r    test_concat_axis0_unaligned_colsg   s.    


,

,


.
z,TestMerging.test_concat_axis0_unaligned_colsc                 C   sP   t j| j| jgdd}|jdks$J t|ts2J t|jtsBJ | 	| d S )Nr   Zaxis)r      )
r   r,   r   r   r-   r&   r   r   r   r"   r(   r	   r	   r   test_concat_axis1   s
    zTestMerging.test_concat_axis1c                 C   s   d}t jt|d& tj| j| jgdd W d    n1 s>0    Y  | jd}d}t jt|d" tj||gdd W d    n1 s0    Y  tj|d| jgdd}| j|ddd d S )	NzXGeoDataFrame does not support multiple columns using the geometry column name 'geometry'r2   r   rE   r=   zXConcat operation has resulted in multiple columns using the geometry column name 'geom'.r#   )r!   r    )	r6   r9   r:   r   r,   r   Zrename_geometryr5   r"   )r   Zexpected_errZdf2Zexpected_err2r;   r	   r	   r   (test_concat_axis1_multiple_geodataframes   s    40z4TestMerging.test_concat_axis1_multiple_geodataframeszignore:Accessing CRSc                 C   s   t dd tddD dd}tj|| jgdd}t|tu s@J |jd u sNJ tt	d	dg|j
 d
|_tj|| jgdd}t|tu sJ |jd u sJ tt	d
d	g|j
 d S )Nc                 S   s   g | ]}t ||qS r	   r   r
   r	   r	   r   r      r   z;TestMerging.test_concat_axis1_geoseries.<locals>.<listcomp>r   r+   r#   r0   r   rE   r   Zfoo)r   r   r   r,   r   typer   r   r   Indexr$   name)r   Zgseries2resultZresult2r	   r	   r   test_concat_axis1_geoseries   s    z'TestMerging.test_concat_axis1_geoseries)r   N)__name__
__module____qualname__r   r"   r*   r/   r<   rD   rG   rH   r6   markfilterwarningsrM   r	   r	   r	   r   r      s   
)!
r   )r@   Zpandasr   r6   Zgeopandas.testingr   Zpandas.testingr   Zshapely.geometryr   Z	geopandasr   r   r   r	   r	   r	   r   <module>   s   