
    fj8                       d dl mZ d dlZd dlmc mZ d dlZd dl	Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlZ ee      j(                  Ze
j,                  j/                  dedz        Zg ZeZerej6                  ZeZesddd	 ej:                         v s ej<                  e      r ej>                  e      nd	iz  Z ejC                  e        er`d
d	 ej:                         v s ej<                  e      r ej>                  e      nd	 ej>                  e      dz  Z"ejC                  e"        ejF                  ed       i z  Z$dde$iz  Z% e& ejN                  e%            dxZxZZe
j,                  jQ                  e      Z)e)ejT                  ejV                  <   ej6                  jY                  e)       dddd-dZ-ddd	 	 	 	 	 	 	 	 	 d.dZ.d/dZ/dd	 	 	 	 	 	 	 	 	 	 	 d0dZ0	 	 	 	 	 	 d1dZ1d2dZ2d2dZ3d2dZ4d3dZ5	 	 d3dZ6d3dZ7d3d Z8d3d!Z9d3d"Z:d3d#Z;ejx                  j{                  d$g d%      d4d&       Z>	 	 d3d'Z?d3d(Z@d3d)ZAd3d*ZBd3d+ZCd5d,ZDy)6    )annotationsN)Path)Anycontinuous_v3_finalzcontinuous_lifecycle.pyz%(py2)spy2SPECz#%(py6)s
{%(py6)s = %(py4)s.loader
})py4py6zassert %(py9)spy9Tlegacyinclude_schedulec                    i ddddddddd	| rt         j                  nd
d| rdnt         j                  dddd dd ddg dddg dddg dddg dddg dddg dddg dddddddd}|rd |d!<   |S )"Ndate_of_birthz
1996-08-01equation_sex_basismale	height_cm180	weight_kg80activity_categorymoderateactivity_rationale   주 3회 근력운동	goal_typemaintaintarget_weight_kgtarget_date	allergiesnone)statusitemsintolerancesreligious_ethical_exclusionsdisliked_foodsdietary_preferences
conditionsmedicationspregnancy_breastfeedingFu   기본 조리 가능   보통   )eating_disorder_riskcooking_accessbudget_band
meal_count   없음schedule_constraints)mLEGACY_ACTIVITYDETAILED_RATIONALE)r   r   values      /home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-continuous-lifecycle-observer-v3-final-4e9962be/test_continuous_lifecycle.pyanswersr7      s1     f  	U  	T	 
 	&Q..j  	5QEYEY  	Z  	D  	t  	4  	6B7  	'6B(G  	Vb9  	&2>  	"5   	&26! " 	"5# $ !&0+ E. (0$%L    resolvedF)statecanonical_summaryc          
         g }|dk(  s|rddddg}d|t         j                  |       |rt         j                  |       ndg g g g |d||d	}t         j                  |      |d
<   |S )N
clarifyingr   	ambiguityu+   평소 활동량은 어느 정도인가요?)fieldkindquestion_ko!nutrition_input_reconciliation_v1u"   수정 전 활동 요약입니다.)
summary_kofacts_koambiguities_kocontradictions_kosafety_observations_koclarifications)schema_versionr:   answers_digestadvisoryrH   current_indexdigest)r2   canonical_digestauthoritative_summary)r5   rL   r:   r;   rH   records         r6   reconciliationrQ   4   s     /1N -#L
 >,,U3 % ''.9 !#&(,
 )&#!F& ))&1F8Mr8   c                 l   t               } dt        j                  |       dd}t        j                  ddd|d}dd	t        j                  t        j                  d
dt        j
                  t        j
                  dgddd| t        | d      dgd|i |dt        j
                  dgdgg d g g i i g dS )Ncustomer_attestation@3230cb1a3c13f8e164c2171148c6e3183cbce0d36289cc647c10634b840d8060r:   rJ   body_digest   	COMMITTED   
session_id
generationr:   
message_idpayloadAWAITING_ACTIVATION   )r:   r\   r[   sid_hashF0)enabledroute      rL      r:   cursorr7   rQ   consumed_updatescustomerrolerd   )	bootstraprl   workflowpublicationoutboxowner_callbackswizardgenerationscardsdrafts
deliveries
activation)r7   r2   rN   SESSIONSIDCUSTOMERrQ   )r5   r^   rq   s      r6   baser}   [   s    IE',,U3YG iiK +))	
 !&QZZ0MN+,U!D!$
 #RkR:S@QRS/ r8   rl   rn   c                   t         j                  |d||d}|| d<   |dk(  rt         j                  dgnt         j                  dg}| d   j	                  i |||d       y )NrX   rZ   rq   rl   rb   rr   rm   )r2   rz   r|   OWNERappend)snapshotr\   r]   r^   rn   rq   rd   s          r6   publishr      si     ii  K *H]!%!3QZZ!''3EXKKdUKLr8   c               4   | d   d   }t         j                  | d   ||      }d }||u}|st        j                  d|fd||f      dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            d x}}d	t         j                  |      t         j                  j                  |j                               j                         d
S )Nrp   r7   is notz%(py0)s is not %(py3)stextpy0py3assert %(py5)spy5rS   rU   )r2   candidate_attestation_text
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationrN   hashlibsha256encode	hexdigest)r   rL   r5   r   @py_assert2@py_assert1@py_format4@py_format6s           r6   candidate_payloadr      s     Z +E''(<e]SD4t4t44t',,U3yy''6@@B r8   c           	     6    t        | ddt        | d             y )N      rf   rg   )r   r   r   s    r6   startupr      s    Hb#0KLr8   c           	     V    ddt        dd      ddgd| d<   t        | d	d
dddd       y )N
collecting   Fr   rh   ,  )r:   rj   r7   rk   rp         @cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc	broadcast)r:   rV   force_reply_mode)r7   r   r   s    r6   normalized_rewindr      sF    %%@ #J	HZ 
!# +	
		r8   c           	         t        d      }dd|t        |dd      g dd	| d
<   t        | ddt        | d             y )NFr   rS   re   r   T)rL   r;   )rh   r   i-  ri   rp         rg   )r7   rQ   r   r   )r   r5   s     r6   canonical_attestationr      sM    5!E'(d
 ,HZ Hb#0KLr8   c                    t         j                  } d}| |k(  }|st        j                  d|fd| |f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}}t         j                  } d}| |k(  }|st        j                  d|fd	| |f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}}t         j                  } d
}| |k(  }|st        j                  d|fd| |f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}}y )N@4e9962be49b72951c3b9ed7e1a4fe36d0ca03e757872ae03364c1ab7a790f32b==)z1%(py2)s
{%(py2)s = %(py0)s.SUCCESSOR
} == %(py5)sr2   r   r   r   assert %(py7)spy7@88caabf3dee923e720463d917d35b6dd32ecc31102ed3ab4df4c6a203df4a760)z,%(py2)s
{%(py2)s = %(py0)s.CORE
} == %(py5)s@33688875a0d1ce20955bd8272257ee34d84cb138f6a23a43e5d16682368ae5e5)z-%(py2)s
{%(py2)s = %(py0)s.WHEEL
} == %(py5)s)r2   	SUCCESSORr   r   r   r   r   r   r   r   COREWHEEL)r   @py_assert4@py_assert3r   @py_format8s        r6   test_final_candidate_bindingsr      s   	MM	N M     	
   	
   	   N      66WWW6WWWWW6WWWWWWW1WWW1WWW6WWWWWWWWWWW77XXX7XXXXX7XXXXXXX1XXX1XXX7XXXXXXXXXXXr8   c            	     R   dt         j                  z  } t        j                  t        j
                  d| gdddd      }t        j                  }|j                  } ||      }dt         j                  gdd}||k(  }|st        j                  d	|fd
||f      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t!        t        j"                  |            d x}x}x}x}}y )Na  
import json
from types import SimpleNamespace
from gateway.platforms.telegram_nutrition_onboarding_copy import parse_legacy_activity_answer
from gateway.platforms.telegram_nutrition_onboarding_runtime_publication_transport import publication_generation
legacy = %r
parsed = parse_legacy_activity_answer(legacy)
status = SimpleNamespace(answer_count=22, state=SimpleNamespace(value='customer_attestation'))
current = SimpleNamespace(generation=24, payload={'body_digest': 'old'})
generation = publication_generation(status, current=current, payload={'body_digest': 'candidate-changed'})
print(json.dumps({'parsed': parsed, 'generation': generation}, ensure_ascii=False))
z-cz(/home/cube/projects/richard/hermes-agentT)cwdcheckcapture_outputr   r   r   )parsedr\   r   )zh%(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.loads
}(%(py5)s
{%(py5)s = %(py3)s.stdout
})
} == %(py10)sjsonresultr   r   r   r   r   py10assert %(py12)spy12)r2   r3   
subprocessrunsys
executabler   loadsstdoutr4   r   r   r   r   r   r   r   r   )	coder   r   r   @py_assert6@py_assert9@py_assert8@py_format11@py_format13s	            r6   Jtest_product_runtime_recovers_exact_legacy_activity_and_startup_generationr      s   	 

	 	 ^^	t$6F :: fmm :m$ q334) $ )    $ )                            $    %   )       r8   c                    t         j                  t                     } | j                  }d}||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |       rt	        j                  |       ndt	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}| j                  }d }||u }|st	        j
                  d|fd	||f      dt        j                         v st	        j                  |       rt	        j                  |       ndt	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}| j                  }d
}||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |       rt	        j                  |       ndt	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}y )NWAIT_DEPLOYr   z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)spromptr   r   r   isz2%(py2)s
{%(py2)s = %(py0)s.message_id
} is %(py5)szdeploy-final-candidatez.%(py2)s
{%(py2)s = %(py0)s.action
} == %(py5)s)r2   classifyr}   r!   r   r   r   r   r   r   r   r   r]   action)r   r   r   r   r   r   s         r6   1test_current_inactive_authority_emits_wait_deployr      sb   ZZF==)M)=M))))=M))))))6)))6)))=)))M)))))))$$$$$$$$$$$$6$$$6$$$$$$$$$$$$$==444=44444=444444464446444=44444444444r8   c            
     4	   t               } t        |        t        j                  |       }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|j                  }d}||k(  }|st        j                  d|fd	||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|j                  }t        j                  }d
}d}	 |||	      }
||
k(  }|s2t        j                  d|fd||
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |	      t        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}	}
|j                  }t        j                  }d
}d}	 |||	      }
||
k7  }|s2t        j                  d|fd||
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |	      t        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}	}
y )NREADY_CUSTOMER_REVISIONr   r   r   r   r   r   209z2%(py2)s
{%(py2)s = %(py0)s.message_id
} == %(py5)sreviser   zv%(py2)s
{%(py2)s = %(py0)s.action
} == %(py12)s
{%(py12)s = %(py6)s
{%(py6)s = %(py4)s.callback
}(%(py8)s, %(py10)s)
}r2   r   r   r	   r
   py8r   r   assert %(py14)spy14rW   !=)zv%(py2)s
{%(py2)s = %(py0)s.action
} != %(py12)s
{%(py12)s = %(py6)s
{%(py6)s = %(py4)s.callback
}(%(py8)s, %(py10)s)
})r}   r   r2   r   r!   r   r   r   r   r   r   r   r   r]   r   callbackr   r   r   r   r   r   r   @py_assert5@py_assert7r   @py_assert11r   @py_format15s                r6   =test_startup_changed_body_generation_25_emits_latest_revisionr      s   vHHZZ!F==555=55555=555555565556555=55555555555%%%%%%%%%%%%6%%%6%%%%%%%%%%%%%==4AJJ4x44Jx44=44444=444444464446444=444444A444A444J444x444444444444444==4AJJ4x44Jx44=44444=444444464446444=444444A444A444J444x444444444444444r8   c                    t               } t        |        t        j                  | d   d         | d<   t        j                  |       }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}}|j                  }d }||u }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}}y )Nrr   r   rq   "WAIT_MATCHING_CUSTOMER_PUBLICATIONr   r   r   r   r   r   r   r   )r}   r   copydeepcopyr2   r   r!   r   r   r   r   r   r   r   r   r]   )r   r   r   r   r   r   r   s          r6   9test_stale_generation_24_message_207_callback_is_rejectedr     s   vHH"mmHX,>q,ABH]ZZ!F==@@@=@@@@@=@@@@@@@6@@@6@@@=@@@@@@@@@@@$$$$$$$$$$$$6$$$6$$$$$$$$$$$$$r8   c            	     T   t               } t        j                  } ||       }d }||u }|s
t        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}t        |        t        j                  |       }d }||u}|st        j                  d|fd	||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|d   }t        j                  }d}d} |||      }||k(  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}y )Nr   )z`%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.candidate_revision_handoff
}(%(py3)s)
} is %(py8)sr2   r   )r   r   r   r   r   zassert %(py10)sr   r   r   handoffr   r   r   r!   r   r   z%(py1)s == %(py4)spy1r	   assert %(py6)sr
   r]   r   r   r   r   )zY%(py1)s == %(py11)s
{%(py11)s = %(py5)s
{%(py5)s = %(py3)s.callback
}(%(py7)s, %(py9)s)
})r  r   r   r   r   py11zassert %(py13)spy13)r}   r2   candidate_revision_handoffr   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   @py_format9r   r   r   r   r   @py_assert0r   @py_format5@py_format7r   @py_assert10@py_format12@py_format14s                      r6   <test_revision_handoff_helper_never_authorizes_predeploy_cardr    s|   vH''9'19T91T99991T99999919991999'9999999999991999T9999999H**84G7$7$77$89 99 99999 9999999 99999999< )E) E)))) E))) )))E)))))))88

