async def input_set(self, record: Record) -> List[Input]: return ([ Input( value=record.feature(feature.name), definition=Definition( name=feature.name, primitive=str(feature.dtype()), ), ) for feature in self.parent.config.features ] + [ Input( value=value, definition=self.parent.config.dataflow.definitions[name], ) for value, name in self.parent.config.inputs ] + ([] if not self.parent.config.length else [ Input( value=await self.sctx.length(), definition=Definition( name=self.parent.config.length, primitive="int", ), ) ]) + ([] if not self.parent.config.record_def else [ Input( value=record.key, definition=Definition( name=self.parent.config.record_def, primitive="string", ), ) ]))
async def test_predict(self): records: Dict[str, Record] = { record.key: record.export() async for record in self.sctx.records() } async with self.post(f"/model/{self.mlabel}/predict/0", json=records) as r: i: int = 0 response = await r.json() for key, record_data in response["records"].items(): record = Record(key, data=record_data) self.assertEqual(int(record.key), i) self.assertEqual( record.feature("by_ten"), record.prediction("Salary").value / 10, ) self.assertEqual(float(record.key), record.prediction("Salary").confidence) i += 1 self.assertEqual(i, self.num_records)