
    h|                         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	 ddl
mZ ddlmZmZ d	d
lmZ ddlmZmZmZmZ e G d de             Zy)    )datedatetime)cached_property)Any)	dataclass)Self   )http)camel_to_snake_dictformat_end_date   )Data   )BodyBatteryReadingStressReadingparse_body_battery_readingsparse_stress_readingsc            
          e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   eed<   eee      ed<   eee	      ed<   e
dee   fd       Zedee   fd       Zededz  fd       Zededz  fd       Zededz  fd       Zededz  fd       Ze	 ddddeez  dz  dej.                  dz  dedz  fd       Zy)DailyBodyBatteryStressz,Complete daily Body Battery and stress data.user_profile_pkcalendar_datestart_timestamp_gmtend_timestamp_gmtstart_timestamp_localend_timestamp_localmax_stress_levelavg_stress_levelstress_chart_value_offsetstress_chart_y_axis_originstress_values_arraybody_battery_values_arrayreturnc                 ,    t        | j                        S )z9Convert body battery values array to structured readings.)r   r!   selfs    _/var/www/html/python/myenv/lib/python3.12/site-packages/garth/data/body_battery/daily_stress.pybody_battery_readingsz,DailyBodyBatteryStress.body_battery_readings$   s     +4+I+IJJ    c                 ,    t        | j                        S )z3Convert stress values array to structured readings.)r   r    r$   s    r&   stress_readingsz&DailyBodyBatteryStress.stress_readings)   s     %T%=%=>>r(   Nc                 @    | j                   }|r|d   j                  S dS )z"Get the latest Body Battery level.N)r'   levelr%   readingss     r&   current_body_batteryz+DailyBodyBatteryStress.current_body_battery.   s&     --%-x|!!747r(   c                 F    | j                   }|rt        d |D              S dS )z/Get the maximum Body Battery level for the day.c              3   4   K   | ]  }|j                     y wNr-   .0readings     r&   	<genexpr>z:DailyBodyBatteryStress.max_body_battery.<locals>.<genexpr>8        9W7==9   N)r'   maxr.   s     r&   max_body_batteryz'DailyBodyBatteryStress.max_body_battery4   '     --=Es999O4Or(   c                 F    | j                   }|rt        d |D              S dS )z/Get the minimum Body Battery level for the day.c              3   4   K   | ]  }|j                     y wr3   r4   r5   s     r&   r8   z:DailyBodyBatteryStress.min_body_battery.<locals>.<genexpr>>   r9   r:   N)r'   minr.   s     r&   min_body_batteryz'DailyBodyBatteryStress.min_body_battery:   r=   r(   c                 z    | j                   }|rt        |      dk  ry|d   j                  |d   j                  z
  S )z.Calculate the Body Battery change for the day.r   Nr,   r   )r'   lenr-   r.   s     r&   body_battery_changez*DailyBodyBatteryStress.body_battery_change@   s?     --3x=1,|!!HQK$5$555r(   )clientdayrE   c                    |xs t         j                  }t        |      }d| }|j                  |      }t	        |t
              syt        |      } | di |S )z>Get complete Body Battery and stress data for a specific date.z'/wellness-service/wellness/dailyStress/N )r
   rE   r   
connectapi
isinstancedictr   )clsrF   rE   date_strpathresponsesnake_responses          r&   getzDailyBodyBatteryStress.getH   s]     &4;;"3'8
C$$T*(D),X6$^$$r(   r3   )__name__
__module____qualname____doc__int__annotations__r   r   listr   r   r   r'   propertyr   r*   r0   r<   rA   rD   classmethodstrr
   Clientr   rQ   rH   r(   r&   r   r      sv   6!!##!!"" ##d3i(#DI.Kt,>'? K K ?m!4 ? ? 8cDj 8 8
 P#* P P
 P#* P P
 6S4Z 6 6  "&% &*	%CZ$% d"	%
 
% %r(   r   N)r   r   	functoolsr   typingr   pydantic.dataclassesr   typing_extensionsr    r
   utilsr   r   _baser   r/   r   r   r   r   r   rH   r(   r&   <module>rd      sE    # %  * "  9   F%T F% F%r(   