888R8
8R 88 88888 8888888888888888
8888888R888 888888888r8   c                    t               } t        |        t        |        | d   }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}}|d   d
   }t        j                  }||k(  }|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  t              rt        j
                  t              ndt        j
                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x}}d}|d   }||v}|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}}d}||v}|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }
dd|
iz  }t        t        j                  |            d x}}t        j                  |       }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      t        j
                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x}}|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      t        j
                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x}}|j                   }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      t        j
                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x}}|j"                  }d }||k(  }|st        j                  d|fd!||f      dt        j                         v st        j                  |      rt        j
                  |      ndt        j
                  |      t        j
                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x}}y )"Nrp   r7   r   r   r   r  r  r  r
   r   )z:%(py1)s == %(py5)s
{%(py5)s = %(py3)s.DETAILED_RATIONALE
}r2   )r  r   r   r   r   r1   not in)z%(py1)s not in %(py4)srQ   )z%(py1)s not in %(py3)s)r  r   r   r   READY_CUSTOMER_RESUBMITr   r   r   211r   z"submit_answer:schedule_constraintsr   r0   )z/%(py2)s
{%(py2)s = %(py0)s.command
} == %(py5)s)r}   r   r   r   r   r   r   r   r2   r4   r   r   r   r   r!   r]   r   command)r   rp   r	  r   r   r
  r  r   r   r   r   r   r   s                r6   Htest_authorized_rewind_normalizes_activity_and_preserves_exact_rationaler    s{   vHHh
#HI23AzA3zAAAA3zAAA3AAAzAAAAAAAI34L8L8LL48LLLLL48LLLL4LLLLLLLLLLLL8LLLLLLLL!<))<<!)<<<<<!)<<<<!<<<)<<<<<<<<+8++++8+++++++++8+++8+++++++ZZ!F==555=55555=555555565556555=55555555555%%%%%%%%%%%%6%%%6%%%%%%%%%%%%%==@@@=@@@@@=@@@@@@@6@@@6@@@=@@@@@@@@@@@>>%X%>X%%%%>X%%%%%%6%%%6%%%>%%%X%%%%%%%r8   fault)activity	rationalerQ   r\   c           	        t               }t        |       t        |       | dk(  rt        j                  |d   d   d<   n| dk(  rd|d   d   d<   nn| dk(  r
i |d   d<   n_d	|d
   d<   t        j
                  } ||      }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}}y t        j                   t        j"                        5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr  rp   r7   r   r  r   r   rQ   r   rq   r\   r   r   zk%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.classify
}(%(py3)s)
}.status
} == %(py10)sr2   r   r   r   r   )r}   r   r   r2   r3   r   r!   r   r   r   r   r   r   r   r   pytestraisesLifecycleError)	r  r   r   r   r   r   r   r   r   s	            r6   3test_rewind_rejects_noncanonical_or_stale_authorityr  '  sp    vHHh
?@?P?PY'(;<	+	@WY'(<=	"	"13-.02-zzRz(#R#**R.RR*.RRRRR*.RRRRRRRqRRRqRRRzRRRRRR(RRR(RRR#RRR*RRR.RRRRRRRR	q''	(	

8 
)	(	(s   $HHc            
     p   t               } t        |        t        |        t        |        | d   d   }t        j
                  } ||      }|sddt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d x}}t        j                  | d   |d      }d }||u}|st        j                  d|fd	||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}}dD ]  }||v}|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndd
t        j                         v st        j                  |      rt        j                  |      nd
dz  }	dd|	iz  }
t        t        j                  |
            d } ddt        j                  dfD ]  }||v }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndd
t        j                         v st        j                  |      rt        j                  |      nd
dz  }	dd|	iz  }
t        t        j                  |
            d } t        j!                  |       }|j"                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }d d!|iz  }t        t        j                  |            d x}x}}|j$                  }d"}||k(  }|st        j                  d|fd#||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }d d!|iz  }t        t        j                  |            d x}x}}|j&                  }t        j(                  }d$}d%} |||      }||k(  }|s2t        j                  d|fd&||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d'z  }d(d)|iz  }t        t        j                  |            d x}x}x}x}x}}y )*Nrp   r7   zXassert %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.baseline_valid_answers
}(%(py3)s)
}r2   r5   )r   r   r   r   r   r   r   r   r   r   r   )	{r"   r!   r   r   u	   미입력u   위험 신호u
   수정 전u    실제 총활동량은 불명확r  )z%(py0)s not in %(py2)s	forbidden)r   r   zassert %(py4)sr	   u   유지r*   u%   별도 검토 입력이 없습니다.)in)z%(py0)s in %(py2)srequiredREADY_CUSTOMER_ATTESTr   r   r   r   r   r   213r   attestr   r   r   r   r   )r}   r   r   r   r2   baseline_valid_answersr   r   r   r   r   r   r   r   r   r4   r   r!   r]   r   r   )r   r5   r   r   r   r   r   r   r"  @py_format3r
  r$  r   r   r   r   r   r   r   r   r   s                        r6   Jtest_new_reconciliation_summary_is_canonical_baseline_valid_and_attestabler*  <  s    vHHh(#Z +E##*#E********1***1***#******E***E**********''(<eQGD4t4t44t
	 $$$$y$$$$$$y$$$y$$$$$$$$$$$$$$$$
 		/	 4x4xx44 ZZ!F==333=33333=333333363336333=33333333333%%%%%%%%%%%%6%%%6%%%%%%%%%%%%%==4AJJ4x44Jx44=44444=444444464446444=444444A444A444J444x444444444444444r8   c            	     t   t               } t        |        t        |        t        |        d| d   d   d<   d| d   d   d   d<   t        j
                  } ||       }|j                  }d}||k(  }|st        j                  d|fd	||f      d
