
    ac                        d dl Z d dlZd dlmZ d dlZd dlZ ej        d                                          Z	d Z
d Zd ZddZej                            d	 ej                              d
             Zej        j        ej                            de	          d                         Zej        j        ej                            d	ej                  d                         Zej        j        ej                            d	ej                  d                         Zej        j        d             Zej        j        ej                            d	ej                  d                         Zej        j        ej                            d	ej                  d                         Zej        j        ej                            d	ej                  d                         Zej        j        ej                            d	ej                  d                         Zej        j        ej                            d	ej                   d                         Z!dS )    NF)requires_tokenc                     dD ]}||                                  v sJ | j                            d          sJ dD ]}|| j        v sJ d S )N)attributionnamehttp)z{z}z{y}z{x})keysurl
startswith)providerkeyoptions      @lib/python3.11/site-packages/xyzservices/tests/test_providers.pycheck_providerr      sx    & & &hmmoo%%%%%<""6*****' & &%%%%%& &    c                 z   |                      dddgddgg          }|d         d         |d         d         z   dz  }|d         d         |d         d         z   dz  }|                      d	d          |                      d
d          z   dz  }t          j        |||          }|j        }|j        }|j        }|||fS )NboundsiLi   Z   r         min_zoommax_zoom   )get
mercantiletilezxy)	r   r   latlonzoomr   r   r   r   s	            r   get_tiler#      s    \\(dC[3)$<==F!9Q<&)A,&!
+C!9Q<&)A,&!
+CLLQ''(,,z2*F*FF1LD?3T**DAAAq!9r   c                 R   t          j                    }t           j                            d          }|                    d|           |                    d|           	 |                    | d          }n)# t           j        $ r t          j        d           Y nw xY w|j	        S )N   )max_retrieszhttp://zhttps://   )timeoutzTimeout.)
requestsSessionadaptersHTTPAdaptermountr   ConnectionErrorpytestxfailstatus_code)r	   sars       r   get_responser5      s    A%%!%44AGGIqGGJ!EE#rE""# ! ! !Z     !=s   !A9 9#BBTc           	         |                      d          rt          j        d           t          |           \  }}}	 t	          |                     |||                    }|t          j        j        k    sJ d S # t          $ r |dk    r|rt          j        d           Y d S |dk    rt          j        d           Y d S |dk    rt          j        d	           Y d S |d
k    ryg d}g }|D ]B}|\  }}}t	          |                     |||                    }|
                    |           Ct          d |D                       st          d|           Y d S t          d|           w xY w)NstatuszProvider is known to be broken.)r   r   r   i  z;Provider not available due to API restrictions (Error 403).i  z,Service temporarily unavailable (Error 503).i  zBad Gateway (Error 502).i  ))   ij  iS  )         )   i}  iY  )r   r   r   )r   r9      )r9   r;      )r9   r;       )r9   r;   !   )r9      r>   )r9   rA   r?   )r9   rA   r@   )r9      r>   )r9   rB   r?   )r9   rB   r@   )	   i     )r8   i  i  c                 8    g | ]}|t           j        j        k    S  )r)   codesok).0r   s     r   
