
    LUi+H                    R   d Z 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mZ ddlmZmZ ddlZ G d d      Z G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Zy)a  Tests for RLM Neo-Cortex Component Interface Contracts (Story 0.01).

Black box tests:
    BB1: Import all public names from core.rlm.contracts -- assert no ImportError
    BB2: Create a MemoryRecord with only required fields -- assert defaults populated
    BB3: Verify EntitlementManifest.decay_policy defaults to "moderate"
    BB4: Verify MemoryTier("working") == MemoryTier.WORKING

White box tests:
    WB1: Instantiate a class with partial MemoryGatewayProtocol -- assert structural mismatch
    WB2: Verify PreferencePair.confidence default is 1.0 via dataclasses.fields()

Additional coverage tests:
    AC1: All 6 Protocol classes are importable and inspectable via typing.get_type_hints()
    AC2: Constants have correct values
    AC3: FeedbackSignal enum values are -1, 0, 1
    AC4: CustomerTier has exactly 4 values
    AC5: MemoryRecord serialization round-trip via dataclasses.asdict()
    AC6: Package-level imports from core.rlm work correctly
    )annotationsN)datetime)UUIDuuid4c                  0    e Zd ZdZddZddZddZddZy)TestBB1ImportAllPublicNamesz@Black box test: every public symbol is importable without error.c                   ddl m}m}m} 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 }||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 }||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}}y )Nr   CustomerTierFeedbackSignal
