
    h.                        d dl Z d dlZd dlZd dlmZmZ d dlZd dlm	Z	m
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 ej,                  d        Zej,                  d        Zej,                  d	        Zej,                  d
        Zd Zej8                  j;                  e d      d        Zd Zd Z d Z!d Z"d Z#d Z$ej8                  jK                  dd e eg d       eg d      g      fd eg d      fg      d        Z&d Z'd Z(d Z)d Z*d Z+d  Z,d! Z-d" Z.ej8                  jK                  d#d$d%g      d&        Z/y)'    N)MultiPolygonPolygon)GeoDataFrame	read_file)GEOS_GE_312
HAS_PYPROJPANDAS_GE_30SHAPELY_GE_21)assert_geodataframe_equalgeom_almost_equals)assert_frame_equalc                     t        |       }|g d   }|j                  ddi      }|j                  d      }d|d<   d|j                  dd	df<   |d
   j	                  d      |d
<   |S )N)geometryBoroNameBoroCoder   myshapescolumns   manhattan_bronx         r   int64)r   renameset_geometrylocastype)nybb_filenamenybb_polydfs     P/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/test_dissolve.pyr    r       s    M*KBCK$$j*-E$FK**:6K%&K!"./KOOAaC**+)*5<<WEK
    c                    | j                   dd }| j                   dd }|j                  j                         |j                  j                         g}t        d|idt	        j
                  ddgd	      | j                  
      }|S )Nr   r   r      r   r   r   r   namer   indexcrs)r   r   	union_allr   pdIndexr)   )r    r   others	collapsedmerged_shapess        r!   r/   r/      s     "ooa*O__Qq!F**,o.F.F.P.P.RSI 	Yhh1v$56OO	M r"   c                 B    | j                         }ddg|d<   ddg|d<   |S )NStaten Island	Manhattanr   r      r   copy)r/   firsts     r!   r6   r6   .   s2     E(+6E*AE*Lr"   c                 4    | j                         }ddg|d<   |S )Nr   g      ?r   r4   )r/   	test_means     r!   expected_meanr9   6   s$    ""$IHIjr"   c                 x    | j                  d      }|j                  j                  dk(  sJ t        ||      sJ y )Nr   r   )dissolver   r&   r   r    r6   tests      r!   test_geom_dissolver>   =   s;     12D==+++dE***r"   zpyproj not installed)reasonc                 ^    | j                   J | j                  d      }|j                   J y Nr   )r)   r;   r    r=   s     r!   "test_dissolve_retains_existing_crsrC   C   s3    ??&&& 12D88r"   c                 x    d | j                   j                  _        | j                  d      }|j                  J y rA   )r   arrayr)   r;   rB   s     r!   %test_dissolve_retains_nonexisting_crsrF   J   s7    %)K" 12D88r"   c                 B    | j                  d      }t        ||d       y )Nr   Fcheck_column_type)r;   r   r<   s      r!   test_first_dissolverJ   P   s     12Dude<r"   c                     | j                  ddd      }| j                  dg      j                  dd      }t        ||d	       t        ||d	       y )
