Esempio n. 1
0
 def test_parameters(self):
     core_path = os.path.join(_scratchDir, "parameters")
     pdf = PanDatFactory(parameters=[["Key"], ["Value"]])
     pdf.add_parameter("Something", 100)
     pdf.add_parameter("Different",
                       'boo',
                       strings_allowed='*',
                       number_allowed=False)
     dat = TicDatFactory(**pdf.schema()).TicDat(
         parameters=[["Something", float("inf")], ["Different", "inf"]])
     dat = TicDatFactory(**pdf.schema()).copy_to_pandas(
         dat, drop_pk_columns=False)
     for attr, path in [["sql", core_path + ".db"],
                        ["csv", core_path + "_csv"],
                        ["json", core_path + ".json"],
                        ["xls", core_path + ".xlsx"]]:
         func = "write_directory" if attr == "csv" else "write_file"
         getattr(getattr(pdf, attr), func)(dat, path)
         dat_1 = getattr(pdf, attr).create_pan_dat(path)
         self.assertTrue(pdf._same_data(dat, dat_1))
     core_path = os.path.join(_scratchDir, "parameters_two")
     dat = TicDatFactory(**pdf.schema()).TicDat(
         parameters=[["Something", float("inf")], ["Different", "05701"]])
     dat = TicDatFactory(**pdf.schema()).copy_to_pandas(
         dat, drop_pk_columns=False)
     for attr, path in [["sql", core_path + ".db"],
                        ["csv", core_path + "_csv"],
                        ["xls", core_path + ".xlsx"],
                        ["json", core_path + ".json"]]:
         func = "write_directory" if attr == "csv" else "write_file"
         getattr(getattr(pdf, attr), func)(dat, path)
         dat_1 = getattr(pdf, attr).create_pan_dat(path)
         self.assertTrue(pdf._same_data(dat, dat_1))
Esempio n. 2
0
    def test_datetime(self):
        core_path = os.path.join(_scratchDir, "parameters")
        pdf = PanDatFactory(table_with_stuffs=[["field one"], ["field two"]],
                            parameters=[["a"], ["b"]])
        pdf.add_parameter("p1", "Dec 15 1970", datetime=True)
        pdf.add_parameter("p2", None, datetime=True, nullable=True)
        pdf.set_data_type("table_with_stuffs", "field one", datetime=True)
        pdf.set_data_type("table_with_stuffs",
                          "field two",
                          datetime=True,
                          nullable=True)
        dat = TicDatFactory(**pdf.schema()).TicDat(
            table_with_stuffs=[[dateutil.parser.parse("July 11 1972"), None],
                               [
                                   datetime.datetime.now(),
                                   dateutil.parser.parse("Sept 11 2011")
                               ]],
            parameters=[["p1", "7/11/1911"], ["p2", None]])
        dat = TicDatFactory(**pdf.schema()).copy_to_pandas(
            dat, drop_pk_columns=False)
        self.assertFalse(
            pdf.find_data_type_failures(dat)
            or pdf.find_data_row_failures(dat))

        for attr, path in [["csv", core_path + "_csv"],
                           ["xls", core_path + ".xlsx"],
                           ["sql", core_path + ".db"],
                           ["json", core_path + ".json"]]:
            func = "write_directory" if attr == "csv" else "write_file"
            getattr(getattr(pdf, attr), func)(dat, path)
            dat_1 = getattr(pdf, attr).create_pan_dat(path)
            self.assertFalse(pdf._same_data(dat, dat_1))
            self.assertFalse(
                pdf.find_data_type_failures(dat_1)
                or pdf.find_data_row_failures(dat_1))
            dat_1 = pdf.copy_to_tic_dat(dat_1)
            self.assertTrue(set(dat_1.parameters) == {'p1', 'p2'})
            self.assertTrue(
                isinstance(dat_1.parameters["p1"]["b"],
                           (datetime.datetime, numpy.datetime64))
                and not pd.isnull(dat_1.parameters["p1"]["b"]))
            self.assertTrue(pd.isnull(dat_1.parameters["p2"]["b"]))
            self.assertTrue(
                all(
                    isinstance(_, (datetime.datetime,
                                   numpy.datetime64)) and not pd.isnull(_)
                    for _ in dat_1.table_with_stuffs))
            self.assertTrue(
                all(
                    isinstance(_, (datetime.datetime, numpy.datetime64))
                    or _ is None or utils.safe_apply(math.isnan)(_)
                    for v in dat_1.table_with_stuffs.values()
                    for _ in v.values()))
            self.assertTrue({
                pd.isnull(_)
                for v in dat_1.table_with_stuffs.values() for _ in v.values()
            } == {True, False})
Esempio n. 3
0
 def make_pdf():
     pdf = PanDatFactory(data_table = [["a"], ["b", "c"]],
                         parameters = [["a"], ["b"]])
     pdf.add_parameter("Something", 100, max=100, inclusive_max=True)
     pdf.add_parameter("Another thing", 5, must_be_int=True)
     pdf.add_parameter("Untyped thing", "whatever", enforce_type_rules=False)
     pdf.add_parameter("Last", 'boo', number_allowed=False, strings_allowed='*')
     return PanDatFactory.create_from_full_schema(pdf.schema(True))