Пример #1
0
    def test_dict_unflatten(self):
        """Test passing a spec as keywords."""
        st._arrow_vega_lite_chart(df1,
                                  x="foo",
                                  boink_boop=100,
                                  baz={"boz": "booz"})

        proto = self.get_delta_from_queue().new_element.arrow_vega_lite_chart
        pd.testing.assert_frame_equal(bytes_to_data_frame(proto.data.data),
                                      df1,
                                      check_dtype=False)
        self.assertDictEqual(
            json.loads(proto.spec),
            merge_dicts(
                autosize_spec,
                {
                    "baz": {
                        "boz": "booz"
                    },
                    "boink": {
                        "boop": 100
                    },
                    "encoding": {
                        "x": "foo"
                    },
                },
            ),
        )
Пример #2
0
    def test_st_arrow_table(self):
        """Test st._arrow_table."""
        from streamlit.type_util import bytes_to_data_frame

        df = pd.DataFrame([[1, 2], [3, 4]], columns=["col1", "col2"])

        st._arrow_table(df)

        proto = self.get_delta_from_queue().new_element.arrow_table
        pd.testing.assert_frame_equal(bytes_to_data_frame(proto.data), df)
Пример #3
0
    def test_st_arrow_dataframe(self):
        """Test st._arrow_dataframe."""
        from streamlit.type_util import bytes_to_data_frame

        df = pd.DataFrame({"one": [1, 2], "two": [11, 22]})

        st._arrow_dataframe(df)

        proto = self.get_delta_from_queue().new_element.arrow_data_frame
        pd.testing.assert_frame_equal(bytes_to_data_frame(proto.data), df)
Пример #4
0
    def test_data_in_spec(self):
        """Test passing data=df inside the spec."""
        st._arrow_vega_lite_chart({"mark": "rect", "data": df1})

        proto = self.get_delta_from_queue().new_element.arrow_vega_lite_chart
        pd.testing.assert_frame_equal(bytes_to_data_frame(proto.data.data),
                                      df1,
                                      check_dtype=False)
        self.assertDictEqual(json.loads(proto.spec),
                             merge_dicts(autosize_spec, {"mark": "rect"}))
Пример #5
0
    def test_deltas_that_melt_dataframes(self):
        deltas = self._get_deltas_that_melt_dataframes()

        for delta in deltas:
            element = delta(DATAFRAME)
            element._arrow_add_rows(NEW_ROWS)

            proto = bytes_to_data_frame(
                self.get_delta_from_queue().arrow_add_rows.data.data)

            pd.testing.assert_frame_equal(proto, MELTED_DATAFRAME)
Пример #6
0
    def test_display_values(self):
        df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], )
        styler = df.style.format("{:.2%}")
        st._arrow_table(styler)

        expected = pd.DataFrame([["100.00%", "200.00%", "300.00%"],
                                 ["400.00%", "500.00%", "600.00%"]], )

        proto = self.get_delta_from_queue().new_element.arrow_table
        pd.testing.assert_frame_equal(
            bytes_to_data_frame(proto.styler.display_values), expected)
Пример #7
0
    def test_no_args_add_rows(self):
        """Test that you can call _arrow_add_rows on a arrow_vega_lite_chart (without data)."""
        chart = st._arrow_vega_lite_chart({"mark": "rect"})

        proto = self.get_delta_from_queue().new_element.arrow_vega_lite_chart
        self.assertEqual(proto.HasField("data"), False)

        chart._arrow_add_rows(df1)

        proto = self.get_delta_from_queue().arrow_add_rows
        pd.testing.assert_frame_equal(
            bytes_to_data_frame(proto.data.data), df1, check_dtype=False
        )
