
    i                    >   d dl mZ d dlZd dlmZmZ d dlmZ d dlmZ ddl	m
Z
 ddlmZmZ d	d
lmZ e G d d                      Ze G d d                      Ze G d d                      Ze G d d                      Ze G d de                      ZdS )    )annotationsN)datedatetime)	dataclass)Self   )http)camel_to_snake_dictget_localized_datetime   )Datac                  `    e Zd ZU ded<   dZded<   dZded<   dZded<   dZded	<   dZded
<   dS )Scorestrqualifier_keyNfloat | Noneoptimal_startoptimal_end
int | Nonevalueideal_start_in_secondsideal_end_in_seconds)	__name__
__module____qualname____annotations__r   r   r   r   r        K/root/projects/butler/venv/lib/python3.11/site-packages/garth/data/sleep.pyr   r      su         "&M&&&& $K$$$$E+/////)-------r   r   c                  `    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
S )SleepScoresr   total_durationstressawake_countoverallrem_percentagerestlessnesslight_percentagedeep_percentageNr   r   r   r   r   r   r   r!   r!      sl         MMMNNNr   r!   c                     e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded <   dZded!<   dZded"<   dZd#ed$<   dZded%<   dZded&<   dZd#ed'<   dZd#ed(<   dZd#ed)<   dZd#ed*<   dZd#ed+<   dZd,ed-<   dZd,ed.<   dZd,ed/<   ed4d2            Zed4d3            ZdS )5DailySleepDTOintiduser_profile_pkr   calendar_datesleep_time_secondsnap_time_secondsboolsleep_window_confirmedr   sleep_window_confirmation_typesleep_start_timestamp_gmtsleep_end_timestamp_gmtsleep_start_timestamp_localsleep_end_timestamp_localdevice_rem_capableretroNr   unmeasurable_sleep_secondsdeep_sleep_secondslight_sleep_secondsrem_sleep_secondsawake_sleep_secondszbool | Nonesleep_from_devicesleep_versionr$   zSleepScores | Nonesleep_scoresauto_sleep_start_timestamp_gmtauto_sleep_end_timestamp_gmtsleep_quality_type_pksleep_result_type_pkr   average_sp_o2_valuelowest_sp_o2_valuehighest_sp_o2_valueaverage_sp_o2_hr_sleepaverage_respiration_valuelowest_respiration_valuehighest_respiration_valueavg_sleep_stressz
str | None	age_groupsleep_score_feedbacksleep_score_insightreturnr   c                6    t          | j        | j                  S N)r   r6   r8   selfs    r   sleep_startzDailySleepDTO.sleep_startL   s    %*D,L
 
 	
r   c                6    t          | j        | j                  S rU   )r   r7   r9   rV   s    r   	sleep_endzDailySleepDTO.sleep_endR   s    %($*H
 
 	
r   )rS   r   )r   r   r   r   r<   r=   r>   r?   r@   rA   rB   r$   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   propertyrX   rZ   r   r   r   r,   r,   $   s        GGG    ''''""""    $$$$""""KKK-11111%)))))&*****$(((((&*****%))))) $M$$$$"K""""'+L++++15"5555/3 3333(,,,,,'+++++(,,,,,%)))))&*****+/////.22222-11111.22222%))))) I    '+++++&*****
 
 
 X

 
 
 
 X
 
 
r   r,   c                  .    e Zd ZU ded<   ded<   ded<   dS )SleepMovementr   	start_gmtend_gmtfloatactivity_levelNr*   r   r   r   r]   r]   Y   s6         r   r]   c                  j     e Zd ZU ded<   dZded<   eddddd            Zed fd            Z xZS )	SleepDatar,   daily_sleep_dtoNz#builtins.list[SleepMovement] | Nonesleep_movement<   )buffer_minutesclientday
date | strrg   r-   rh   http.Client | NonerS   Self | Nonec               ,   |pt           j        }d|j         d| d| }|                    |          }|sJ t	          |t
                    s"J d| dt          |          j                     t          |          }|d         d         r | di |nd S )	Nz*/wellness-service/wellness/dailySleepData/z?nonSleepBufferMinutes=z&date=zExpected dict from z, got rd   r.   r   )	r	   rh   username
connectapi
isinstancedicttyper   r
   )clsri   rg   rh   path
sleep_datas         r   getzSleepData.gete   s     &4;A A A%3A A;>A A 	 &&t,,
*d++ 	
 	
I$IId:.>.>.GII	
 	
 	
 )44
!+,=!>t!DNCC*$	
r   
list[Self]c                Z     t                      j        |i |}t          |d           S )Nc                    | j         j        S rU   )rd   r0   )xs    r   <lambda>z SleepData.list.<locals>.<lambda>   s    !*;*I r   )key)superlistsorted)rs   argskwargsdata	__class__s       r   r~   zSleepData.list|   s4    uww|T,V,,d I IJJJJr   )ri   rj   rg   r-   rh   rk   rS   rl   )rS   rw   )	r   r   r   r   re   classmethodrv   r~   __classcell__)r   s   @r   rc   rc   `   s         """":>N>>>>
 !%)
 
 
 
 
 [
, K K K K K [K K K K Kr   rc   )
__future__r   builtinsr   r   pydantic.dataclassesr   typing_extensionsr    r	   utilsr
   r   _baser   r   r!   r,   r]   rc   r   r   r   <module>r      s   " " " " " "  # # # # # # # # * * * * * * " " " " " "       ? ? ? ? ? ? ? ?       . . . . . . . .         1
 1
 1
 1
 1
 1
 1
 1
h         K K K K K K K K K Kr   