def testNullsPd(self): pdf = PanDatFactory(table=[[], ["field one", "field two"]]) for f in ["field one", "field two"]: pdf.set_data_type("table", f, nullable=True) dat = pdf.PanDat( table={ "field one": [None, 200, 0, 300, 400], "field two": [100, 109, 300, None, 0] }) schema = test_schema + "_bool_defaults_pd" pdf.pgsql.write_schema(self.engine, schema, include_ancillary_info=False) pdf.pgsql.write_data(dat, self.engine, schema) dat_1 = pdf.pgsql.create_pan_dat(self.engine, schema) self.assertTrue( pdf._same_data(dat, dat_1, nans_are_same_for_data_rows=True)) pdf = PanDatFactory(table=[["field one"], ["field two"]]) for f in ["field one", "field two"]: pdf.set_data_type("table", f, max=float("inf"), inclusive_max=True) pdf.set_infinity_io_flag(None) dat_inf = pdf.PanDat( table={ "field one": [float("inf"), 200, 0, 300, 400], "field two": [100, 109, 300, float("inf"), 0] }) dat_1 = pdf.pgsql.create_pan_dat(self.engine, schema) self.assertTrue(pdf._same_data(dat_inf, dat_1)) pdf.pgsql.write_data(dat_inf, self.engine, schema) dat_1 = pdf.pgsql.create_pan_dat(self.engine, schema) self.assertTrue(pdf._same_data(dat_inf, dat_1)) pdf = PanDatFactory(table=[["field one"], ["field two"]]) for f in ["field one", "field two"]: pdf.set_data_type("table", f, min=-float("inf"), inclusive_min=True) pdf.set_infinity_io_flag(None) dat_1 = pdf.pgsql.create_pan_dat(self.engine, schema) self.assertFalse(pdf._same_data(dat_inf, dat_1)) dat_inf = pdf.PanDat( table={ "field one": [-float("inf"), 200, 0, 300, 400], "field two": [100, 109, 300, -float("inf"), 0] }) self.assertTrue(pdf._same_data(dat_inf, dat_1))
def test_diet_pd(self): if not self.can_run: return schema = "test_pg_diet" tdf = diet_schema pdf = PanDatFactory.create_from_full_schema( tdf.schema(include_ancillary_info=True)) pdf.set_infinity_io_flag(1e12) pgpf = pdf.pgsql pan_dat = pan_dat_maker(tdf.schema(), diet_dat) pgpf.write_schema(self.engine, schema, include_ancillary_info=False) pgpf.write_data(pan_dat, self.engine, schema) pg_pan_dat = pgpf.create_pan_dat(self.engine, schema) self.assertTrue(pdf._same_data(pan_dat, pg_pan_dat)) pdf.set_infinity_io_flag(None) pg_pan_dat_none_inf = pdf.pgsql.create_pan_dat(self.engine, schema) self.assertFalse(pdf._same_data(pan_dat, pg_pan_dat_none_inf)) pg_pan_dat_none_inf.categories.loc[pg_pan_dat_none_inf.categories["Name"] == "protein", "Max Nutrition"] = \ float("inf") self.assertTrue(pdf._same_data(pan_dat, pg_pan_dat_none_inf)) pdf.set_infinity_io_flag("N/A") dat2 = diet_schema.copy_tic_dat(diet_dat) dat2.foods["za"] = dat2.foods.pop("pizza") dat2 = pan_dat_maker(tdf.schema(), dat2) pgpf.write_data(dat2, self.engine, schema, pre_existing_rows={"foods": "append"}) dat3 = pgpf.create_pan_dat(self.engine, schema) self.assertTrue(set(pdf.find_duplicates(dat3)) == {'foods'}) self.assertTrue(set(dat3.foods["Name"]).issuperset(dat2.foods["Name"])) self.assertTrue( set(dat3.foods["Name"]).issuperset(pan_dat.foods["Name"])) self.assertTrue( set(dat3.foods["Name"]).difference(pan_dat.foods["Name"]) == {'za'}) self.assertTrue( set(dat3.foods["Name"]).difference(dat2.foods["Name"]) == {'pizza'}) pgpf.write_data(dat2, self.engine, schema, pre_existing_rows={"nutrition_quantities": "append"}) dat4 = pgpf.create_pan_dat(self.engine, schema) self.assertTrue( set(pdf.find_duplicates(dat4)) == {'nutrition_quantities'} and not pdf.find_duplicates(dat2)) dat4.nutrition_quantities = dat4.nutrition_quantities[:36] self.assertFalse(pdf.find_duplicates(dat4)) self.assertTrue(pdf._same_data(dat2, dat4)) test_schema_2 = schema + "_none_inf" pdf.set_infinity_io_flag(None) pgpf.write_schema(self.engine, test_schema_2) pgpf.write_data(pan_dat, self.engine, test_schema_2) pdf.set_infinity_io_flag("N/A") pg_pan_dat = pgpf.create_pan_dat(self.engine, test_schema_2) self.assertFalse(pdf._same_data(pan_dat, pg_pan_dat)) pg_pan_dat.categories.loc[pg_pan_dat.categories["Name"] == "protein", "Max Nutrition"] = float("inf") self.assertTrue(pdf._same_data(pan_dat, pg_pan_dat)) pdf.set_infinity_io_flag(None) pg_pan_dat_none_inf = pgpf.create_pan_dat(self.engine, test_schema_2) self.assertTrue(pdf._same_data(pan_dat, pg_pan_dat_none_inf)) pdf_ = PanDatFactory(**diet_schema.schema()) # doesnt have data types pdf_.set_infinity_io_flag(None) pgpf_null_inf = pdf_.pgsql pg_pan_dat_none_inf = pgpf_null_inf.create_pan_dat( self.engine, test_schema_2) self.assertFalse(pdf._same_data(pan_dat, pg_pan_dat_none_inf)) self.assertTrue( math.isnan(pg_pan_dat_none_inf.categories[ pg_pan_dat_none_inf.categories["Name"] == "protein"] ["Max Nutrition"][0]))