MemoryTieris notz%(py0)s is not %(py3)sr   py0py3assert %(py5)spy5r   r   )core.rlm.contractsr   r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)selfr   r   r   @py_assert2@py_assert1@py_format4@py_format6s           1/mnt/e/genesis-system/tests/rlm/test_contracts.pytest_import_enumsz-TestBB1ImportAllPublicNames.test_import_enums'   s   OO!%%z%%%%z%%%%%%z%%%z%%%%%%%%%%#''|4''''|4''''''|'''|'''4'''''''%))~T))))~T))))))~)))~)))T)))))))    c                   ddl m}m}m} 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 }||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 }||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}}y Nr   )EntitlementManifestMemoryRecordPreferencePairr   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"   r#   s           r$   test_import_dataclassesz3TestBB1ImportAllPublicNames.test_import_dataclasses.   s   	
 	
 $('|4''''|4''''''|'''|'''4'''''''*.."$...."$......"..."...$.......%))~T))))~T))))))~)))~)))T)))))))r&   c                   ddl m}m}m}m}m}m} 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 }||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 }||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 }||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 }||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 }||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}}y Nr   DecaySchedulerProtocolEntitlementLedgerProtocolFeedbackCollectorProtocolMemoryGatewayProtocolSurpriseIntegrationProtocolTenantPartitionProtocolr   r   r4   r   r   r   r2   r5   r1   r3   r6   )r   r1   r2   r3   r4   r5   r6   r   r   r   r   r   r   r   r   r   r1   r2   r3   r4   r5   r6   r    r!   r"   r#   s              r$   test_import_protocolsz1TestBB1ImportAllPublicNames.test_import_protocols9   <   	
 	
 -10$D0000$D000000$000$000D0000000044(4444(444444(444(4444444444266*$6666*$666666*666*666$6666666-11%T1111%T111111%111%111T1111111044(4444(444444(444(4444444444.22&d2222&d222222&222&222d2222222r&   c                   ddl m}m}m}m}m} 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 }||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 }||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 }||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 }||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}}y )Nr   DEFAULT_DECAY_HALF_LIFEEMBEDDING_DIMMAX_CONTENT_LENGTHREDIS_TTL_ENTITLEMENTSURPRISE_THRESHOLDr   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=   r>   r?   r@   r    r!   r"   r#   s
             r$   test_import_constantsz1TestBB1ImportAllPublicNames.test_import_constantsJ   s   	
 	
 %)(}D((((}D((((((}(((}(((D(((((((.22&d2222&d222222&222&222d2222222)--!----!------!---!----------)--!----!------!---!----------,00$D0000$D000000$000$000D0000000r&   NreturnNone)__name__
__module____qualname____doc__r%   r-   r8   rB    r&   r$   r   r   $   s    J*	*3"1r&   r   c                       e Zd ZdZddZddZy)TestBB2MemoryRecordDefaultsz:Black box test: MemoryRecord populates defaults correctly.c                   ddl m}m} t               } ||ddd      }|j                  }||k(  }|st        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                  |      rt        j                  |      nd
dz  }dd|iz  }t        t        j                  |            d 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}}	|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"                  }|j$                  }||k(  }|st        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                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|j&                  }i }	||	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+        |t,              }|sddt        j                         v st        j                  t*              rt        j                  t*              nd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                  |      dz  }t        t        j                  |            d 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}}	|j0                  }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 )#Nr   r*   r   zTest memory contenttest_sourcetest_domain	tenant_idcontentsourcedomain==)z1%(py2)s
{%(py2)s = %(py0)s.tenant_id
} == %(py4)srecordtid)r   py2py4assert %(py6)spy6)z/%(py2)s
{%(py2)s = %(py0)s.content
} == %(py5)sr   rZ   r   assert %(py7)spy7)z.%(py2)s
{%(py2)s = %(py0)s.source
} == %(py5)s)z.%(py2)s
{%(py2)s = %(py0)s.domain
} == %(py5)s        z6%(py2)s
{%(py2)s = %(py0)s.surprise_score
} == %(py5)s)zP%(py2)s
{%(py2)s = %(py0)s.memory_tier
} == %(py6)s
{%(py6)s = %(py4)s.WORKING
}r   r   rZ   r[   r]   assert %(py8)spy8z0%(py2)s
{%(py2)s = %(py0)s.metadata
} == %(py5)szUassert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.created_at
}, %(py4)s)
}
isinstancer   )r   py1r   r[   r]   )is)z1%(py2)s
{%(py2)s = %(py0)s.vector_id
} is %(py5)s)z-%(py2)s
{%(py2)s = %(py0)s.pg_id
} is %(py5)s)r   r*   r   r   rR   r   r   r   r   r   r   r   r   rS   rT   rU   surprise_scorememory_tierWORKINGmetadata
created_atrg   r   	vector_idpg_id)r   r*   r   rY   rX   r!   @py_assert3@py_format5@py_format7@py_assert4r#   @py_format8@py_assert5@py_format9r    s                  r$   test_required_fields_onlyz5TestBB2MemoryRecordDefaults.test_required_fields_onlyb   s   ?g)  	
 &3&&&&3&&&&&&v&&&v&&&&&&&&&3&&&3&&&&&&&~~6!66~!66666~!6666666v666v666~666!66666666}}--}----}------v---v---}----------}}--}----}------v---v---}----------$$++$++++$++++++v+++v+++$++++++++++!!7Z%7%77!%77777!%7777777v777v777!777777Z777Z777%77777777$"$"$$$$"$$$$$$v$$$v$$$$$$"$$$$$$$ ++6z+X66666666z666z666666&666&666+666666X666X6666666666'4'4''''4''''''v'''v''''''4'''''''||#t#|t####|t######v###v###|###t#######r&   c                   ddl m}m} t               } ||dddd|j                  ddid	d
	      }|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                  }|j                  }
