
    j                        d Z ddlmZ ddlZddlmZ  ej                  dej                        Z ej                  dej                        Z		 	 	 	 	 	 d	dZ
d
dZy)z3Semantic calorie and macronutrient claim integrity.    )annotationsN)Mappingu/   (?P<value>\d+(?:[.,]\d+)?)\s*(?:kcal|칼로리)u   (?:(?P<label>단백질|탄수화물|지방).{0,12}?(?P<value>\d+(?:[.,]\d+)?)\s*(?:g|그램)|(?P<reverse_value>\d+(?:[.,]\d+)?)\s*(?:g|그램).{0,8}?(?P<reverse_label>단백질|탄수화물|지방))c                   t         j                  |       D ]$  }t        |j                  d            |d   k7  s$ y dddd}t        j                  |       D ]d  }|j                  d      xs |j                  d	      }|j                  d      xs |j                  d
      }||t        |      |||      k7  sd y y)zBReturn whether labeled nutrition claims match their locked fields.valuecaloriesF	protein_gcarbs_gfat_g)u	   단백질u   탄수화물u   지방labelreverse_labelreverse_valueT)_CALORIE_CLAIM_REfinditer_claim_numbergroup_MACRO_CLAIM_RE)	candidatelockedmatch
macro_keysr   r   s         r/home/cube/projects/richard/.worktrees/nutricoach-v140-impl/gateway/platforms/nutrition_coaching_copy_integrity.pyrecommendation_claims_matchr      s    
 #++I6W-.&2DD 7 !!J
 !)))4G$DO(DG$DO(DM}U#vj.?'@@ 5     c                r    t        | j                  dd            }|j                         rt        |      S |S )N, )floatreplace
is_integerint)r   numbers     r   r   r   /   s1    5==b)*F ++-3v;969r   )r   strr   zMapping[str, int]returnbool)r   r"   r#   zint | float)__doc__
__future__r   retypingr   compile
IGNORECASEr   r   r   r    r   r   <module>r,      ss    9 " 	  BJJ6MM  "**@ MM 
2:r   