
    nbi                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	Z	ddl
mZ dZeeef         Z G d	 d
e          Z G d dee          ZedddZ G d d          Z G d d          ZdS )z3Open-Meteo API client based on the requests library    )annotations)MutableMapping)Enum)AnyN)WeatherApiResponseflatbuffersc                      e Zd ZdZdS )OpenMeteoRequestsErrorzOpen-Meteo Error.N)__name__
__module____qualname____doc__     i/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/openmeteo_requests/Client.pyr
   r
      s        r   r
   c                      e Zd ZdZdZdS )HTTPVerbGETPOSTN)r   r   r   r   r   r   r   r   r   r      s        
CDDDr   r   )handlerresponseniquests.Responser   type[WeatherApiResponse]returnlist[WeatherApiResponse]c               v   | j         pd}g }t          |          }d\  }}||k     rt                              ||||z            d          }|dk    r*t	          |||                             d                    |                    |||z             }|                    |           |||z   z  }||k     |S )Nr   )r      little)	byteorderiUnexzutf-8)contentlenint
from_bytesr
   decode	GetRootAsappend)	r   r   datamessagestotalpossteplengthmessages	            r   _process_responser.      s    
 ")cDHIIEIC
++S3:%5 6(KKZ(c%i)?)?)H)HIII##D#*55   v} ++ Or   c                  L    e Zd ZdZdddZddddZej        fddddZd Z	dS )ClientzOpen-Meteo API ClientNsessionniquests.Session | Noner   Nonec                L    |d u | _         |pt          j                    | _        d S N)_close_sessionniquestsSession_sessionselfr1   s     r   __init__zClient.__init__1   s'    %o58#3#5#5r   verifyurlstrmethodparams
ParamsTyper>   bool | str | Noner   c               d   t           |d<   |                                }|t          j        k    r | j        j        |f||d|}n | j        j        |f||d|}|j        dv r#|                                }t          |          |
                                 t          |t                    S Nformat)r'   r>   )rB   r>   )i  i  )r   r   )_FLAT_BUFFERS_FORMATupperr   r   r9   postgetstatus_codejsonr
   raise_for_statusr.   r   r;   r?   rA   rB   r>   kwargsr   response_bodys           r   _requestzClient._request5   s     0xX]"")t})#TF6TTVTTHH(t}(UVFUUfUUH:--$MMOOM(777!!### (<NOOOOr   c                   	  | j         d||t          |          |d|S # t          $ r}d|d| }t          |          |d}~ww xY w)Get and decode as weather apir?   rA   rB   r>   failed to request : Nr   rR   dict	Exceptionr
   r;   r?   rB   rA   r>   rP   emsgs           r   weather_apizClient.weather_apiM   s    
	5 4= F||	 
     	5 	5 	53s3333C(--14	5s   ! 
AAAc                J    | j         r| j                                         dS dS )cleanupN)r6   r9   close)r;   s    r   __del__zClient.__del__c   s1     	"M!!!!!	" 	"r   r5   )r1   r2   r   r3   
r?   r@   rA   r@   rB   rC   r>   rD   r   r   
r?   r@   rB   rC   rA   r@   r>   rD   r   r   )
r   r   r   r   r<   rR   r   r   r^   rb   r   r   r   r0   r0   .   s        6 6 6 6 6 %)P P P P P P8 l	5 %)5 5 5 5 5 5," " " " "r   r0   c                  F    e Zd ZdZdddZddddZej        fddddZdS )AsyncClientz'Asynchronous client for Open-Meteo API.Nr1   niquests.AsyncSession | Noner   r3   c                    || _         d S r5   )r9   r:   s     r   r<   zAsyncClient.__init__m   s    r   r=   r?   r@   rA   rB   rC   r>   rD   r   c                 K   t           |d<   |                                }|t          j        k    r@| j        r | j        j        |f||d| d {V }n[t          j        |f||d| d {V }n?| j        r | j        j        |f||d| d {V }nt          j	        |f||d| d {V }|j
        dv r#|                                }t          |          |                                 t          |t                    S rF   )rH   rI   r   r   r9   rJ   r7   apostrK   agetrL   rM   r
   rN   r.   r   rO   s           r   rR   zAsyncClient._requestp   se      0xX]""} [!3!3C!^fV!^!^W]!^!^^^^^^^!)!Z&!Z!ZSY!Z!ZZZZZZZ} \!2!23!_vf!_!_X^!_!_______!)s![6&![![TZ![![[[[[[[:--$MMOOM(777!!### (<NOOOOr   c                  K   	  | j         d||t          |          |d| d{V S # t          $ r}d|d| }t          |          |d}~ww xY w)rT   rU   NrV   rW   r   rX   r[   s           r   r^   zAsyncClient.weather_api   s      
	5& F||	 
           	5 	5 	53s3333C(--14	5s   $) 
AAAr5   )r1   rg   r   r3   rc   rd   )	r   r   r   r   r<   rR   r   r   r^   r   r   r   rf   rf   j   s        11          %)P P P P P PD l	5 %)5 5 5 5 5 5 5 5r   rf   )r   r   r   r   r   r   )r   
__future__r   collections.abcr   enumr   typingr   r7    openmeteo_sdk.WeatherApiResponser   rH   r@   rC   rZ   r
   r   r.   r0   rf   r   r   r   <module>rr      sV   9 9 " " " " " " * * * * * *              ? ? ? ? ? ?$ CH%
    Y       sD    );     (8" 8" 8" 8" 8" 8" 8" 8"x85 85 85 85 85 85 85 85 85 85r   