||
k(  }|st        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                  |      rt        j                  |      ndt        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}}
|j                  }ddi}||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 )Nr   rN   zHigh surprise contentapi	knowledgegq=
ףp?keyvaluezvec-123*   )	rR   rS   rT   rU   rj   rk   rm   ro   rp   rV   rb   rX   r^   r_   r`   )zQ%(py2)s
{%(py2)s = %(py0)s.memory_tier
} == %(py6)s
{%(py6)s = %(py4)s.SEMANTIC
}r   rc   rd   re   rf   )z1%(py2)s
{%(py2)s = %(py0)s.vector_id
} == %(py5)s)z-%(py2)s
{%(py2)s = %(py0)s.pg_id
} == %(py5)s)r   r*   r   r   SEMANTICrj   r   r   r   r   r   r   r   r   rk   rm   ro   rp   )r   r*   r   rY   rX   r!   rt   rq   r#   ru   rv   rs   rw   s                r$   test_explicit_overridesz3TestBB2MemoryRecordDefaults.test_explicit_overridesw   s   ?g+"++W%

 $$,,$,,,,$,,,,,,v,,,v,,,$,,,,,,,,,,!!8Z%8%88!%88888!%8888888v888v888!888888Z888Z888%8888888825'"22"22222"2222222v222v222222"22222222,9,9,,,,9,,,,,,v,,,v,,,,,,9,,,,,,,||!r!|r!!!!|r!!!!!!v!!!v!!!|!!!r!!!!!!!r&   NrC   )rF   rG   rH   rI   rx   r   rJ   r&   r$   rL   rL   _   s    D$*"r&   rL   c                       e Zd ZdZddZddZy)"TestBB3EntitlementManifestDefaultsz6Black box test: default values on EntitlementManifest.c                   ddl m}m}  |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}}y )Nr   r   r)   rR   tiermoderaterV   )z4%(py2)s
{%(py2)s = %(py0)s.decay_policy
} == %(py5)smanifestr^   r_   r`   )r   r   r)   r   STARTERdecay_policyr   r   r   r   r   r   r   r   	r   r   r)   r   r!   rt   rq   r#   ru   s	            r$   test_decay_policy_defaultz<TestBB3EntitlementManifestDefaults.test_decay_policy_default   s    H&g%%
 $$2
2$
2222$
222222x222x222$222
2222222r&   c                   ddl m}m}  |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                  }g }||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                   }i }||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 )Nr   r   r   d   rV   )z7%(py2)s
{%(py2)s = %(py0)s.memory_limit_mb
} == %(py5)sr   r^   r_   r`   i  )z<%(py2)s
{%(py2)s = %(py0)s.max_memories_per_day
} == %(py5)s)z9%(py2)s
{%(py2)s = %(py0)s.allowed_mcp_tools
} == %(py5)s)z0%(py2)s
{%(py2)s = %(py0)s.features
} == %(py5)s)r   r   r)   r   PROFESSIONALmemory_limit_mbr   r   r   r   r   r   r   r   max_memories_per_dayallowed_mcp_toolsfeaturesr   s	            r$   test_memory_limit_defaultz<TestBB3EntitlementManifestDefaults.test_memory_limit_default   s   H&g**
 ''.3.'3....'3......x...x...'...3.......,,33,3333,333333x333x333,3333333333))/R/)R////)R//////x///x///)///R///////  &B& B&&&& B&&&&&&x&&&x&&& &&&B&&&&&&&r&   NrC   )rF   rG   rH   rI   r   r   rJ   r&   r$   r   r      s    @3
'r&   r   c                  (    e Zd ZdZddZddZddZy)#TestBB4MemoryTierStringConstructionz4Black box test: enum construction from string value.c                `   ddl m} d} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}y )
Nr   r   workingrV   zM%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.WORKING
}r   r   rZ   r[   r]   re   assert %(py10)spy10)r   r   rl   r   r   r   r   r   r   r   r   r   r   r!   rq   @py_assert7rv   rw   @py_format11s           r$   test_string_constructionz<TestBB4MemoryTierStringConstruction.test_string_construction   s    1#:z)$:
(:(::$(:::::$(:::::::z:::z:::):::$::::::
:::
:::(::::::::r&   c                P	   ddl m} d} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}d
} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}d} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}d} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}y )Nr   r   discardrV   )zM%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.DISCARD
}r   r   r   r   r   r   episodic)zN%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.EPISODIC
}semantic)zN%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.SEMANTIC
})r   r   DISCARDr   r   r   r   r   r   r   r   rl   EPISODICr   r   s           r$   test_all_tiers_from_stringz>TestBB4MemoryTierStringConstruction.test_all_tiers_from_string   s   1#:z)$:
(:(::$(:::::$(:::::::z:::z:::):::$::::::
:::
:::(::::::::#:z)$:
(:(::$(:::::$(:::::::z:::z:::):::$::::::
:::
:::(::::::::$<z*%<)<)<<%)<<<<<%)<<<<<<<z<<<z<<<*<<<%<<<<<<<<<<<<)<<<<<<<<$<z*%<)<)<<%)<<<<<%)<<<<<<<z<<<z<<<*<<<%<<<<<<<<<<<<)<<<<<<<<r&   c                   ddl m} t        |      }t        |      }d}||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  t              rt	        j                  t              nd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}}h d}|D 	ch c]  }	|	j                   }
}	|
|k(  }|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}
}y c c}	w )Nr   r      rV   z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenmembersr   rh   r   r]   rd   re   >   r   rl   r   r   z%(py1)s == %(py3)sexpected_namesrh   r   r   r   )r   r   listr   r   r   r   r   r   r   r   r   name)r   r   r   r    rv   rt   rs   rw   r   m@py_assert0r"   r#   s                r$   (test_memory_tier_has_exactly_four_valueszLTestBB4MemoryTierStringConstruction.test_memory_tier_has_exactly_four_values   s   1z"7| q |q    |q      s   s      7   7   |   q       G '(1(:(N::::(N:::(::::::N:::N:::::::(s   *G$NrC   )rF   rG   rH   rI   r   r   r   rJ   r&   r$   r   r      s    >;
=;r&   r   c                       e Zd ZdZddZddZy)TestWB1ProtocolStructuralChecka=  White box test: Protocol structural typing enforcement.

    We verify that the protocol classes have the expected methods by
    inspecting their type hints. Python's Protocol is structural --
    runtime isinstance checks need runtime_checkable, but we can verify
    the protocol defines the expected methods.
    c                   ddl m} t        j                  |      }g d}|D ]0  }t	        ||      }|st        j                  d|       dz   dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d	z  }t        t        j                  |            d }3 y )
