
    jj                        S SK rS SKJr  S SKJrJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKrS SKJr  S SKJrJr  S S	KJr  \R,                  " S
5      r " S S\R0                  5      r " S S\R0                  5      r\R6                  S 5       r\R6                  S 5       rS rS r\R@                  RC                  SS5      S 5       r"S r#S r$S r%S r&g)    NPoint)GeoDataFrame	GeoSeries)
HAS_PYPROJ)geocodereverse_geocode)_prepare_geocode_result)assert_geodataframe_equal)assert_geoseries_equalmock)assert_series_equalgeopyc                   8   ^  \ rS rSrSrU 4S jrU 4S jrSrU =r$ )ForwardMock   zr
Mock the forward geocoding function.
Returns the passed in address and (p, p+.5) where p increases
at each call

c                 4   > [         TU ]  " U0 UD6  SU l        g )Ng        super__init___nselfargskwargs	__class__s      _/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/tests/test_geocode.pyr   ForwardMock.__init__   s    $)&)    c                    > US   U R                   U R                   S-   44U l        U =R                   S-  sl         [        TU ]  " U0 UD6$ )Nr         ?   r   return_valuer   __call__r   s      r   r%   ForwardMock.__call__   sG     Gdggtww}%==1w000r   r   r$   	__name__
__module____qualname____firstlineno____doc__r   r%   __static_attributes____classcell__r   s   @r   r   r      s    1 1r   r   c                   8   ^  \ rS rSrSrU 4S jrU 4S jrSrU =r$ )ReverseMock$   zs
Mock the reverse geocoding function.
Returns the passed in point and 'address{p}' where p increases
at each call

c                 4   > [         TU ]  " U0 UD6  SU l        g )Nr   r   r   s      r   r   ReverseMock.__init__,   s    $)&)r   c                    > SU R                    3US   4U l        U =R                   S-  sl         [        TU ]  " U0 UD6$ )Naddressr   r"   r#   r   s      r   r%   ReverseMock.__call__0   sA    %dggY/a81w000r   r'   r(   r0   s   @r   r2   r2   $   s    1 1r   r2   c                      SS/n U $ )Nz260 Broadway, New York, NYz#77 Massachusetts Ave, Cambridge, MA )	locationss    r   r;   r;   6   s    -/TUIr   c                  6    [        SS5      [        SS5      /n U $ )NgXRQgy-E@gVBSgGDrC@r   )pointss    r   r=   r=   <   s    K,eK.LMFMr   c                     [        SS5      n [        SS5      nSU R                  S   4SUR                  S   4S.n[        U5      n[        U5      [        L d   e[
        (       a  UR                  S	:X  d   e[        U5      S
:X  d   eSU;   d   eUR                  S   S   R                  S   nU R                  S   nUS   [        R                  " US   5      :X  d   eUS   [        R                  " US   5      :X  d   eUR                  S   S   R                  S   nUR                  S   nUS   [        R                  " US   5      :X  d   eUS   [        R                  " US   5      :X  d   eg )N皙(@Fgffffff7gYL@address0r   address1ab	EPSG:4326   r7   rD   geometryr"   rE   )r   coordsr
   typer   r   crslenlocpytestapprox)p0p1ddfrI   tests         r   test_prepare_resultrU   B   s_    
tU	B	ud	B299Q<(
BIIaL/IJA	 	#B8|###zvv$$$r7a<<??VVC[$++A.F99Q<D!9d1g....!9d1g....VVC[$++A.F99Q<D!9d1g....!9d1g....r   c                     [        SS5      n SU R                  S   4SS.n[        U5      n[        U5      [        L d   e[
        (       a  UR                  S:X  d   e[        U5      S:X  d   eS	U;   d   eUR                  S
   n[        US   R                  5      S:X  d   eUS   R                  (       d   e[        R                  " US	   5      (       d   eg )Nr?   r@   rA   r   NNrC   rF   rG   r7   rE   rH   )r   rI   r
   rJ   r   r   rK   rL   rM   is_emptypdisna)rP   rR   rS   rows       r   test_prepare_result_noner\   \   s    	tU	B299Q<(|<A	 	#B8|###zvv$$$r7a<<??
&&+C s:%%&!+++z?####773y>""""r   geocode_result)NrW   c                 f    SU 0n[        [        5       /S /S.SS9n[        U5      n[        X25        g )Nr   )rH   r7   rF   rK   )r   r   r
   r   )r]   resultexpected_outputoutputs       r   *test_prepare_geocode_result_when_result_isrc   o   s;     F"gYD62O
 %V,Ff6r   c                      SSK Jn   [        R                  " U 5         [	        S/S5        S S S 5        g ! , (       d  f       g = f)Nr   GeocoderNotFoundzcambridge, mabadprovider)	geopy.excrf   rN   raisesr   re   s    r   test_bad_provider_forwardrj   |   s+    *	'	(!=1 
)	(	(s	   4
Ac                      SSK Jn   [        R                  " U 5         [	        [        SS5      /S5        S S S 5        g ! , (       d  f       g = f)Nr   re   rg   )rh   rf   rN   ri   r	   r   re   s    r   test_bad_provider_reverserl      s0    *	'	(q!}5 
)	(	(s	   >
Ac                    SSK Jn  SU4 H  n[        R                  " S[	        5       5       n[        XSS9n[        U 5      UR                  :X  d   e S S S 5        [        U 5      n[        W[        5      (       d   e[        [        U5       Vs/ s H$  n[        [        U5      S-   [        U5      5      PM&     snSS	9n[        XS
   5        [        US   [         R"                  " U SS95        M     g ! , (       d  f       N= fs  snf )Nr   Photonphotonzgeopy.geocoders.Photon.geocoderG   providertimeoutr!   rF   r_   rH   r7   name)geopy.geocodersro   r   patchr   r   rL   
call_count
isinstancer   r   ranger   floatr   r   rY   Series)	r;   r=   ro   rr   mgnxexpecteds	            r   test_forwardr      s    &v&ZZ8+-HA	a@Ay>Q\\111 I 	N!\****6;Ah?hU58c>58,h?[
 	x:7AiL"))II*NO 'HH @s   &C6+D
6
D	c           
         SSK Jn  SU4 H  n[        R                  " S[	        5       5       n[        XSS9n[        U5      UR                  :X  d   e S S S 5        [        W[        5      (       d   e[        USS9n[        XeS	   5        [        R                  " [        [        U5      5       Vs/ s H  nS
[        U5      -   PM     snS
S9n[!        US
   U5        M     g ! , (       d  f       N= fs  snf )Nr   rn   rp   zgeopy.geocoders.Photon.reverserG   rq   rF   r_   rH   r7   rt   )rv   ro   r   rw   r2   r	   rL   rx   ry   r   r   r   rY   r|   rz   strr   )	r;   r=   ro   rr   r}   r~   r   r   r7   s	            r   test_reverser      s    &v&ZZ8+-HA1EAv;!,,... I !\****V5x:7))).s6{);<);AYQ);<9
 	AiL'2 'HH =s   &C#1C4
#
C1	)'pandasrY   shapely.geometryr   	geopandasr   r   geopandas._compatr   geopandas.toolsr   r	   geopandas.tools.geocodingr
   rN   geopandas.testingr   geopandas.tests.utilr   r   pandas.testingr   importorskipr   	MagicMockr   r2   fixturer;   r=   rU   r\   markparametrizerc   rj   rl   r   r   r:   r   r   <module>r      s     " - ( 4 =  7 = .G$1$.. 1$1$.. 1$  
  
/4#& )+?@	7 A	726P"3r   