
    ajY                    H   d Z ddlmZ ddl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 er$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  G d de      Z e	dd       G d de             Z e	dd       G d d             Z	 	 	 	 	 	 ddZ  G d d      Z!y)z9Owned weekly-reminder capabilities for the Telegram host.    )annotationsN)	ExitStack)Path)	dataclass)TYPE_CHECKINGProtocoloverride)PlatformConfig)CustomerRegistry)NutritionCoachingCoordinator)WeeklyExplanationModel) RegisteredWeeklyReminderCustomer)OwnedWeeklyReminderCustomersWeeklyReminderProductionInputc                  $    e Zd ZddZddZddZy)TelegramWeeklyRuntimeHostc                     y N selfs    r/home/cube/projects/richard/.worktrees/nutricoach-v140-impl/gateway/platforms/telegram_weekly_host_capabilities.py_current_weekly_configz0TelegramWeeklyRuntimeHost._current_weekly_config   s    s    c                     y r   r   r   s    r   _current_weekly_service_revokedz9TelegramWeeklyRuntimeHost._current_weekly_service_revoked   s    sr   c                     y r   r   r   s    r    _current_weekly_candidate_digestz:TelegramWeeklyRuntimeHost._current_weekly_candidate_digest!   s    cr   N)returnPlatformConfig | None)r    bool)r    
str | None)__name__
__module____qualname__r   r   r   r   r   r   r   r      s    B:Ar   r   T)frozenslotsc                  *    e Zd ZU ded<   edd       Zy)TelegramWeeklyHostErrorstrreasonc                    | j                   S r   )r,   r   s    r   __str__zTelegramWeeklyHostError.__str__(   s    {{r   N)r    r+   )r$   r%   r&   __annotations__r	   r.   r   r   r   r*   r*   $   s    K r   r*   c                  "    e Zd ZU ded<   ded<   y)TelegramWeeklyCapabilitiesr   	ownership,tuple[RegisteredWeeklyReminderCustomer, ...]	customersN)r$   r%   r&   r/   r   r   r   r1   r1   -   s    ++;;r   r1   c                   ddl m} |5 |       }|D ]  }|j                  |        t        ||j                        S ddlm} t               5 } ||       }	 t        j                  d       |j                  |      }t        j                  d       t        j                  d       t        ||j                        }t        j                  d       t        j                  d	       |j                         }		 t        j                  d
       |cddd       S # t        $ r |j                           w xY w# t        $ r |	j                           w xY w# 1 sw Y   yxY w)z@Acquire configured or explicitly supplied reminder capabilities.r   )#new_owned_weekly_reminder_customersN))load_registered_weekly_reminder_customersz=nutricoach.weekly_reminder.caller_received_before_outer_enterz,nutricoach.weekly_reminder.after_outer_enterz>nutricoach.weekly_reminder.before_adapter_attribute_assignmentz=nutricoach.weekly_reminder.after_adapter_attribute_assignmentz+nutricoach.weekly_reminder.before_outer_popz*nutricoach.weekly_reminder.after_outer_pop)<gateway.platforms.nutrition_weekly_reminder_bootstrap_configr6   add_customerr1   r4   5gateway.platforms.nutrition_weekly_reminder_bootstrapr7   r   sysauditBaseExceptioncloseenter_contextpop_all)
configr4   r6   r2   customerr7   transaction_capabilitiestransferreds
             r   !open_telegram_weekly_capabilitiesrG   3   s5   
 79	!H""8, "))Y5H5HII 
=fE		IIUV %%i0		@A		RS1)Y=P=PQ		QR		?@!))+	IIBC ' 
  	OO	  		! 
s=   	ED-BE9D7ED44E7EEEc                      e Zd ZU dZdZded<   dZded<   dZded	<   dZd
ed<   	 	 ddZ		 	 ddZ
	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZe	 	 dd       ZddZy)TelegramWeeklyCapabilityMixinz4Expose lifecycle-owned weekly customer capabilities.Nr!   _weekly_platform_configr   r3   _weekly_reminder_customersz#OwnedWeeklyReminderCustomers | None_weekly_reminder_ownershipzWeeklyExplanationModel | None$_weekly_operations_explanation_modelc                    t         r   )NotImplementedErrorr   s    r   _get_nutrition_coachingz5TelegramWeeklyCapabilityMixin._get_nutrition_coachingd   s
     "!r   c                "    | j                         S )z;Initialize the coordinator under owned weekly capabilities.)rP   r   s    r   initialize_nutrition_coachingz;TelegramWeeklyCapabilityMixin.initialize_nutrition_coachingi   s     ++--r   c                n    t        ||      }|| _        |j                  | _        |j                  | _        y r   )rG   rJ   r2   rL   r4   rK   )r   rA   r4   rE   s       r   _open_weekly_capabilitiesz7TelegramWeeklyCapabilityMixin._open_weekly_capabilitieso   s4    
 9K'-$*6*@*@'*6*@*@'r   c                    ddl m} | j                  }|t        d       ||j                  |||| j
                        S )Nr   r   z*Telegram weekly host config is unavailable)9gateway.platforms.nutrition_weekly_reminder_owner_factoryr   rJ   r*   extrarK   )r   candidate_digestregistryregistry_pathr   rA   s         r   !_weekly_reminder_production_inputz?TelegramWeeklyCapabilityMixin._weekly_reminder_production_inputy   sI    	
 -->)*VWW,LL*Hm++
 	
r   c                    | j                   S r   )rK   r   s    r   weekly_reminder_customersz7TelegramWeeklyCapabilityMixin.weekly_reminder_customers   s     ...r   c                \    | j                   }||j                          d | _         d| _        y )Nr   )rL   r>   rK   )r   r2   s     r   "close_weekly_reminder_capabilitiesz@TelegramWeeklyCapabilityMixin.close_weekly_reminder_capabilities   s-    33	 OO.2D+*,'r   )r    z#NutritionCoachingCoordinator | None)rA   r
   r4   3tuple[RegisteredWeeklyReminderCustomer, ...] | Noner    None)rX   r#   rY   r   rZ   r   r    r   )r    r3   )r    ra   )r$   r%   r&   __doc__rJ   r/   rK   rL   rM   rP   rR   rT   r[   propertyr]   r_   r   r   r   rI   rI   \   s    >5929OQ LQFJ CJJN(*GN"	,"
.	,.AA GA 
	A
$
 #
 	

 
'
$ /	5/ /
-r   rI   )rA   r
   r4   r`   r    r1   )"rb   
__future__r   r;   
contextlibr   pathlibr   dataclassesr   typingr   r   r	   gateway.configr
   checkin_cli.customer_coachingr   $gateway.platforms.nutrition_coachingr   .gateway.platforms.nutrition_weekly_owner_modelr   5gateway.platforms.nutrition_weekly_reminder_authorityr   r8   r   rV   r   r   RuntimeErrorr*   r1   rG   rI   r   r   r   <module>ro      s    ? " 
    ! 4 4 )>QU
B B $d#l  $ $d#< < $<
&&B&  &R:- :-r   