Nr   r4   write_memoryread_memoriesdelete_memorysearch_memoriesz&MemoryGatewayProtocol missing method: 7
>assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}hasattrr4   method_namer   rh   rZ   r[   )r   r4   typingget_type_hintsr   r   _format_assertmsgr   r   r   r   r   r   )r   r4   hintsexpected_methodsr   rq   rr   s          r$   $test_memory_gateway_protocol_methodszCTestWB1ProtocolStructuralCheck.test_memory_gateway_protocol_methods   s*   <%%&;<
 , 	K0+> >   9F v     I   v   1  I 1  v   3>  I 3>  I ?     	r&   c                   ddl m}m}m}m}m}m} |g d|g d|dg|ddg|dd	g|g d
i}|j                         D ]H  \  }}	|	D ]<  }
t        ||
      }|s(t        j                  |j                   d|
       dz   dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |
      rt        j                  |
      ndt        j                  |      dz  }t!        t        j"                  |            d }? K y )Nr   r0   r   )get_manifestupdate_tiercheck_quotascore_contentrun_decay_cycleget_decay_statsrecord_feedbackget_pair_count)create_tenantdelete_tenant_dataverify_isolationz missing method: r   r   protocol_clsr   r   )r   r1   r2   r3   r4   r5   r6   itemsr   r   r   rF   r   r   r   r   r   r   )r   r1   r2   r3   r4   r5   r6   protocol_methodsr   methodsr   rq   rr   s                r$   (test_all_protocols_have_expected_methodszGTestWB1ProtocolStructuralCheck.test_all_protocols_have_expected_methods   s   	
 	
 " $ & (
 (* #!!% &! ( $ &/
< &6%;%;%= 	!L'& |[9 9    $,,-->{mL 6     	   6    ,  	  ,  6   .9  	 .9  	 :     	r&   NrC   )rF   rG   rH   rI   r   r   rJ   r&   r$   r   r      s     ,r&   r   c                       e Zd ZdZddZddZy)"TestWB2PreferencePairFieldDefaultsz1White box test: inspect dataclass field metadata.c                   ddl m} t        j                  |      D ci c]  }|j                  | }}|d   }|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 c c}w )Nr   r+   
confidence      ?rV   z/%(py2)s
{%(py2)s = %(py0)s.default
} == %(py5)sconfidence_fieldr^   r_   r`   r   r+   dataclassesfieldsr   defaultr   r   r   r   r   r   r   r   )
r   r+   f
fields_mapr   r!   rt   rq   r#   ru   s
             r$   "test_confidence_default_via_fieldszETestWB2PreferencePairFieldDefaults.test_confidence_default_via_fields  s    5)4););N)KLAaffaiL
L%l3''.3.'3....'3............'...3....... M   Dc                   ddl m} t        j                  |      D ci c]  }|j                  | }}|d   }|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 c c}w )Nr   r   annotator_idtelegram_feedbackrV   r   annotator_fieldr^   r_   r`   r   )
r   r+   r   r   r   r!   rt   rq   r#   ru   s
             r$   $test_annotator_id_default_via_fieldszGTestWB2PreferencePairFieldDefaults.test_annotator_id_default_via_fields%  s    5)4););N)KLAaffaiL
