Exemplo n.º 1
0
    def __init__(
        self: Column[T],
        name: str,
        data: Optional[list[T]] = None,
        index: Optional[list] = None,
        dtype: Optional[T] = None,
    ) -> None:
        self.name = name
        if data is not None:
            if issubclass(type(data), DataBackend):
                self._data_backend = data
            else:
                self._data_backend = PandasBackend({name: data}, index=index)
            self.dtype = (
                self.infer_dtype(self.name, self._data_backend)
                if dtype is None
                else DataType(dtype)
            )
        else:
            self._data_backend = PandasBackend(index=index)
            self.dtype = Object

        if data is not None:
            self._validate_column()
            self.loc = Column._LocIndexer[T](self)
            self.iloc = Column._ILocIndexer[T](self)
Exemplo n.º 2
0
    def test_lt(self) -> None:
        expected = PandasBackend({"a": ["a"], "b": [1], "c": [True]})
        query = self.data_backend["b"] < 2
        queried = self.data_backend.query(query)
        assert_that(queried.equals(expected), equal_to(True))

        test = PandasBackend({"b": [2]})
        query = self.data_backend < test
        queried = self.data_backend.query(query)
        assert_that(queried.equals(expected), equal_to(True))
Exemplo n.º 3
0
    def test_equals(self) -> None:
        test = PandasBackend(
            {"a": ["a", "b", "c"], "b": [1, 2, 3], "c": [True, False, True]}
        )
        assert_that(self.data_backend.equals(test), equal_to(True))

        test = PandasBackend(
            {"a": ["a", "b", "d"], "b": [1, 2, 3], "c": [True, False, True]}
        )
        assert_that(self.data_backend.equals(test), equal_to(False))
Exemplo n.º 4
0
 def test_concat(self) -> None:
     postfix = PandasBackend({"a": ["d"], "b": [4], "c": [False]})
     new_frame = PandasBackend.concat([self.data_backend, postfix], ignore_index=True)
     expected = PandasBackend(
         {
             "a": ["a", "b", "c", "d"],
             "b": [1, 2, 3, 4],
             "c": [True, False, True, False],
         }
     )
     assert_that(new_frame.equals(expected), equal_to(True))
Exemplo n.º 5
0
 def __init__(
     self: T,
     metadata: Optional[M] = None,
     index: Optional[Iterable] = None,
     **column_data: dict[str, list],
 ) -> None:
     self.metadata = metadata
     if len(column_data) > 0:
         column_data = {str(name): col for name, col in column_data.items()}
         self._data_backend = PandasBackend(column_data, index=index)
         self._validate_data_frame()
     else:
         self._data_backend = PandasBackend(index=index)
     self._compile()
Exemplo n.º 6
0
    def test_ge(self) -> None:
        expected = PandasBackend({
            "a": ["b", "c"],
            "b": [2, 3],
            "c": [False, True]
        })
        query = self.data_backend["b"] >= 2
        queried = self.data_backend.query(query)
        assert_that(queried.equals(expected), equal_to(True))

        test = PandasBackend({"b": [2]})
        query = self.data_backend >= test
        queried = self.data_backend.query(query)
        assert_that(queried.equals(expected), equal_to(True))
Exemplo n.º 7
0
    def test_eq(self) -> None:
        expected = PandasBackend({"a": ["a"], "b": [1], "c": [True]})
        query = self.data_backend["a"] == "a"
        queried = self.data_backend.query(query)
        assert_that(queried.equals(expected), equal_to(True))

        test = PandasBackend({"a": ["a", "c"], "b": [1, 3]})
        expected = PandasBackend({
            "a": ["a", "c"],
            "b": [1, 3],
            "c": [True, True]
        })
        query = self.data_backend == test
        queried = self.data_backend.query(query)
        assert_that(queried.equals(expected), equal_to(True))
Exemplo n.º 8
0
 def test_drop_indices(self) -> None:
     new_frame = self.data_backend.drop_indices([1])
     expected = PandasBackend(
         {"a": ["a", "c"], "b": [1, 3], "c": [True, True]},
         index=PandasIndex(PIndex([0, 2], name="index"), []),
     )
     assert_that(new_frame.equals(expected), equal_to(True))
Exemplo n.º 9
0
 def test_query(self) -> None:
     query = (ExampleStore.a == "a") | (ExampleStore.b == 3)
     test = self.data_backend.query(query)
     expected = PandasBackend(
         {"a": ["a", "c"], "b": [1, 3], "c": [True, True]},
         index=PandasIndex(PIndex([0, 2], name="index"), []),
     )
     assert_that(test.equals(expected), equal_to(True))