t        j                         v st        j                  t              rt        j                  t              nd
t        j                  |      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}}t               } t        |        t        |        t        |        d| d   d   d<   t        j                  | d   d         }|| d   d   d<   | d   d   j!                         D 	
ci c]  \  }	}
|	dk7  s|	|
 }}	}
t        j                  |      | d   d   d<   || d   d   d<   || d   d   d   d<   t        j
                  } ||       }|j                  }d}||k7  }|st        j                  d|fd||f      d
t        j                         v st        j                  t              rt        j                  t              nd
t        j                  |      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}}y c c}
}	w )N@0000000000000000000000000000000000000000000000000000000000000000rq   r^   rV   rr   WAIT_CANDIDATE_PUBLICATIONr   r  r2   r   r   r   r   r   rp   r7   r   rQ   rJ   rM   r%  r   )zk%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.classify
}(%(py3)s)
}.status
} != %(py10)s)r}   r   r   r   r2   r   r!   r   r   r   r   r   r   r   r   rN   r"   )r   r   r   r   r   r   r   r   rM   kvunsigneds               r6   9test_final_summary_rejects_body_digest_and_baseline_driftr2  `  s   vHHh(#8@H]I&}57?HXr9%m4::F:hF&&F*FF&*FFFFF&*FFFFFFF1FFF1FFF:FFFFFFhFFFhFFFFFF&FFF*FFFFFFFFvHHh(#<SHZ#$89 4Y ?@F?EHZ)*+;<!*-.>?EEGGA1PX=1G   897I7I(7SHZ)*84;AH]I&'78:@HXr9%&67::A:hA&&A*AA&*AAAAA&*AAAAAAA1AAA1AAA:AAAAAAhAAAhAAAAAA&AAA*AAAAAAAAAs   N4N4c                    t               } t        d      }dd|t        |dd      d| d	<   dt        t        j                  |            d
dd}t        | dd|       t        j                  |       }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                   |            d x}x}}|j"                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                   |            d x}x}}y )NFr   rS   re   r   r=   )rL   r:   )r:   rj   r7   rQ   rp   @ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddr   )r:   rJ   rV   clarification_fieldr   r   READY_CUSTOMER_CLARIFICATIONr   r   r   r   r   r   z&submit_clarification:activity_categoryr   )r}   r7   rQ   strr2   rN   r   r   r!   r   r   r   r   r   r   r   r   r   )	r   r5   r^   r   r   r   r   r   r   s	            r6   /test_matching_clarification_remains_field_boundr8  x  sY   vH5!E'(a|T	HZ (a00782	"G Hb#w'ZZ!F==:::=:::::=:::::::6:::6:::=:::::::::::==DDD=DDDDD=DDDDDDD6DDD6DDD=DDDDDDDDDDDr8   c                    t               } | d   j                  t        j                  | d   d                t	        j
                  t        j                  d      5  t        j                  |        d d d        y # 1 sw Y   y xY w)Nrr   r   zduplicate publication)match)	r}   r   r   r   r  r  r2   r  r   r   s    r6   2test_duplicate_publication_generation_fails_closedr;    s]    vHXdmmHX,>q,ABC	q''/F	G	