L$^4&&=*==&*=====&*=============&===*======== Mr   NrC   )rF   rG   rH   rI   r   r   rJ   r&   r$   r   r     s    ;/>r&   r   c                       e Zd ZdZddZddZy)TestAC1ProtocolTypeHintsz3Additional coverage: protocol type hint inspection.c                   ddl m}m}m}m}m}m} ||||||g}|D ]8  }t        j                  |      }	t        |	t              }
|
sddt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |	      rt        j                  |	      nddt        j                         v st        j                  t              rt        j                  t              ndt        j                  |
      dz  }t!        t        j"                  |            d }
; y )Nr   r0   5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}rg   r   dictr   )r   r1   r2   r3   r4   r5   r6   r   r   rg   r   r   r   r   r   r   r   r   )r   r1   r2   r3   r4   r5   r6   	protocolsprotor   rq   rr   s               r$   test_protocols_are_inspectablez7TestAC1ProtocolTypeHints.test_protocols_are_inspectable5  s    	
 	
 "%'"%#
	  	+E))%0EeT********:***:******e***e******T***T**********	+r&   c                   ddl m} t        j                  |j                        }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}}y
)z0Verify key method return type annotations exist.r   r   rD   )in)z%(py1)s in %(py3)swrite_hintsr   r   r   N)r   r4   r   r   r   r   r   r   r   r   r   r   r   )r   r4   r   r   r    r"   r#   s          r$   !test_protocol_method_return_typesz:TestAC1ProtocolTypeHints.test_protocol_method_return_typesL  sy    <++!..
 &x;&&&&x;&&&x&&&&&&;&&&;&&&&&&&r&   NrC   )rF   rG   rH   rI   r   r   rJ   r&   r$   r   r   2  s    =+.'r&   r   c                  8    e Zd ZdZddZddZddZddZddZy)	TestAC2Constantsz7Additional coverage: verify constant values match spec.c                   ddl m} d}||k(  }|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}}t        |t              }|sd
