
    j                    >   d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZ erddlmZ ddlmZmZ ddlmZ  ed	d	
       G d d             Ze
 G d de             Z G d de      Z ed	d	
       G d d             ZddZddZ G d d      Zy)z:Typed Telegram send/edit outcomes used by the weekly host.    )annotations)	dataclass)TYPE_CHECKINGNeverProtocolassert_neverfinal)TelegramEditDeliveredTelegramEditKnownFailureTelegramEditKnownReasonTelegramEditOutcomeTelegramEditUnknownedit_telegram_text)Message)TelegramReminderDeliveredTelegramReminderRejected)TelegramTextEditorT)frozenslotsc                      e Zd ZU dZded<   y)ReminderNoSendRejectionz2Provider result proving rejection before any send.strreasonN)__name__
__module____qualname____doc____annotations__     o/home/cube/projects/richard/.worktrees/nutricoach-v140-impl/gateway/platforms/telegram_weekly_host_transport.pyr   r      s
    <Kr    r   c                  0     e Zd ZU dZded<   d fdZ xZS )ReminderNoSendRejectedz5Provider exception proving rejection before any send.r   r   c                2    || _         t        | 	  |       y N)r   super__init__)selfr   	__class__s     r!   r'   zReminderNoSendRejected.__init__(   s     r    )r   r   returnNone)r   r   r   r   r   r'   __classcell__)r)   s   @r!   r#   r#   "   s    ?K! !r    r#   c                      e Zd Zedd       Zy)TelegramSendReceiptc                     y r%   r   )r(   s    r!   
message_idzTelegramSendReceipt.message_id.   s    !$r    N)r*   int)r   r   r   propertyr0   r   r    r!   r.   r.   -   s    $ $r    r.   c                  B    e Zd ZU ded<   dZded<   dZded<   dZded<   y)	TelegramNonfinalEditboolsuccessN
str | Noner0   errorF	retryable)r   r   r   r   r0   r8   r9   r   r    r!   r4   r4   2   s%    M!J
!E:Itr    r4   c                    | S r%   r   values    r!   _edit_variantr=   :   s    Lr    c                    t        d|       )Nzinvalid Telegram edit outcome: )AssertionErrorr;   s    r!   _invalid_edit_outcomer@   >   s    
:5)D
EEr    c                      e Zd ZU dZdZded<   	 	 	 	 	 	 	 	 ddZedd       Ze	 	 	 	 dd       Z		 	 	 	 	 	 	 	 ddZ
	 	 	 	 	 	 	 	 dd	Z	 	 	 	 	 	 	 	 dd
Z	 	 	 	 	 	 	 	 ddZy)TelegramWeeklyTransportMixinz@Classify weekly Telegram provider outcomes at one host boundary.NzTelegramTextEditor | None_botc                   K   |||f}t         wr%   NotImplementedError)r(   chat_idtopic_idtext_s        r!   _send_nutrition_topicz2TelegramWeeklyTransportMixin._send_nutrition_topicG   s      Xt#!!s   c                    | }t         r%   rE   )resultrJ   s     r!   _nutrition_delivery_receiptz8TelegramWeeklyTransportMixin._nutrition_delivery_receiptM   s    !!r    c                    | }t         r%   rE   )reason_or_resultrJ   s     r!   _reminder_no_send_rejectionz8TelegramWeeklyTransportMixin._reminder_no_send_rejectionR   s     !!r    c                   K   | j                   t        t        j                        S t	        | j                   |||       d{   S 7 w)z0Edit once through the typed provider classifier.N)rG   r0   rI   )rC   r   r   REJECTEDr   )r(   rG   r0   contents       r!   edit_message_outcomez1TelegramWeeklyTransportMixin.edit_message_outcomeY   sH      99+,C,L,LMM'IIw:G
 
 	
 
s   AAA	Ac                V  K   | j                  |||       d {   }t        |      xt        d x\  } t        d|      S  xt        d x\  } t        d|j
                  d      S  xt        d x\  } t        d|j
                        S  }t        t        |             y 7 w)N)r0   T)r   F)r8   r9   )r8   )	rU   r=   r
   r4   r   r<   r   r   r@   )r(   rG   r0   rT   outcomedelivered_idr   unreachables           r!   _edit_nonfinal_messagez3TelegramWeeklyTransportMixin._edit_nonfinal_messagec   s      11':wOOG$?&?+D\JJ @3$3+EQUVV 48)8+EFF 92;?@ Ps   B)B'BB)c                J  K   ddl m}m}m} 	 | j	                  |||       d{   }| j                  |      }	|	 ||	      S | j                  |      }
 ||
|
      S 7 9# t
        $ r} ||j                        cY d}~S d}~wt        t        f$ r} |       |d}~ww xY ww)z=Adapt the existing Telegram send and audit receipt semantics.r   )r   r   reminder_provider_unknown)rG   rH   rI   N)+gateway.platforms.nutrition_weekly_reminderr   r   r\   rK   r#   r   TimeoutErrorOSErrorrQ   rN   )r(   rG   rH   rI   r   r   r\   rM   r8   	rejectionreceipts              r!   send_weekly_reminderz1TelegramWeeklyTransportMixin.send_weekly_reminderq   s     	
 	

	955( 6  F 44V<	 +I66226:(':: & 	:+ELL99g& 	9+-58	9sO   B#A! AA! 5B#A! !	B *B;B <B#B BB  B#c                D   K   | j                  |||       d{   S 7 w)z<Edit the ledger-bound message through the shared classifier.N)rU   )r(   rG   r0   rI   s       r!   edit_weekly_topic59_outcomez8TelegramWeeklyTransportMixin.edit_weekly_topic59_outcome   s#      ..w
DIIIIs     )rG   r   rH   r7   rI   r   r*   Message | TelegramSendReceipt)rM   re   r*   r   )rP   z-BaseException | Message | TelegramSendReceiptr*   r7   )rG   r   r0   r   rT   r   r*   r   )rG   r   r0   r   rT   r   r*   r4   )rG   r   rH   r7   rI   r   r*   z4TelegramReminderDelivered | TelegramReminderRejected)rG   r   r0   r   rI   r   r*   r   )r   r   r   r   rC   r   rK   staticmethodrN   rQ   rU   rZ   rb   rd   r   r    r!   rB   rB   B   s   J&*D
#*"")3";>"	&" " " "G"	" "

(+
69
	
AA(+A69A	A;;&0;8;;	=;.JJ(+J36J	Jr    rB   N)r<   r   r*   zTelegramEditOutcome | str)r<   r   r*   r   ) r   
__future__r   dataclassesr   typingr   r   r   r   r	   )gateway.platforms.telegram_edit_transportr
   r   r   r   r   r   telegramr   r]   r   r   r   r   RuntimeErrorr#   r.   r4   r=   r@   rB   r   r    r!   <module>rm      s    @ " ! F F    M $d#  $ !\ ! !%( %
 $d#  $FJJ JJr    