Exemplo n.º 10
0
 def test_getmask(self) -> None:
     test = self.data_backend.getmask([True, False, True])
     expected = PandasBackend(
         {"a": ["a", "c"], "b": [1, 3], "c": [True, True]},
         index=PandasIndex(PIndex([0, 2], name="index"), []),
     )
     repr(expected)
     assert_that(test.equals(expected), equal_to(True))
Exemplo n.º 11
0
 def from_rows(
     cls: Type[T],
     data_rows: list[tuple],
     columns: Optional[list[str]] = None,
     metadata: Optional[M] = None,
 ) -> T:
     if columns is None:
         columns = list(cls._parse_columns().keys())
     else:
         columns = [str(col) for col in columns]
     data = DataFrame.from_records(data_rows, columns=columns)
     return cls.from_backend(PandasBackend(data), metadata)
Exemplo n.º 12
0
 def test_ne(self) -> None:
     test = PandasBackend(
         {"a": ["d", "b", "c"], "b": [1, 4, 3], "c": [True, False, False]}
     )
     expected = DataFrame(
         {
             "a": [True, False, False],
             "b": [False, True, False],
             "c": [False, False, True],
         }
     )
     assert_that((self.data_backend != test).equals(expected), equal_to(True))
Exemplo n.º 13
0
 def test_append(self) -> None:
     try:
         postfix = PandasBackend({"a": ["d"], "b": [4], "c": [False]})
         self.data_backend.append(postfix, ignore_index=True)
         fail("Expected exception")
     except NotImplementedError as e:
         assert_that(
             str(e),
             equal_to(
                 "The current version of Tanuki does not support Store to DB writing"
             ),
         )
Exemplo n.º 14
0
    def setup_method(self) -> None:
        self.test_store = ExampleStore(a=["a", "b", "c"],
                                       b=[1, 2, 3],
                                       c=[True, False, True])
        conn_config = self.sql_db.connection_config()
        self.db = Sqlite3Database(conn_config)
        self.db.insert(ExampleStore.data_token, self.test_store)
        self.db_store = ExampleStore.link(self.db, ExampleStore.data_token)
        self.data_backend = self.db_store._data_backend

        self.test_series0 = PandasBackend(Series({
            "a": "a",
            "b": 1,
            "c": True
        }),
                                          index=[0])
        self.test_series2 = PandasBackend(Series({
            "a": "c",
            "b": 3,
            "c": True
        }),
                                          index=[2])
Exemplo n.º 15
0
    def test_equals(self) -> None:
        test = DatabaseBackend(ExampleStore, self.db, ExampleStore.data_token)
        assert_that(self.data_backend.equals(test), equal_to(True))

        newBackend = self.data_backend[ExampleStore.a]
        test = DatabaseBackend(ExampleStore, self.db, ExampleStore.data_token)
        assert_that(newBackend.equals(test), equal_to(False))

        test = DatabaseBackend(ExampleStore, self.db, ExampleStore.data_token,
                               None, ["a"])
        assert_that(self.data_backend.equals(test[ExampleStore.a]),
                    equal_to(False))

        test = PandasBackend({
            "a": ["a", "b", "d"],
            "b": [1, 2, 3],
            "c": [True, False, True]
        })
        assert_that(self.data_backend.equals(test), equal_to(False))
Exemplo n.º 16
0
 def from_pandas(cls: Type[T],
                 data: Union[Series, DataFrame],
                 metadata: Optional[M] = None) -> T:
     return cls.from_backend(PandasBackend(data), metadata)
Exemplo n.º 17
0
 def test_getitem(self) -> None:
     expected = PandasBackend({"b": [1, 2, 3]})
     assert_that(self.data_backend["b"].equals(expected), equal_to(True))
Exemplo n.º 18
0
 def setup_method(self) -> None:
     self.data_backend = PandasBackend(
         DataFrame({"a": ["a", "b", "c"], "b": [1, 2, 3], "c": [True, False, True]})
     )
     self.test_series0 = PandasBackend(Series({"a": "a", "b": 1, "c": True}), index=[0])
     self.test_series2 = PandasBackend(Series({"a": "c", "b": 3, "c": True}), index=[2])
Exemplo n.º 19
0
 def test_getitems(self) -> None:
     expected = PandasBackend({"a": ["a", "b", "c"], "b": [1, 2, 3]})
     assert_that(
         self.data_backend.getitems(["a", "b"]).equals(expected), equal_to(True)
     )
Exemplo n.º 20
0
 def test_setitem(self) -> None:
     self.data_backend["a"] = ["d", "e", "f"]
     expected = PandasBackend(
         {"a": ["d", "e", "f"], "b": [1, 2, 3], "c": [True, False, True]}
     )
     assert_that(self.data_backend.equals(expected), equal_to(True))