Exemple #1
0
 async def record(self, key: str):
     db = self.parent.db
     record = Record(key)
     # Get features
     features = await db.execute(
         "SELECT " + ", ".join(self.parent.FEATURE_COLS) + " "
         "FROM features WHERE key=?",
         (record.key, ),
     )
     features = await features.fetchone()
     if features is not None:
         record.evaluated(features)
     # Get prediction
     prediction = await db.execute(
         "SELECT * FROM prediction WHERE "
         "key=?", (record.key, ))
     prediction = await prediction.fetchone()
     if prediction is not None:
         record.predicted("target_name", prediction["value"],
                          prediction["confidence"])
     return record
Exemple #2
0
class TestRecord(unittest.TestCase):
    def setUp(self):
        self.null = Record("null")
        self.full = Record(
            "full",
            data=dict(
                features=dict(dead="beef"),
                extra=dict(extra="read all about it"),
            ),
            extra=dict(half=True),
        )

    def test_dict(self):
        data = self.full.dict()
        self.assertIn("extra", data)

    def test_repr(self):
        repr(self.full)

    def test_str(self):
        self.full.prediction = RecordPrediction()
        self.assertIn("Undetermined", str(self.full))
        self.full.data.prediction = {
            "Prediction": RecordPrediction(value="Good")
        }
        self.assertIn("Good", str(self.full))
        self.full.extra.update(dict(hi=5))
        self.assertIn("5", str(self.full))
        self.full.extra = dict()
        self.assertNotIn("5", str(self.full))

    def test_merge(self):
        null = Record("null")
        null.merge(self.full)
        self.assertIn("half", null.extra)
        self.assertTrue(null.extra["half"])

    def test_key(self):
        return self.full.data.key

    def test_evaluated(self):
        old_last_updated = self.full.data.last_updated
        results = {"new": "feature"}
        self.full.evaluated({"feed": "face"})
        self.assertIn("feed", self.full.data.features)
        self.assertEqual("face", self.full.data.features["feed"])
        self.full.evaluated(results, overwrite=True)
        self.assertEqual(self.full.data.features, results)
        self.assertLessEqual(old_last_updated, self.full.data.last_updated)

    def test_features(self):
        self.assertIn("dead", self.full.features())
        self.assertIn("dead", self.full.features(["dead"]))
        self.assertFalse(self.full.features(["dead", "beaf"]))

    def test_predicted(self):
        old_prediction = self.full.data.prediction.copy()
        old_last_updated = self.full.data.last_updated
        self.full.predicted("target_name", "feed", 1.00)
        self.assertNotEqual(old_prediction, self.full.data.prediction)
        self.assertLessEqual(old_last_updated, self.full.data.last_updated)

    def test_prediction(self):
        self.full.predicted("target_name", "feed", 1.00)
        self.assertTrue(self.full.prediction("target_name"))