<listcomp>z#get_test_result.<locals>.<listcomp>X   s"    @@@1X^..@@@r   zResponse code: )r   r/   r0   r#   r5   	build_urlr)   rG   rH   AssertionErrorappendany
ValueError)	r   	allow_403r   r   r   r4   optionsresultsos	            r   get_test_resultrT   +   s   ||H 86777x  GAq!*4++a1+::;;HN%%%%%%% '4 '4 '48 &	4	 &	4LVWWWWWW#X #	4LGHHHHHH#X  	4L3444444 #X 	4  G$ G " "1a !3!3a1!3!B!BCCq!!!!@@@@@AA 8 !61!6!67778 8 8 2q22333O'4s$   <A< <&E1%E1E1A<E1E1provider_namec                 V    t          j                    |          }t          |           d S N)xyzflattenr   )rU   r   s     r   test_minimal_provider_metadatarZ   ^   s&    {}}]+H8r   r   c                 >    t           |          }t          |           d S rW   )	flat_freerT   )r   r   s     r   test_free_providersr]   d   s!     HHr   c                    	 t           j        d         }n$# t          $ r t          j        d           Y nw xY w|dk    rt          j        d           t          j        |          |          }t          |d           d S )NTHUNDERFORESTMissing API token. Token empty.apikeyFrP   )osenvironKeyErrorr/   r0   rX   ThunderforestrT   rU   tokenr   s      r   test_thunderforestrl   p   s    +
?+ + + +)*****+{ %^$$$ /u===HH......    66c                    	 t           j        d         }n$# t          $ r t          j        d           Y nw xY w|dk    rt          j        d           t          j        |          |          }t          |d           d S )NJAWGr`   ra   rb   accessTokenFre   )rf   rg   rh   r/   r0   rX   JawgrT   rj   s      r   	test_jawgrs   ~   s    +
6" + + +)*****+{ %^$$$x&5999HH......rm   c                      	 t           j        d         } n$# t          $ r t          j        d           Y nw xY w| dk    rt          j        d           t          j        |           }t          |d           d S )NMAPBOXr`   ra   rb   rp   Fre   )rf   rg   rh   r/   r0   rX   MapBoxrT   )rk   r   s     r   test_mapboxrw      s    +
8$ + + +)*****+{ %^$$$ze,,,HH......rm   c                    	 t           j        d         }n$# t          $ r t          j        d           Y nw xY w|dk    rt          j        d           t          j        |          |          }t          |d           d S )NMAPTILERr`   ra   rb   )r   Fre   )rf   rg   rh   r/   r0   rX   MapTilerrT   rj   s      r   test_maptilerr{      s    +
:& + + +)*****+{ %^$$$|M*u555HH......rm   c                    	 t           j        d         }n$# t          $ r t          j        d           Y nw xY w|dk    rt          j        d           t          j        |          |          }t          |d           d S )NTOMTOMr`   ra   rb   rc   Fre   )rf   rg   rh   r/   r0   rX   TomTomrT   rj   s      r   test_tomtomr          +
8$ + + +)*****+{ %^$$$z-(666HH......rm   c                    	 t           j        d         }n$# t          $ r t          j        d           Y nw xY w|dk    rt          j        d           t          j        |          |          }t          |d           d S )NOPENWEATHERMAPr`   ra   rb   apiKeyFre   )rf   rg   rh   r/   r0   rX   OpenWeatherMaprT   rj   s      r   test_openweathermapr      s    +
+, + + +)*****+{ %^$$$!-0>>>HH......rm   c                    	 t           j        d         }n$# t          $ r t          j        d           Y nw xY w|dk    rt          j        d           t          j        |          |          }t          |d           d S )NHEREV3r`   ra   rb   r   Fre   )rf   rg   rh   r/   r0   rX   HEREv3rT   rj   s      r   test_herev3r      r   rm   c                    	 t           j        d         }n$# t          $ r t          j        d           Y nw xY w|dk    rt          j        d           t          j        |          |          }|d         dz   |d<   t          |d	           d S )
NSTADIAr`   ra   rb   )api_keyr	   z?api_key={api_key}Fre   )rf   rg   rh   r/   r0   rX   StadiarT   rj   s      r   test_stadiar      s    +
8$ + + +)*****+{ %^$$$z-(777Huo(<<HUOH......rm   )T)"rf   r/   xyzservices.providers	providersrX   r)   r   filterrY   r\   r   r#   r5   rT   markparametrizerZ   requestr]   ri   rl   rr   rs   rw   rz   r{   r~   r   r   r   r   r   r   r   rF   r   r   <module>r      s   				  # # # # # #     CJe,,,4466	& & &	 	 		 	 	04 04 04 04f +#+--88  98
 ++  ,+  #*;<<	/ 	/ =< 	/ #(33	/ 	/ 43 	/ 	/ 	/ 	/ #,77	/ 	/ 87 	/ #*55	/ 	/ 65 	/ #*<==	/ 	/ >= 	/ #*55	/ 	/ 65 	/ #*55
/ 
/ 65 
/ 
/ 
/r   