
    j                        d 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
mZmZmZmZ ddlmZmZmZ ddlmZmZmZmZmZmZmZmZ g d	Zd
dd	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy
)z=Fail-closed authority for pre-activation nutrition readiness.    )annotations)datetime)Path)MappingProxyType)CUSTOMER_KEYDIGEST_PATTERNKST NUTRITION_READINESS_REASON_CODESNutritionReadinessAuditNutritionReadinessError)canonical_digestload_documentvalid_digest)
Validationvalidate_baselinevalidate_calculationvalidate_clinical_clearancevalidate_kbvalidate_policyvalidate_receiptvalidate_reconciliation)r
   r   r   audit_nutrition_start_readiness!require_nutrition_start_readinessNT)now_kstrequire_pointerc          
     P	   t        |       j                         j                         }t        j                  |      t        d      |xs t        j                  t              }|j                  t        d      |j                  t              }|dz  dz  |z  dz  }|dz  dz  dz  dz  |d	z  |d
z  |dz  |dz  |dz  d}|j                         D 	ci c]  \  }}	|t        |	|       }
}}	i }t        |
d         |d<   t        |
d   |      |d<   |
d   Ct        |
d   j!                  d      t"              r!t        |dz  |      }t%        ||
d         |d<   t'        |
d   |
d   |
d         |d<   t)        |
d   |
d   |
d         |d<   t+        |
d         |d<   |d   j,                  |d   j,                  |d   j,                  |d   j,                  |d   j,                  |
d   |
d   j!                  d      nd d}t/        |
d   ||      |d<   t        |dz  |      }||r|
d   t1        dd       |d<   n5|2h d}|j                         D ci c]  \  }}|j,                  ||j,                    }}}|d   }t        |t"              rt3        j                  |      	 ||d<   t5        |      |k(  xr |j!                  d      d k(  xr| |j!                  d!      d"k(  xrf t7        |      xrY |j!                  d#      t9        |      k(  xr: |j!                  d$      |d   j,                  k(  xr |j!                  d      |d   k(  }t1        |rd%nd|rt#        |d&         nd       |d<   t;        t=        |j?                         D ch c]  }|j@                  D ]  }|  c}}            }|j                         D ci c]  \  }}||j@                    }}}|j                         D ci c]  \  }}|j,                  ||j,                    }}}|d   }t        |t"              rt3        j                  |      ||d<   tC        | xr tE        |j?                               tG        |      tG        |      |'      S c c}	}w c c}}w c c}}w c c}}w c c}}w )(Nz+nutrition readiness customer key is invalidz/nutrition readiness time must be timezone-awaredata	customersznutrition-onboardingglobalznutrition-safetyzrestriction-kb-v1.jsonzbaseline-v1.jsonz"restriction-reconciliation-v1.jsonzinitial-plan-v1.jsonzadjustment-policy-v1.jsonzreadiness-receipt-v1.json)restriction_kbbaselinerestriction_reconciliationcalculationadjustment_policyreceiptr    r!   clinical_clearance_receiptzclinical-review.jsonclinical_clearancer"   r#   r$   input_reconciliation_digest)baseline_digestrestriction_kb_digest!restriction_reconciliation_digestcalculation_digestadjustment_policy_digestr(   r%   zreadiness-current.json)readiness_receipt_invalidpointer>   digestrevisionbundle_digestschema_versionreadiness_receipt_digestr(   input_reconciliationr3   nutrition_readiness_pointer_v1r1      r2   r4    r0   )readychecksdigestsreason_codes)$r   
expanduserresolver   	fullmatchr   r   nowr	   tzinfo
astimezoneitemsr   r   r   
isinstancegetstrr   r   r   r   r0   r   r   r   setr   r   tuplesortedvaluesreasonsr   allr   )profile_rootcustomer_keyr   r   rootr@   customer_rootpathsnamepath	documentsvalidationsclinical_documentexpected_receiptr/   pointer_fieldsresultcurrent_digestsr(   pointer_validreasonrK   r:   r;   s                           /home/cube/projects/richard/traning coach/task-12-independent-verification-r9/build/hermes-full/dualcoach/profile/checkin_cli/nutrition_readiness.pyr   r   *   s    ((*224Dl+3%&STT

&X\\#&C
zz%&WXX
..
C6MK/,>AWWM

  #	#
 "$66&3
.'/$'==*-HH #>>E DI;;=Q=ZT4}T400=IQ)+K$/	:J0K$LK !/	*0E|TK
*)j!%%&BC

 *22
 -Hj!-
() 1H./*"#1K,-
 "6- *"#"K
 (7yAT7U'VK#$&z299!,-=!>!E!E-8(.

&)-8??$/0C$D$K$K $0 j!%%&CD .)K	
 M,DDdKG?y/C/O!+*"
I 
	
 !, 1 1 3
 3f}}( &-- 3 	 

 '7)'
# 2C8(()DE , 23 LN* ?,-1QQ?J'1,? W%? O,0@0QQ	?
 679%,,-? 9: =>? 	 ",B%C&3C!""
I
 [%7%7%9W%96f%9WXG <G;L;L;NO;N<4d&&;NFO (--//LD&==$ 	fmm/  
 #3%# 	.4$$%@AM*E&'"k2c&--/2' )	 c R@
B XOs   R
#RR
R8#R"c                    t        | |      }|j                  s)dj                  |j                        }t	        d|       |S )N,znutrition readiness failed: )r   r9   joinr<   r   )rM   rN   auditjoineds       r]   r   r      sC     ,L,GE;;%,,-%(DVH&MNNL    )
rM   
Path | strrN   rF   r   zdatetime | Noner   boolreturnr   )rM   rd   rN   rF   rf   r   )__doc__
__future__r   r   pathlibr   typesr   (checkin_cli.nutrition_readiness_contractr   r   r	   r
   r   r   "checkin_cli.nutrition_readiness_ior   r   r   *checkin_cli.nutrition_readiness_validatorsr   r   r   r   r   r   r   r   __all__r   r   r8   rc   r]   <module>ro      s    C "   "  
	 	 	  $ SSS 	S
 S Sl rc   