from __future__ import annotations import unittest from hmne.sft_data import SFTTeacherConfig, generate_sft_rows class SFTDataTests(unittest.TestCase): def test_generate_sft_rows_shape(self) -> None: rows = generate_sft_rows( num_examples=4, seed=123, profile_pools=["easy", "mixed"], config=SFTTeacherConfig(rollout_horizon=2, random_prefix_max=0), ) self.assertEqual(len(rows), 4) for idx, row in enumerate(rows): self.assertIn("prompt", row) self.assertIn("completion", row) self.assertIn("label", row) self.assertIn("metadata", row) self.assertIn("", row["completion"]) self.assertEqual(row["metadata"]["example_index"], idx) self.assertEqual(len(row["metadata"]["candidate_scores"]), 32) self.assertIn("offer", row["label"]) self.assertIn("event_state", row["metadata"]) self.assertIn("trust_scores", row["metadata"]) self.assertIn(f"pool_{row['metadata']['profile_pool']}", row["metadata"]["tags"]) if __name__ == "__main__": unittest.main()