
    h	                         d dl mZm Z mZ d dlmZ d dlmZ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mZ d	d
lmZmZ e
 G d de             Zy)    )datedatetime	timedelta)chain)FieldValidationInfofield_validator)	dataclass)Self   )http)camel_to_snake_dictformat_end_dateget_localized_datetime   )MAX_WORKERSDatac                      e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<    edd      Z	e
ed	<    edd
      Ze
ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<    edd      ededede
fd              Zedddeez  dej2                  dz  dedz  fd       Ze	 	 d$dedd eez  dz  d!edej2                  dz  d"edee   f
d#       Zy)%
WeightData	sample_pkcalendar_dateweightsource_typeweight_deltatimestamp_gmt.)aliasdatetime_utcr   datetime_localNbmibody_fat
body_water	bone_massmuscle_massphysique_ratingvisceral_fatmetabolic_agebefore)modevinforeturnc                 4    t        |j                  d   |      S )Nr   )r   data)clsr)   r*   s      L/var/www/html/python/myenv/lib/python3.12/site-packages/garth/data/weight.pyto_localized_datetimez WeightData.to_localized_datetime$   s     &dii&@!DD    )clientdayr2   c                    |xs t         j                  }d| }|j                  |      }|r|d   ng }|sy t        |d         } | di |S )Nz/weight-service/weight/dayview/dateWeightListr    )r   r2   
connectapir   )r.   r3   r2   pathr-   day_weight_listweight_datas          r/   getzWeightData.get)   sb     &4;;06  &48$/0b */!*<=![!!r1   )r2   max_workersenddaysr<   c                    |xs t         j                  }t        |      }|t        |dz
        z
  }|j	                  d| d| d      }|r|d   ng }t        j                  d |D              } fd|D        }	t        |	d	 
      S )Nr   )r>   z/weight-service/weight/range//z?includeAll=truedailyWeightSummariesc              3   &   K   | ]	  }|d      yw)allWeightMetricsNr6   ).0summarys     r/   	<genexpr>z"WeightData.list.<locals>.<genexpr>J   s      -
,3G&'-
s   c              3   @   K   | ]  } di t        |        y w)Nr6   )r   )rD   r:   r.   s     r/   rF   z"WeightData.list.<locals>.<genexpr>M   s'      
 3%k23
s   c                     | j                   S )N)r   )ds    r/   <lambda>z!WeightData.list.<locals>.<lambda>Q   s
    ann r1   )key)r   r2   r   r   r7   r   from_iterablesorted)
r.   r=   r>   r2   r<   startr-   weight_summariesweight_metricsweight_data_lists
   `         r/   listzWeightData.list9   s     &4;;c"iTAX..  +E7!C58HI
 <@4 67R,, -
7G-
 

-
 &,DEEr1   )Nr   )__name__
__module____qualname__int__annotations__r   strfloatr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r	   classmethodr   r0   r   Clientr   r;   r   rR   r6   r1   r/   r   r      s   NK"3o>L(>$S7NH7C!Hedl!#J# IsTz "Kt"$(OUT\(!%L%$,% $M3:$%H5Ec E EH E  6E >B"*")-t);"	" "  "&F
 &*&FCZ$F F
 d"F F 
dF Fr1   r   N)r   r   r   	itertoolsr   pydanticr   r   r	   pydantic.dataclassesr
   typing_extensionsr    r   utilsr   r   r   _baser   r   r   r6   r1   r/   <module>rc      sJ    . .  ; ; * "  
 % ?F ?F ?Fr1   