o
    Gf#                     @   s  d dl mZ d dlZd dlmZ d dlmZmZ ej	dd Z
ej	dd Zej	dd	 Zej	d
d Zej	dd Zej	dd Zej	dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejjd ed!d"d# Zejjd ed!d$d% Zd&d' Zd(d) Zd*d+ ZdS ),    )URLErrorN)BunchTileProviderc                   C      t ddddS )N*https://myserver.com/tiles/{z}/{x}/{y}.png(C) xyzservicesmy_public_providerurlattributionnamer    r   r   f/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/xyzservices/tests/test_lib.pybasic_provider	   
   r   c                   C      t dddddS )N-https://myserver.com/tiles/{z}/{x}/{y}{r}.pngr   my_public_provider2@2x)r
   r   r   rr   r   r   r   r   retina_provider      r   c                   C   r   )Nr   r   my_public_retina_provider3r	   r   r   r   r   r   silent_retina_provider   r   r   c                   C   r   )NzAhttps://myserver.com/tiles/{z}/{x}/{y}?access_token={accessToken}r   z<insert your access token here>my_private_provider)r
   r   accessTokenr   r   r   r   r   r   private_provider%   r   r   c                   C   r   )Nr   r   C&copy; <a href="https://xyzservices.readthedocs.io">xyzservices</a>my_public_provider_html)r
   r   html_attributionr   r   r   r   r   r   html_attr_provider/   r   r!   c                   C   r   )N.https://{s}.myserver.com/tiles/{z}/{x}/{y}.pngr   abcdmy_subdomain_provider)r
   r   
subdomainsr   r   r   r   r   r   subdomain_provider9   r   r&   c              	   C   s   t | |||t ||ddS )N)r!   r&   )r   r   r   r   bunched)r   )r   r   r   r   r!   r&   r   r   r   
test_bunchC   s   	r(   c                  C   s   d} t jt| d d ti  W d    n1 sw   Y  t jt| d d tddi W d    n1 s9w   Y  t jt| d d tdd	d
 W d    n1 sYw   Y  t jt| d d tdd	d
 W d    d S 1 syw   Y  d S )NzxThe attributes `name`, `url`, and `attribution` are required to initialise a `TileProvider`. Please provide values for: z`name`, `url`, `attribution`matchz`url`, `attribution`r   mynamez`attribution`my_urlmy_name)r
   r   )pytestraisesAttributeErrorr   )msgr   r   r    test_expect_name_url_attributionW   s   
"r2   c                 C   s&  d}|   |ks
J d}|  ddd|ksJ | j ddddd|ks$J | ddd|ks/J d}| ddd|ks<J |j ddddd|ksIJ d	}|j dddd
d|ksXJ d}|j dd|ksdJ tjtdd |   W d    n1 szw   Y  d}|j ddsJ d}|  sJ d S )Nr   z$https://myserver.com/tiles/3/1/2.png         r   )scale_factorz'https://myserver.com/tiles/3/1/2@2x.pngz'https://myserver.com/tiles/3/1/2@5x.pngz@5xz<https://myserver.com/tiles/{z}/{x}/{y}?access_token=my_tokenmy_token)r   z#Token is required for this providerr)   r"   F)fill_subdomainz,https://a.myserver.com/tiles/{z}/{x}/{y}.png)	build_urlr.   r/   
ValueError)r   r   r   r   r&   expectedr   r   r   test_build_urlg   s(   
r<   c                 C   s$   |   du sJ |  du sJ d S )NTFrequires_token)r   r   r   r   r   test_requires_token   s   r?   c                 C   s   g d}|D ]
}||   v sJ qt| |d}g d}|  }|| D ]}||v s,J q$|ddks6J |ddks?J |ddksHJ d S )	N)<div class="xyz-wrap"><div class="xyz-header">z3<div class="xyz-obj">xyzservices.TileProvider</div>z.<div class="xyz-name">my_public_provider</div>z<div class="xyz-details">z<dl class="xyz-attrs">zL<dt><span>url</span></dt><dd>https://myserver.com/tiles/{z}/{x}/{y}.png</dd>z9<dt><span>attribution</span></dt><dd>(C) xyzservices</dd>firstsecond)z,<div class="xyz-obj">xyzservices.Bunch</div>z#<div class="xyz-name">2 items</div>z<ul class="xyz-collapsible"><li class="xyz-child">z%<span>xyzservices.TileProvider</span>z<div class="xyz-inside">rE   r4   r@   r5   rA   )_repr_html_r   count)r   r   provider_stringshtml_stringbunchbunch_strings
bunch_reprr   r   r   test_html_repr   s   	rM   c                 C   s   |   }t|tsJ d S )N)copy
isinstancer   )r   basic2r   r   r   	test_copy   s   rQ   c                  C   s`   t tjjd } tjjdd}t|tsJ d|v sJ |d dks$J tjjd | ks.J d S )NapiKeymykey)rR   r
   )strxyzOpenWeatherMapCloudsClassicrO   r   )original_keyupdated_providerr   r   r   test_callable   s   rZ   c                 C   s"   | j | jksJ |j dksJ d S )Nr   )r    r   )r   r!   r   r   r   test_html_attribution_fallback   s   r[   ztimeout error)reasonr/   c                  C   s   t d} t| t sJ d S )Nz!OpenStreetMap Standard aka Mapnik)r   from_qmsrO   providerr   r   r   test_from_qms   s   
r`   c                   C   s:   t t td W d    d S 1 sw   Y  d S )NLolWut)r.   r/   r:   r   r]   r   r   r   r   test_from_qms_not_found_error   s   "rb   c                 C   sD   t t | |dt ||dd}t|dksJ t| dks J d S )NrB   )first_bunchsecond_bunchr4      )r   lenflatten)r   r   r   r   nested_bunchr   r   r   test_flatten   s   

ri   c                 C   s"  t | jdd dksJ t | jdd dksJ t | jdd dks*J t | jdd dks8J t | jd	d
 dksFJ t | jdd
 dksTJ t | jdd
dks`J t | jddd dksoJ t | jdd dks}J dd }t | j|d dksJ d S )Nprivate)keywordr3   publicre   z{s}retina)r   Tr=   F   )rk   r>   nonsenser   c                 S   s*   t | dr| jdkrdS t | drdS dS )Nr%   r#   Tr   F)hasattrr%   r^   r   r   r   custom   s
   
ztest_filter.<locals>.custom)functionr4   )rf   filterrg   )r(   rq   r   r   r   test_filter   s    rt   c                  C   s   g d} | D ]}t |}t|tsJ |jdksJ qtjtdd t d W d    n1 s3w   Y  d}t |}t|tsFJ |j|ksMJ d S )N)zCartoDB Positroncartodbpositronzcartodb-positronzcarto db/positronCARTO_DB_POSITRONCartoDB.PositronzCarto,db,positronrw   zNo matching provider foundr)   zi don't existz+NASAGIBS.ASTER_GDEM_Greyscale_Shaded_Relief)rU   
query_namerO   r   r   r.   r/   r:   )optionsoptionqueriedoption_with_underscorer   r   r   test_query_name   s   


r}   )urllib.errorr   r.   xyzservices.providers	providersrU   xyzservicesr   r   fixturer   r   r   r   r!   r&   r(   r2   r<   r?   rM   rQ   rZ   r[   markxfailr`   rb   ri   rt   r}   r   r   r   r   <module>   s@    

	

	
	
	
#"	