dt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }y )Nr   )r=      rV   z%(py0)s == %(py3)sr=   r   r   r   r   rg   intr   )r   r=   r   r   r   r   r   r   r   r   rg   r  )r   r=   r    r!   r"   r#   rq   rr   s           r$   test_embedding_dimz#TestAC2Constants.test_embedding_dim^  s    4 ##}####}######}###}##########---------z---z------------------------------r&   c                   ddl m} d}||k(  }|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}}t        |t              }|sd
dt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }y )Nr   )r<         @rV   r   r<   r   r   r   r   rg   floatr   )r   r<   r   r   r   r   r   r   r   r   rg   r  )r   r<   r    r!   r"   r#   rq   rr   s           r$   test_default_decay_half_lifez-TestAC2Constants.test_default_decay_half_lifed  s    >*--&#----&#------&---&---#-------1599999999z999z99999919991999999599959999999999r&   c                   ddl m} d}||k(  }|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}}t        |t              }|sd
dt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }y )Nr   )r@         ?rV   r   r@   r   r   r   r   rg   r  r   )r   r@   r   r   r   r   r   r   r   r   rg   r  )r   r@   r    r!   r"   r#   rq   rr   s           r$   test_surprise_thresholdz(TestAC2Constants.test_surprise_thresholdj  s    9%))!T))))!T))))))!)))!)))T))))))),e44444444z444z444444,444,444444e444e4444444444r&   c                   ddl m} d}||k(  }|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}}t        |t              }|sd
dt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }y )Nr   )r>    }  rV   r   r>   r   r   r   r   rg   r  r   )r   r>   r   r   r   r   r   r   r   r   rg   r  )r   r>   r    r!   r"   r#   rq   rr   s           r$   test_max_content_lengthz(TestAC2Constants.test_max_content_lengthp  s    9%++!V++++!V++++++!+++!+++V+++++++,c22222222z222z222222,222,222222c222c2222222222r&   c                   ddl m} d}||k(  }|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}}t        |t              }|sd
dt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }y )Nr   )r?   ,  rV   r   r?   r   r   r   r   rg   r  r   )r   r?   r   r   r   r   r   r   r   r   rg   r  )r   r?   r    r!   r"   r#   rq   rr   s           r$   test_redis_ttl_entitlementz+TestAC2Constants.test_redis_ttl_entitlementv  s    <(++$++++$++++++$+++$++++++++++/55555555z555z555555/555/5555555555555555555r&   NrC   )	rF   rG   rH   rI   r  r  r	  r  r  rJ   r&   r$   r   r   [  s    A.:536r&   r   c                       e Zd ZdZddZddZy)TestAC3FeedbackSignalz3Additional coverage: FeedbackSignal enum integrity.c                   ddl m} |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                  |      t	        j                  |      dz  }dd	|iz  }t        t	        j                  |            d x}x}x}x}}|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                  |      t	        j                  |      dz  }	dd|	iz  }
t        t	        j                  |
            d x}x}x}}|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                  |      t	        j                  |      dz  }	dd|	iz  }
