コード例 #1
0
 async def update(self, repo: Repo):
     db = self.parent.db
     # Store feature data
     feature_cols = self.parent.FEATURE_COLS
     feature_data = OrderedDict.fromkeys(feature_cols)
     feature_data.update(repo.features(feature_cols))
     await db.execute(
         "INSERT OR REPLACE INTO features (src_url, "
         + ", ".join(feature_cols)
         + ") "
         "VALUES(?, " + ", ".join("?" * len(feature_cols)) + ")",
         [repo.src_url] + list(feature_data.values()),
     )
     # Store prediction
     prediction = repo.prediction()
     if prediction:
         prediction_cols = self.parent.PREDICTION_COLS
         prediction_data = OrderedDict.fromkeys(prediction_cols)
         prediction_data.update(prediction.dict())
         await db.execute(
             "INSERT OR REPLACE INTO prediction (src_url, "
             + ", ".join(prediction_cols)
             + ") "
             "VALUES(?, " + ", ".join("?" * len(prediction_cols)) + ")",
             [repo.src_url] + list(prediction_data.values()),
         )
     # Store classification
     if repo.classified():
         await db.execute(
             "INSERT OR REPLACE INTO classification "
             "(src_url, classification) VALUES(?, ?)",
             [repo.src_url, repo.classification()],
         )
コード例 #2
0
 async def update(self, repo: Repo):
     db = self.parent.db
     # Store feature data
     feature_cols = self.parent.FEATURE_COLS
     feature_data = OrderedDict.fromkeys(feature_cols)
     feature_data.update(repo.features(feature_cols))
     await db.execute(
         "INSERT OR REPLACE INTO features (key, " +
         ", ".join(feature_cols) + ") "
         "VALUES(?, " + ", ".join("?" * len(feature_cols)) + ")",
         [repo.key] + list(feature_data.values()),
     )
     # Store prediction
     try:
         prediction = repo.prediction("target_name")
         prediction_cols = self.parent.PREDICTION_COLS
         prediction_data = OrderedDict.fromkeys(prediction_cols)
         prediction_data.update(prediction.dict())
         await db.execute(
             "INSERT OR REPLACE INTO prediction (key, " +
             ", ".join(prediction_cols) + ") "
             "VALUES(?, " + ", ".join("?" * len(prediction_cols)) + ")",
             [repo.key] + list(prediction_data.values()),
         )
     except KeyError:
         pass
コード例 #3
0
class TestRepo(unittest.TestCase):
    def setUp(self):
        self.null = Repo("null")
        self.full = Repo(
            "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 = RepoPrediction()
        self.assertIn("Undetermined", str(self.full))
        self.full.data.prediction = RepoPrediction(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 = Repo("null")
        null.merge(self.full)
        self.assertIn("half", null.extra)
        self.assertTrue(null.extra["half"])

    def test_src_url(self):
        return self.full.data.src_url

    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.assertNotEqual(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
        old_last_updated = self.full.data.last_updated
        self.full.predicted("feed", 1.00)
        self.assertNotEqual(old_prediction, self.full.data.prediction)
        self.assertNotEqual(old_last_updated, self.full.data.last_updated)

    def test_prediction(self):
        self.full.predicted("feed", 1.00)
        self.assertTrue(self.full.prediction())
コード例 #4
0
ファイル: test_repo.py プロジェクト: sudharsana-kjl/dffml
class TestRepo(unittest.TestCase):

    def setUp(self):
        self.null = Repo('null')
        self.full = Repo('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 = RepoPrediction()
        self.assertIn('Undetermined', str(self.full))
        self.full.data.prediction = RepoPrediction(classification='Good')
        self.assertIn('Good', str(self.full))
        self.full.data.classification = 'Great'
        self.assertIn('Great', 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 = Repo('null')
        null.merge(self.full)
        self.assertIn('half', null.extra)
        self.assertTrue(null.extra['half'])

    def test_src_url(self):
        return self.full.data.src_url

    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.assertNotEqual(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
        old_last_updated = self.full.data.last_updated
        self.full.predicted('feed', 1.00)
        self.assertNotEqual(old_prediction, self.full.data.prediction)
        self.assertNotEqual(old_last_updated, self.full.data.last_updated)

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

    def test_classify(self):
        self.full.classify('face')
        self.assertEqual(self.full.data.classification, 'face')

    def test_classified(self):
        self.full.classify('')
        self.assertFalse(self.full.classified())
        self.full.classify(True)
        self.assertTrue(self.full.classified())

    def test_classification(self):
        self.full.classify(True)
        self.assertTrue(self.full.classification())
        self.full.classify('')
        with self.assertRaisesRegex(ValueError, 'Unclassified'):
            self.full.classification()