
    rbi                        d dl Zd dlmZ d dlmZm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 d dlmZmZ d d	lmZ  ej        d
          Z G d dej                  Z G d dej                  Zej        d             Zej        d             Zd Zd Zej         !                    dd          d             Z"d Z#d Z$d Z%d Z&dS )    NPoint)GeoDataFrame	GeoSeries)
HAS_PYPROJ)geocodereverse_geocode)_prepare_geocode_result)assert_geodataframe_equal)assert_geoseries_equalmock)assert_series_equalgeopyc                   ,     e Zd ZdZ fdZ fdZ xZS )ForwardMockz
    Mock the forward geocoding function.
    Returns the passed in address and (p, p+.5) where p increases
    at each call

    c                 H     t                      j        |i | d| _        d S )Ng        super__init___nselfargskwargs	__class__s      l/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/geopandas/tests/test_geocode.pyr   zForwardMock.__init__   s*    $)&)))    c                     |d         | j         | j         dz   ff| _        | xj         dz  c_          t                      j        |i |S )Nr         ?   r   return_valuer   __call__r   s      r   r#   zForwardMock.__call__   sL     Gdgtw}%==1uww0000r   __name__
__module____qualname____doc__r   r#   __classcell__r   s   @r   r   r      s[             1 1 1 1 1 1 1 1 1r   r   c                   ,     e Zd ZdZ fdZ fdZ xZS )ReverseMockz
    Mock the reverse geocoding function.
    Returns the passed in point and 'address{p}' where p increases
    at each call

    c                 H     t                      j        |i | d| _        d S )Nr   r   r   s      r   r   zReverseMock.__init__,   s*    $)&)))r   c                     d| j          |d         f| _        | xj         dz  c_          t                      j        |i |S )Naddressr   r    r!   r   s      r   r#   zReverseMock.__call__0   sI    /dg//a81uww0000r   r$   r*   s   @r   r,   r,   $   s[             1 1 1 1 1 1 1 1 1r   r,   c                      ddg} | S )Nz260 Broadway, New York, NYz#77 Massachusetts Ave, Cambridge, MA )	locationss    r   r2   r2   6   s    -/TUIr   c                  F    t          dd          t          dd          g} | S )NgXRQgy-E@gVBSgGDrC@r   )pointss    r   r4   r4   <   s%    K,,eK.L.LMFMr   c                     t          dd          } t          dd          }d| j        d         fd|j        d         fd}t          |          }t          |          t          u sJ t
          r|j        d	k    sJ t          |          d
k    sJ d|v sJ |j        d         d         j        d         }| j        d         }|d         t          j
        |d                   k    sJ |d         t          j
        |d                   k    sJ |j        d         d         j        d         }|j        d         }|d         t          j
        |d                   k    sJ |d         t          j
        |d                   k    sJ d S )N皙(@Fgffffff7gYL@address0r   address1ab	EPSG:4326   r/   r;   geometryr    r<   )r   coordsr
   typer   r   crslenlocpytestapprox)p0p1ddfr@   tests         r   test_prepare_resultrL   B   s|    