t        t	        j                  |
            d x}x}x}}y )Nr   r      rV   )zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.NEGATIVE
}.value
} == -%(py7)sr   r   rZ   r[   r`   r   r   )zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.NEUTRAL
}.value
} == %(py7)sassert %(py9)spy9zK%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.POSITIVE
}.value
} == %(py7)s)r   r   NEGATIVEr}   r   r   r   r   r   r   r   r   NEUTRALPOSITIVE)r   r   r!   rq   @py_assert6@py_assert8rv   rw   r   ru   @py_format10s              r$   test_valuesz!TestAC3FeedbackSignal.test_values  s   5&&2&,,222,2222,222222~222~222&222,2222222222%%0%++0q0+q0000+q000000~000~000%000+000q0000000&&1&,,11,1111,111111~111~111&111,1111111111r&   c           	        ddl m} t        |      }t        |      }d}||k(  }|sSt	        j
                  d|fd||f      dt        j                         v st	        j                  t              rt	        j                  t              nddt        j                         v st	        j                  t              rt	        j                  t              nd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}}y )Nr   r     rV   )zN%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py1)s(%(py2)s)
})
} == %(py9)sr   r   r   )r   rh   rZ   r[   r]   r  zassert %(py11)spy11)r   r   r   r   r   r   r   r   r   r   r   r   )r   r   rq   rv   r  r   r  @py_format12s           r$   test_member_countz'TestAC3FeedbackSignal.test_member_count  s    5'-s'(-A-(A----(A------s---s------4---4------------'---(---A-------r&   NrC   )rF   rG   rH   rI   r  r$  rJ   r&   r$   r  r    s    =2.r&   r  c                  (    e Zd ZdZddZddZddZy)TestAC4CustomerTierz1Additional coverage: CustomerTier enum integrity.c                F   ddl m} t        |      }t        |      }d}||k(  }|st	        j
                  d|fd||f      dt        j                         v st	        j                  t              rt	        j                  t              nd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 )Nr   r   r   rV   r   r   r   r   rd   re   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r    rv   rt   rs   rw   s           r$   r$  z%TestAC4CustomerTier.test_member_count  s    3|$7| q |q    |q      s   s      7   7   |   q       r&   c                   ddl m} h d}|D ch c]  }|j                   }}||k(  }|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 }y c c}w )Nr   r(  >   queenstarter
enterpriseprofessionalrV   )z%(py0)s == %(py2)sactualexpected)r   rZ   zassert %(py4)sr[   )r   r   r}   r   r   r   r   r   r   r   r   )r   r   r/  r   r.  r!   @py_format3rr   s           r$   test_expected_valuesz(TestAC4CustomerTier.test_expected_values  s    3E#/0a!''00!!!!v!!!!!!v!!!v!!!!!!!!!!!!!!!! 1s   C4c                P	   ddl m} d} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}d
} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}d} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}d} ||      }|j                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      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}x}x}}y )Nr   r(  r+  rV   )zM%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.STARTER
}r   r   r   r   r-  )zR%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.PROFESSIONAL
}r,  )zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.ENTERPRISE
}r*  )zK%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py8)s
{%(py8)s = %(py6)s.QUEEN
})r   r   r   r   r   r   r   r   r   r   r   r   
ENTERPRISEQUEEN)r   r   r!   rq   r   rv   rw   r   s           r$   r   z,TestAC4CustomerTier.test_string_construction  s   3%>|I&>,*>*>>&*>>>>>&*>>>>>>>|>>>|>>>I>>>&>>>>>>,>>>,>>>*>>>>>>>>*H|N+H|/H/HH+/HHHHH+/HHHHHHH|HHH|HHHNHHH+HHHHHH|HHH|HHH/HHHHHHHH(D|L)D\-D-DD)-DDDDD)-DDDDDDD|DDD|DDDLDDD)DDDDDD\DDD\DDD-DDDDDDDD#:|G$:(:(::$(:::::$(:::::::|:::|:::G:::$::::::::::::(::::::::r&   NrC   )rF   rG   rH   rI   r$  r1  r   rJ   r&   r$   r&  r&    s    ;!";r&   r&  c                       e Zd ZdZddZddZy)TestAC5Serializationz-Additional coverage: dataclass serialization.c                   ddl m}m} t               } ||ddd      }t	        j
                  |      }|d   }||k(  }|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}}|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   }|j                  }|j                  }||k(  }|st        j                  d|fd||f      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}}y )Nr   rN   testrz   generalrQ   rR   rV   r   rY   r   r   r   rS   z%(py1)s == %(py4)srh   r[   r\   r]   rj   ra   rk   )zJ%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.WORKING
}.value
}r   )rh   r   r   r`   r  r  )r   r*   r   r   r   asdictr   r   r   r   r   r   r   r   rl   r}   )r   r*   r   rY   rX   dr   r    r"   r#   rq   rr   rs   rt   r  ru   r  s                    r$   test_memory_record_asdictz.TestAC5Serialization.test_memory_record_asdict  s   ?g	
 v&~$~$$$$~$$$~$$$$$$$$$$$$$$$$|%v%|v%%%%|v%%%|%%%v%%%%%%%!")c)"c))))"c)))")))c)))))));:#5#5;#5#;#;;#;;;;;#;;;;;;;;;;:;;;:;;;#5;;;#;;;;;;;;r&   c                P   ddl m}  |ddd      }t        j                  |      }|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   }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 )Nr   r   z
