From 89b55230c3be0ba5ecf48c4634f6d04c57c3c3ca Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Fri, 28 Feb 2025 16:37:10 +0100 Subject: [PATCH 1/2] Omit blank figure --- chart_data_extractor/e2b_charts/main.py | 10 +++++++++- .../tests/{graphs => charts}/test_bar.py | 0 chart_data_extractor/tests/charts/test_blank.py | 10 ++++++++++ .../tests/{graphs => charts}/test_box_and_whiskers.py | 0 .../tests/{graphs => charts}/test_categorical_scale.py | 0 .../tests/{graphs => charts}/test_datetime_scale.py | 0 .../tests/{graphs => charts}/test_line.py | 0 .../tests/{graphs => charts}/test_log_graph.py | 0 .../tests/{graphs => charts}/test_pie.py | 0 .../tests/{graphs => charts}/test_scatter.py | 0 .../tests/{graphs => charts}/test_supergraph.py | 0 .../tests/{graphs => charts}/test_unknown.py | 0 12 files changed, 19 insertions(+), 1 deletion(-) rename chart_data_extractor/tests/{graphs => charts}/test_bar.py (100%) create mode 100644 chart_data_extractor/tests/charts/test_blank.py rename chart_data_extractor/tests/{graphs => charts}/test_box_and_whiskers.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_categorical_scale.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_datetime_scale.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_line.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_log_graph.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_pie.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_scatter.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_supergraph.py (100%) rename chart_data_extractor/tests/{graphs => charts}/test_unknown.py (100%) diff --git a/chart_data_extractor/e2b_charts/main.py b/chart_data_extractor/e2b_charts/main.py index 7e748add..7f51dbbd 100644 --- a/chart_data_extractor/e2b_charts/main.py +++ b/chart_data_extractor/e2b_charts/main.py @@ -88,6 +88,14 @@ def get_chart_from_ax( return chart +def is_figure_blank(axes: List[Axes]) -> bool: + """Check if a Matplotlib figure is blank (has no user-added artists).""" + for ax in axes: + if ax.has_data(): + return False # The figure contains user-added data + return True # No data found, figure is blank + + def chart_figure_to_chart(figure: Figure) -> Optional[Chart]: """ This method is used to extract data from the figure object to a dictionary @@ -95,7 +103,7 @@ def chart_figure_to_chart(figure: Figure) -> Optional[Chart]: # Get all Axes objects from the Figure axes = figure.get_axes() - if not axes: + if not axes or is_figure_blank(axes): return elif len(axes) > 1: return SuperChart(figure=figure) diff --git a/chart_data_extractor/tests/graphs/test_bar.py b/chart_data_extractor/tests/charts/test_bar.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_bar.py rename to chart_data_extractor/tests/charts/test_bar.py diff --git a/chart_data_extractor/tests/charts/test_blank.py b/chart_data_extractor/tests/charts/test_blank.py new file mode 100644 index 00000000..5aa77861 --- /dev/null +++ b/chart_data_extractor/tests/charts/test_blank.py @@ -0,0 +1,10 @@ +import matplotlib.pyplot as plt + +from e2b_charts import chart_figure_to_chart +from e2b_charts.charts import BarChart, ChartType + + +def test_blank_chart(): + figure, _ = plt.subplots() + chart = chart_figure_to_chart(figure) + assert chart is None diff --git a/chart_data_extractor/tests/graphs/test_box_and_whiskers.py b/chart_data_extractor/tests/charts/test_box_and_whiskers.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_box_and_whiskers.py rename to chart_data_extractor/tests/charts/test_box_and_whiskers.py diff --git a/chart_data_extractor/tests/graphs/test_categorical_scale.py b/chart_data_extractor/tests/charts/test_categorical_scale.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_categorical_scale.py rename to chart_data_extractor/tests/charts/test_categorical_scale.py diff --git a/chart_data_extractor/tests/graphs/test_datetime_scale.py b/chart_data_extractor/tests/charts/test_datetime_scale.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_datetime_scale.py rename to chart_data_extractor/tests/charts/test_datetime_scale.py diff --git a/chart_data_extractor/tests/graphs/test_line.py b/chart_data_extractor/tests/charts/test_line.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_line.py rename to chart_data_extractor/tests/charts/test_line.py diff --git a/chart_data_extractor/tests/graphs/test_log_graph.py b/chart_data_extractor/tests/charts/test_log_graph.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_log_graph.py rename to chart_data_extractor/tests/charts/test_log_graph.py diff --git a/chart_data_extractor/tests/graphs/test_pie.py b/chart_data_extractor/tests/charts/test_pie.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_pie.py rename to chart_data_extractor/tests/charts/test_pie.py diff --git a/chart_data_extractor/tests/graphs/test_scatter.py b/chart_data_extractor/tests/charts/test_scatter.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_scatter.py rename to chart_data_extractor/tests/charts/test_scatter.py diff --git a/chart_data_extractor/tests/graphs/test_supergraph.py b/chart_data_extractor/tests/charts/test_supergraph.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_supergraph.py rename to chart_data_extractor/tests/charts/test_supergraph.py diff --git a/chart_data_extractor/tests/graphs/test_unknown.py b/chart_data_extractor/tests/charts/test_unknown.py similarity index 100% rename from chart_data_extractor/tests/graphs/test_unknown.py rename to chart_data_extractor/tests/charts/test_unknown.py From 6262c4de1b805499f5ef533caed31c6bb32af82a Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Fri, 28 Feb 2025 16:49:39 +0100 Subject: [PATCH 2/2] Add changeset --- .changeset/red-onions-check.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/red-onions-check.md diff --git a/.changeset/red-onions-check.md b/.changeset/red-onions-check.md new file mode 100644 index 00000000..6ebd7099 --- /dev/null +++ b/.changeset/red-onions-check.md @@ -0,0 +1,5 @@ +--- +'@e2b/data-extractor': patch +--- + +Omit blank figures