Nr   meanTaggfuncnumeric_onlyr   r   rN   FrH   )r;   dropr   )r    r6   r9   r=   test2s        r!   test_mean_dissolverS   U   s_     16PTUDj\2;;6 < E }deD}euEr"   c                     d }t        j                  t        d      5  | j                  d|       d d d        y # 1 sw Y   y xY w)Nc                 P    t        j                  d       | j                  d      S )NfooF)rO   )warningswarnsum)groups    r!   sum_and_warnz8test_dissolve_emits_other_warnings.<locals>.sum_and_warnc   s    eyyey,,r"   rV   )matchr   rP   )pytestwarnsUserWarningr;   )r    r[   s     r!   "test_dissolve_emits_other_warningsr`   `   sD    - 
k	/ F.EF F Fs	   <Ac                     | j                         }|j                  |d<   |j                  ddgd      }|j                         }|j                  |d<   |j	                  |j                  dg      }t        ||d       y )Ndup_colr   r6   rP   FrH   )r5   r   r;   r(   	set_indexr   )r    r6   multi
multi_test
first_copys        r!   test_multicolumn_dissolverg   k   sz    E,,E)!2I >PJJ&,,Jy%%z'7'7&CDJz:Gr"   c                 f    | j                  dd      }|j                         }t        ||d       y )Nr   F)as_indexrH   )r;   reset_indexr   )r    r6   r=   
comparisons       r!   test_reset_indexrl   w   s2     1EBD""$Jz45Ar"   zgrid_size, expectedr   r   
   r   rp   	   )r   g?)gffffff@r   r   r   r3   )rt   )r   r   rq   ro   rn   c                     t        j                  t        g d      t        g d      g      }|j                  |       }|j                  d   j                  |      sJ y )Nrm   rs   )r   )	grid_sizer   )	geopandasr   r   r;   r   equals)rv   expectedgdfdissolved_gdfs       r!   test_dissolve_grid_sizer|   }   s\      
 
 ./01
C LL9L5M!!!$++H555r"   c           
         | j                  d       }t        | j                  j                  | j                  j	                         gddgddgddgi| j                  j                  | j
                        }t        ||d	       y )
N)byr   r1   r   r   r   r   r)   FrH   r;   r   r   r&   r*   r)   r   r    r=   ry   s      r!   test_dissolve_noner      s    4(D  %%(<(<(F(F(H'I)s		
 %%**OO	H x?r"   c                    | j                  dd      }t        | j                  j                  | j                  j	                         gddgddgi| j                  j                  | j
                        }t        ||d	
       y )NrL   TrM   r   g      @r   g@r   FrH   r   r   s      r!   test_dissolve_none_meanr      s}    TBD  %%(<(<(F(F(H'Iu	

 %%**OOH x?r"   c            	         t        j                  g dg dg dt         j                  j                  g d      d      j	                  g d      } t        j                  ddgt         j                  j                  d	d
g      d      j	                  d      }t        j                  ddgt         j                  j                  ddg      d      j	                  d      }t        j                  g dg dt         j                  j                  g d      d      j	                  ddg      }t        || j                  d             t        || j                  d             t        || j                  d             t        || j                  d             t        || j                  ddg             t        || j                  ddg             y )N)r3   r3   r$   r$   )r   r   r   r   )r   r   r   r   POINT (0 0)POINT (1 1)POINT (2 2)POINT (3 3))abcr   )r   r   r   r3   r$   MULTIPOINT (0 0, 1 1)MULTIPOINT (2 2, 3 3)r   r   r   r   r   r   zMULTIPOINT (1 1, 2 2, 3 3))r   r   r   r3   r3   r$   )r   r   r   )r   r   r   )r   r   r   r   )level)rw   r   rE   from_wktrc   r   r;   )rz   
expected_a
expected_bexpected_abs       r!   test_dissolve_levelr      s   

 
 !00L		
	 i   ''Q!00(*AB	
 in  ''Q!00 <=	
 in  ((!00G	
 ic
  z3<<a<#89z3<<c<#:;z3<<a<#89z3<<c<#:;{CLL1vL$>?{CLLSzL$BCr"   c                     t        j                  g dt         j                  j                  g d      d      } t        j                  ddgt         j                  j                  ddg      d      j	                  d      }|j                         }t        || j                  d             t        || j                  dd	
             y )N)r$   r3   r3   r   r   r   r   r$   r3   r   zMULTIPOINT (1 1, 2 2)r   F)sort)rw   r   rE   r   rc   
sort_indexr   r;   )rz   expected_unsortedexpected_sorteds      r!   test_dissolve_sortr      s    

 
 !00=	