What is X?z	X is goodzX is bad)
input_textchosen_outputrejected_outputr@  rV   r:  r;  r\   r]   r   r   r   r   )	r   r+   r   r<  r   r   r   r   r   )	r   r+   pairr=  r   rq   r    rr   rs   s	            r$   test_preference_pair_asdictz0TestAC5Serialization.test_preference_pair_asdict  s   5#%&

 t$.,.,....,......,.......%#%#%%%%#%%%%%%#%%%%%%% 7$77 $77777 $7777 777$77777777r&   NrC   )rF   rG   rH   rI   r>  rD  rJ   r&   r$   r6  r6    s    7< 8r&   r6  c                  0    e Zd ZdZddZddZddZddZy)TestAC6PackageLevelImportszFAdditional coverage: importing from core.rlm (not core.rlm.contracts).c                   ddl m}m}m} |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                  |      t        j                  |      dz  }dd	|iz  }	t        t        j                  |	            d x}x}x}}|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                  |      t        j                  |      dz  }dd	|iz  }	t        t        j                  |	            d x}x}x}}|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                  |      t        j                  |      dz  }dd	|iz  }	t        t        j                  |	            d x}x}x}}y )Nr   r
   r   rV   )zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.WORKING
}.value
} == %(py7)sr   r  r  r  r+  )zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.STARTER
}.value
} == %(py7)sr   r  r  r   )core.rlmr   r   r   rl   r}   r   r   r   r   r   r   r   r   r   r  )
r   r   r   r   r!   rq   r  rv   ru   r  s
             r$   test_import_enums_from_packagez9TestAC6PackageLevelImports.test_import_enums_from_package  s   EE!!4!''494'94444'9444444z444z444!444'44494444444##6#))6Y6)Y6666)Y666666|666|666#666)666Y6666666&&1&,,11,1111,111111~111~111&111,1111111111r&   c                   ddl m}m}m} 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 }||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 }||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}}y r(   )rH  r)   r*   r+   r   r   r   r   r   r   r   r   r,   s           r$   $test_import_dataclasses_from_packagez?TestAC6PackageLevelImports.test_import_dataclasses_from_package  s   NN#''|4''''|4''''''|'''|'''4'''''''*.."$...."$......"..."...$.......%))~T))))~T))))))~)))~)))T)))))))r&   c                   ddl m}m}m}m}m}m} 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 }||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 }||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 }||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 }||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 }||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}}y r/   )rH  r1   r2   r3   r4   r5   r6   r   r   r   r   r   r   r   r   r7   s              r$   "test_import_protocols_from_packagez=TestAC6PackageLevelImports.test_import_protocols_from_package  r9   r&   c                   ddl m}m}m}m}m} d}||k(  }|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
}||k(  }|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}||k(  }|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}||k(  }|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}||k(  }|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}}y )Nr   r;   r   rV   r   r=   r   r   r   r  r@   r  r<   r  r>   r  r?   )rH  r<   r=   r>   r?   r@   r   r   r   r   r   r   r   r   rA   s
             r$   "test_import_constants_from_packagez=TestAC6PackageLevelImports.test_import_constants_from_package  s   	
 	
 !$#}####}######}###}##########%))!T))))!T))))))!)))!)))T)))))))*--&#----&#------&---&---#-------%++!V++++!V++++++!+++!+++V+++++++(++$++++$++++++$+++$++++++++++r&   NrC   )rF   rG   rH   rI   rI  rK  rM  rO  rJ   r&   r$   rF  rF    s    P2*3",r&   rF  )rI   
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   r   r   r   uuidr   r   pytestr   rL   r   r   r   r   r   r   r  r&  r6  rF  rJ   r&   r$   <module>rW     s   ( #        31 31v+" +"f' '<; ;<E EZ> >.!' !'R6 6N. .*; ;<8 8L/, /,r&   