Пример #8
0
    def test_arrow_area_chart(self):
        """Test st._arrow_area_chart."""
        df = pd.DataFrame([[20, 30, 50]], columns=["a", "b", "c"])
        EXPECTED_DATAFRAME = pd.DataFrame(
            [[0, "a", 20], [0, "b", 30], [0, "c", 50]],
            index=[0, 1, 2],
            columns=["index", "variable", "value"],
        )

        st._arrow_area_chart(df)

        proto = self.get_delta_from_queue().new_element.arrow_vega_lite_chart
        chart_spec = json.loads(proto.spec)
        self.assertEqual(chart_spec["mark"], "area")
        pd.testing.assert_frame_equal(
            bytes_to_data_frame(proto.datasets[0].data.data),
            EXPECTED_DATAFRAME,
        )
Пример #9
0
    def test_arrow_line_chart_with_generic_index(self):
        """Test st._arrow_line_chart with a generic index."""
        df = pd.DataFrame([[20, 30, 50]], columns=["a", "b", "c"])
        df.set_index("a", inplace=True)
        EXPECTED_DATAFRAME = pd.DataFrame(
            [[20, "b", 30], [20, "c", 50]],
            index=[0, 1],
            columns=["a", "variable", "value"],
        )

        st._arrow_line_chart(df)

        proto = self.get_delta_from_queue().new_element.arrow_vega_lite_chart
        chart_spec = json.loads(proto.spec)
        self.assertEqual(chart_spec["mark"], "line")
        pd.testing.assert_frame_equal(
            bytes_to_data_frame(proto.datasets[0].data.data),
            EXPECTED_DATAFRAME,
        )
Пример #10
0
    def test_st_arrow_line_chart(self):
        """Test st._arrow_line_chart."""
        from streamlit.type_util import bytes_to_data_frame

        df = pd.DataFrame([[10, 20, 30]], columns=["a", "b", "c"])
        EXPECTED_DATAFRAME = pd.DataFrame(
            [[0, "a", 10], [0, "b", 20], [0, "c", 30]],
            index=[0, 1, 2],
            columns=["index", "variable", "value"],
        )
        st._arrow_line_chart(df, width=640, height=480)

        proto = self.get_delta_from_queue().new_element.arrow_vega_lite_chart
        chart_spec = json.loads(proto.spec)

        self.assertEqual(chart_spec["mark"], "line")
        self.assertEqual(chart_spec["width"], 640)
        self.assertEqual(chart_spec["height"], 480)
        pd.testing.assert_frame_equal(
            bytes_to_data_frame(proto.datasets[0].data.data),
            EXPECTED_DATAFRAME,
        )
Пример #11
0
    def test_altair_chart(self):
        """Test that it can be called with args."""
        df = pd.DataFrame([["A", "B", "C", "D"], [28, 55, 43, 91]],
                          index=["a", "b"]).T
        chart = alt.Chart(df).mark_bar().encode(x="a", y="b")
        EXPECTED_DATAFRAME = pd.DataFrame({
            "a": ["A", "B", "C", "D"],
            "b": [28, 55, 43, 91],
        })

        st._arrow_altair_chart(chart)

        proto = self.get_delta_from_queue().new_element.arrow_vega_lite_chart

        self.assertEqual(proto.HasField("data"), False)
        self.assertEqual(len(proto.datasets), 1)
        pd.testing.assert_frame_equal(
            bytes_to_data_frame(proto.datasets[0].data.data),
            EXPECTED_DATAFRAME)

        spec_dict = json.loads(proto.spec)
        self.assertEqual(
            spec_dict["encoding"],
            {
                "y": {
                    "field": "b",
                    "type": "quantitative"
                },
                "x": {
                    "field": "a",
                    "type": "nominal"
                },
            },
        )
        self.assertEqual(spec_dict["data"], {"name": proto.datasets[0].name})
        self.assertEqual(spec_dict["mark"], "bar")
        self.assertTrue("config" in spec_dict)
        self.assertTrue("encoding" in spec_dict)
Пример #12
0
    def test_dataframe_data(self):
        df = mock_data_frame()
        st._arrow_table(df)

        proto = self.get_delta_from_queue().new_element.arrow_table
        pd.testing.assert_frame_equal(bytes_to_data_frame(proto.data), df)