
    j                        d Z ddlmZ ddlmZ ddlmZ ddlmZ e	Z
 edd       G d d	             Z edd       G d
 d             Z edd       G d d             Z edd       G d d             Zy)zBProfile-gated configuration for multi-customer nutrition coaching.    )annotations)	dataclass)Path)castT)frozenslotsc                  \    e Zd ZU dZded<   ded<   ded<   ded<   ddZedd	       Zdd
Zy)AdaptiveReviewOperatorz>The exact Telegram triple used to authenticate review ingress.struser_idchat_idinttopic_idversionc                
   t        | j                  xs d      j                         }t        | j                  xs d      j                         }|r,|r*t	        | j
                        t        us| j
                  dk7  rt        d      t        | j                  t              s)t        | j                  t              r| j                  dk  rt        d      t        j                  | d|       t        j                  | d|       y )N ;   z+adaptive review operator address is invalid   z+adaptive review operator version is invalidr   r   )r   r   stripr   typer   r   
ValueError
isinstancer   boolobject__setattr__selfr   r   s      j/home/cube/projects/richard/.worktrees/nutricoach-v140-impl/gateway/platforms/nutrition_coaching_config.py__post_init__z$AdaptiveReviewOperator.__post_init__   s    dll(b)//1dll(b)//1gdmm)<C)G4==\^K^JKKdllD)DLL#1NRVR^R^abRbJKK4G44G4    c                Z    | j                   | j                  t        | j                        fS )N)r   r   r   r   r   s    r   keyzAdaptiveReviewOperator.key    s     ||T\\3t}}+===r    c                `    | j                   | j                  | j                  | j                  dS )Nr   r   r   r   r%   r"   s    r   as_dictzAdaptiveReviewOperator.as_dict$   s(    ||||||	
 	
r    NreturnNone)r(   ztuple[str, str, str])r(   zdict[str, object])	__name__
__module____qualname____doc____annotations__r   propertyr#   r&    r    r   r
   r
      s7    HLLML5 > >
r    r
   c                  B    e Zd ZU dZded<   ded<   ded<   ded<   d
dZy	)OperatorCardRoutezAAn explicitly configured destination for generation review cards.r   r   r   r   r   r   c                J   t        | j                  xs d      j                         }t        | j                  xs d      j                         }|rK|rIt	        | j
                  t              s/t        | j
                        t        us| j
                  dk7  s||k7  rt        d      t	        | j                  t              s*t        | j                        t        us| j                  dk  rt        d      t        j                  | d|       t        j                  | d|       y )Nr   r   zoperator card route is invalidr   z&operator card route version is invalidr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   s      r   r   zOperatorCardRoute.__post_init__6   s    dll(b)//1dll(b)//1$--.DMM"#-}}!'!=>>dllD)T$,,-?s-Jdll]^N^EFF4G44G4r    Nr'   )r*   r+   r,   r-   r.   r   r0   r    r   r2   r2   -   s    KLLML5r    r2   c                  8    e Zd ZU ded<   dZded<   edd       Zy)NutritionCoachingConfigr   registry_pathNzOperatorCardRoute | Noneoperator_card_routec                   t        |t              sy t        t        t        t        f   |      j                  d      }t        |t              sy t        t        t        t        f   |      }|j                  d      dury t        t        |j                  dd                  }|j                  r|j                         sd|j                  v ry |j                  d      }d }|t        |t              sy t        t        t        t        f   |      }t        |      h dk7  ry |d	   }|d
   }	t        |t              s6t        |t        t        f      r t        |	t              st        |	t              sy 	 t        t        |d         t        |d         t        |      |	      } | ||      S # t        t        f$ r Y y w xY w)Nnutrition_coachingenabledTr6   r   z..r7   >   r   r   r   r   r   r   r   r   )r   dictr   r   r   getr   partsis_absolutesetr   r   r2   	TypeErrorr   )
clsextra	raw_valuerawpathroute_valueroute	route_rawraw_topic_idr   s
             r   
from_extraz"NutritionCoachingConfig.from_extraM   s   %&c6k*E2667KL	)T*4V$i0779T)C456zzT--/44::3Egg34*."k40T#v+.<I9~!NN$Z0L	*G<.!,c
;gt,!'3/)	),-	),-%	 4 z* s   5/F- -F?>F?)rB   	JsonValuer(   zNutritionCoachingConfig | None)r*   r+   r,   r.   r7   classmethodrJ   r0   r    r   r5   r5   H   s&    4818&  & r    r5   c                      e Zd ZU 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<   edd       Z	y)AdaptiveNutritionConfigr   r:   r   operator_chat_idr   operator_topic_iddelivery_enabledr   operator_user_idr   operator_versionNzAdaptiveReviewOperator | Nonereview_operatorFschedule_confirm_enabledc           
        t        |t              sy |j                  d      }t        |t              r|j                  d      dury |j                  d      }d }t        |t              r	 d|vry t        t	        |j                  dd            j                         t	        |j                  dd            j                         t	        |j                  d	d            j                         rt        |j                  d	            n|j                  d	      |j                  d            }|y t	        |j                  d
d            j                         }|j                  d      }|r||j                  k7  ry |	 t        |      }||j                  k7  ry |j                  }|j                  }|j                  dd      }|j                  dd      }	|r5t        |t              s%|dk7  s t        |t              rt        |	t              sy  | d|d||j                  |j                  ||	      S # t        t        f$ r Y y w xY w# t        t        f$ r Y y w xY w)Nadaptive_nutritionr:   TrT   r   r   r   r   r   rO   rP   rQ   FrU   r   )r   r;   r<   r
   r   r   isdigitr   r@   r   r   r   r   r   r   )
rA   rB   rD   reviewrT   r   r   legacy_topicdeliveryschedule_confirms
             r   rJ   z"AdaptiveNutritionConfig.from_extra   s,   %&ii,-#t$	(:$(F*+9=fd#
F*"8

9b1288:

9b1288:36vzz*b7Q3R3Z3Z3\C

:./bhblblmwbxJJy)	# "cgg0"56<<>77./w/"9"99"8} 777!))"++77-u577#=uE(D)2~h-.5####	
 		
= z*  z* s+   +H1 0B=H1 ?I 1IIII)rB   rK   r(   z 'AdaptiveNutritionConfig | None')
r*   r+   r,   r.   rR   rS   rT   rU   rL   rJ   r0   r    r   rN   rN   w   sW    Mcc59O29%*d*9
 9
r    rN   N)r-   
__future__r   dataclassesr   pathlibr   typingr   r   rK   r
   r2   r5   rN   r0   r    r   <module>ra      s    H " !   	 $d#
 
 $
> $d#5 5 $54 $d#+  +  $+ \ $d#D
 D
 $D
r    