8 
H	G	Gs   A<<Bc            
     v   t               } d| d   d<   t        | dddddd	       t        j                  |       }|j                  }d
}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|j                  }t        j                  }d}d}	 |||	      }
||
k(  }|s2t        j                  d|fd||
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |	      t        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}	}
y )Nowner_reviewrp   r:         @eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee)r:   rV   ownerr~   READY_OWNER_ONBOARDING_APPROVEr   r   r   r   r   r   217r   owner_okr   r2   r   r   r   )r}   r   r2   r   r!   r   r   r   r   r   r   r   r   r]   r   r   r   s                r6   6test_owner_review_uses_only_matching_owner_publicationrE    s   vH$2HZ!
 : ZZ!F==<<<=<<<<<=<<<<<<<6<<<6<<<=<<<<<<<<<<<%%%%%%%%%%%%6%%%6%%%%%%%%%%%%%==6AJJ6z626Jz266=66666=666666666666666=666666A666A666J666z6662666666666666r8   c           	     f   | dz  }t         j                  |ddi       t         j                  |ddi       |j                         j                         D cg c]!  }t         j                  j                  |      # }}|j                  } |       }|j                  }d}||z  }d}	||	k(  }
|
st        j                  d|
fd||	f      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |	      d
z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}x}
}	|d   d   }|d   d   }||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y c c}w )Nzevents.jsonlr!   ABi  i  r   )zm(%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.stat
}()
}.st_mode
} & %(py8)s) == %(py12)starget)r   r   r	   r
   r   r   r   r   rf   previous_event_sha256r   event_sha256r  r  r  r
   )r2   append_event	read_text