tU		B	ud		B29Q<(
BIaL/IJJA	 	#	#B88|#### %v$$$$r77a<<<<????VC[$+A.F9Q<D!9d1g......!9d1g......VC[$+A.F9Q<D!9d1g......!9d1g........r   c                     t          dd          } d| j        d         fdd}t          |          }t          |          t          u sJ t
          r|j        dk    sJ t          |          dk    sJ d	|v sJ |j        d
         }t          |d         j                  dk    sJ |d         j	        sJ t          j        |d	                   sJ d S )Nr6   r7   r8   r   NNr:   r=   r>   r/   r<   r?   )r   r@   r
   rA   r   r   rB   rC   rD   is_emptypdisna)rG   rI   rJ   rows       r   test_prepare_result_nonerS   \   s    	tU		B29Q<(|<<A	 	#	#B88|#### %v$$$$r77a<<<<????
&+C s:%&&!++++z?####73y>"""""""r   geocode_result)NrN   c                     d| i}t          t                      gd gdd          }t          |          }t          ||           d S )Nr   )r?   r/   r=   rB   )r   r   r
   r   )rT   resultexpected_outputoutputs       r   *test_prepare_geocode_result_when_result_isrZ   o   s[     F"ggYD622  O
 %V,,Ffo66666r   c                      ddl m}  t          j        |           5  t	          dgd           d d d            d S # 1 swxY w Y   d S )Nr   GeocoderNotFoundzcambridge, mabadprovider)	geopy.excr]   rE   raisesr   r\   s    r   test_bad_provider_forwardra   |   s    ******	'	(	( 2 2!=1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   :>>c                      ddl m}  t          j        |           5  t	          t          dd          gd           d d d            d S # 1 swxY w Y   d S )Nr   r\   r^   )r_   r]   rE   r`   r	   r   r\   s    r   test_bad_provider_reverserc      s    ******	'	(	( 6 6q!}5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s    AAAc                    ddl m} d|fD ]}t          j        dt	                                5 }t          | |d          }t          |           |j        k    sJ 	 d d d            n# 1 swxY w Y   t          |           }t          |t                    sJ t          d t          |          D             d	          }t          ||d
                    t          |d         t          j        | d                     d S )Nr   Photonphotonzgeopy.geocoders.Photon.geocoder>   providertimeoutc                 h    g | ]/}t          t          |          d z   t          |                    0S )r   )r   float.0xs     r   
<listcomp>z test_forward.<locals>.<listcomp>   s2    ???U588c>588,,???r   r=   rV   r?   r/   name)geopy.geocodersrf   r   patchr   r   rC   
call_count
isinstancer   r   ranger   r   rP   Series)r2   r4   rf   ri   mgnexpecteds           r   test_forwardr}      s[   &&&&&&v& P PZ8+--HH 	2A	Ha@@@Ay>>Q\11111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	NN!\*****??eAhh???[
 
 
 	x:777AiL")II*N*N*NOOOOP P   -A((A,	/A,	c           	         ddl m} d|fD ]}t          j        dt	                                5 }t          ||d          }t          |          |j        k    sJ 	 d d d            n# 1 swxY w Y   t          |t                    sJ t          |d          }t          ||d	                    t          j        d
 t          t          |                    D             d          }t          |d         |           d S )Nr   re   rg   zgeopy.geocoders.Photon.reverser>   rh   r=   rV   r?   c                 2    g | ]}d t          |          z   S )r/   )strrm   s     r   rp   z test_reverse.<locals>.<listcomp>   s#    <<<AYQ<<<r   r/   rq   )rs   rf   r   rt   r,   r	   rC   ru   rv   r   r   r   rP   rx   rw   r   )r2   r4   rf   ri   ry   rz   r|   r/   s           r   test_reverser      sY   &&&&&&v& 3 3Z8+--HH 	/A1EEEAv;;!,.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ !\*****V555x:777)<<s6{{););<<<9
 
 
 	AiL'22223 3r~   )'pandasrP   shapely.geometryr   	geopandasr   r   geopandas._compatr   geopandas.toolsr   r	   geopandas.tools.geocodingr
   rE   geopandas.testingr   geopandas.tests.utilr   r   pandas.testingr   importorskipr   	MagicMockr   r,   fixturer2   r4   rL   rS   markparametrizerZ   ra   rc   r}   r   r1   r   r   <module>r      s       " " " " " " - - - - - - - - ( ( ( ( ( ( 4 4 4 4 4 4 4 4 = = = = = =  7 7 7 7 7 7 = = = = = = = = . . . . . .G$$1 1 1 1 1$. 1 1 1$1 1 1 1 1$. 1 1 1$   
   
/ / /4# # #& )+?@@	7 	7 A@	72 2 26 6 6P P P"3 3 3 3 3r   