C "..Q!00 78	
 in  (224OS(9:(#,,s,*GHr"   c            
         t        j                  t        j                  g d      g dg dt         j                  j                  g d      d      } t        rdnd }t        j                  t        j                  g d      g dt         j                  j                  d|d	d
g      g dd      j                  ddg      }t        j                  t        j                  g d      g dt         j                  j                  g d      g dd      j                  ddg      }t        || j                  ddg             t        || j                  ddgd             y )N)r   r   r   r   )r3   r3   r3   r$   )r3   r$   r   r   r   )catnoncatto_aggr   zGEOMETRYCOLLECTION EMPTY)r3   r$   r3   r$   r   r   r   )r3   Nr   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   )r3   r   r   T)observed)
rw   r   r+   CategoricalrE   r   r	   rc   r   r;   )rz   none_valexpected_gdf_observed_falseexpected_gdf_observed_trues       r!   test_dissolve_categoricalr      s:   

 
 >>"67""!00L		
	C .:)tH"+"8"8>>"67"!00+!!	 &	
# i!"  " "+!7!7>>/2!00G  	
	" i!"  2CLL%AR4ST"CLL%1BTL$Rr"   c                     t        j                  g dt         j                  j                  g d      d      } t        j                  dt        j
                  gt         j                  j                  ddg      d      j                  d      }t        j                  dgt         j                  j                  dg      d      j                  d      }t        || j                  dd	             t        || j                  d             y )
N)r3   r3   Nr   r   g      ?r   r   r   F)dropna)	rw   r   rE   r   npnanrc   r   r;   )rz   expected_with_naexpected_no_nas      r!   test_dissolve_dropnar   ,  s    

 
 !00=	
C !--rvv!00(-8	
 in  ++!002I1JK	

 in  'c%)HI~s||C'89r"   c                     t        j                  d      5 }| j                          d d d        D ]  }dt        |j                        vrJ  y # 1 sw Y   *xY w)NT)recordzdropna kwarg is not supported)rW   catch_warningsr;   strmessage)r    r   rs      r!   test_dissolve_dropna_warnr   I  s\    		 	 	-   E.c!))nDDDE s   AAc                     ddg|d<   ddg|d<   ddg|d<   t        j                         5  t        j                  d	       | j                  d
ddgdd      }d d d        t	        |       y # 1 sw Y   xY w)Nr   r3   )r   minr   r$   )r   max)r   counterror)actionr   r   r   r   )r   r   )r~   rN   )rW   r   simplefilterr;   r   )r    r/   r=   s      r!   test_dissolve_multi_aggr   R  s    *+QM%&*+QM%&,-q6M'(		 	 	" 
W-## "EN# $ 

 dM2
 
s   /A..A7methodcoveragedisjoint_subsetc                    |dk(  r!t         rt        st        j                  d       | j                  dd }| j                  dd }|j
                  j                  |      |j
                  j                  |      g}t        d|idt        j                  d	d
gd      | j                        }ddg|d<   d	dg|d<   | j                  d|      }t        ||d       y )Nr   zUnsupported shapely/GEOS.r   r   r   r$   )r   r   r   r   r   r%   r'   r1   r2   r   r3   r   FrH   )r   r
   r]   skipr   r   r*   r   r+   r,   r)   r;   r   )r    r   r   r-   r.   r/   r=   s          r!   test_dissolve_methodr   d  s    ""KM/0!ooa*O__Qq!F 	!!!0  **&*9I !	Yhh1v$56OO	M "1+ >M*!"AM* 1&AD}deDr"   )0rW   numpyr   pandasr+   shapelyr   r   rw   r   r   geopandas._compatr   r   r	   r
   r]   geopandas.testingr   r   pandas.testingr   fixturer    r/   r6   r9   r>   markskipifrC   rF   rJ   rS   r`   rg   rl   parametrizer|   r   r   r   r   r   r   r   r   r    r"   r!   <module>r      s      )  - R R  K -         + 
N+AB  C =
FF	HB  6789	
 
G>?@	6	6@@+D\I0.b::E3$ J0A#BCE DEr"   