splitlinesr   r   statst_moder   r   r   r   r   r   r   r   )tmp_pathrI  linerowsr   r   r   r   r   r   r  r   r   r	  r   r
  r  s                    r6   .test_append_ledger_is_private_and_hash_chainedrT    s   &FNN6Hc?+NN6Hc?++1+;+;+=+H+H+JK+J4AFFLL+JDK;;1;=1=  151 5(1E1(E1111(E11111161116111;111=111 1115111E111111117*+FtAw~/FF+/FFFFF+/FFFF+FFF/FFFFFFFF Ls   &H.)r   boolr   rU  returndict[str, object])
r5   rW  rL   intr:   r7  r;   rU  rV  rW  )rV  dict[str, Any])r   rY  r\   rX  r]   rX  r^   rW  rn   r7  rV  None)r   rY  rL   rX  rV  rW  )r   rY  rV  rZ  )rV  rZ  )r  r7  rV  rZ  )rQ  r   rV  rZ  )E
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   r   importlib.util	importlibr   r   r   pathlibr   typingr   r  __file__parentHEREutilspec_from_file_locationr   r   r	  loaderr   r   r   r   r)  r   r  _format_boolopr   @py_format10r   r   module_from_specr2   modulesnameexec_moduler7   rQ   r}   r   r   r   r   r   r   r   r   r   r   r  r  markparametrizer  r*  r2  r8  r;  rE  rT   r8   r6   <module>rs     sW   "       
   H~~~--4";; t t      t   t    t                     NN##D)DII      #T B #$$ $ 	$
 $ $N&^ MMM M 	M M 
M(

03

M&MY>55%9&  F$!5!5HB0E*7 Gr8   