From 41b7f17e44fbead8100c0f97f03bed55e5099414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Del=C3=A8gue?= Date: Mon, 20 Dec 2021 16:53:20 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=AA=B2=20Prevent=20ipynb=20conversion=20u?= =?UTF-8?q?nit=20tests=20from=20interacting=20with=20the=20font=20manager.?= =?UTF-8?q?=20These=20are=20not=20integration=20tests=20!=20There=20is=20n?= =?UTF-8?q?o=20QApplication=20setup=20that=20allows=20you=20to=20retrieve?= =?UTF-8?q?=20theme=20information.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- opencodeblocks/scene/from_ipynb_conversion.py | 17 ++++++++++++----- tests/unit/scene/test_ipynb_conversion.py | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/opencodeblocks/scene/from_ipynb_conversion.py b/opencodeblocks/scene/from_ipynb_conversion.py index 7c2ba094..431b12c2 100644 --- a/opencodeblocks/scene/from_ipynb_conversion.py +++ b/opencodeblocks/scene/from_ipynb_conversion.py @@ -9,10 +9,14 @@ from opencodeblocks.graphics.pyeditor import POINT_SIZE -def ipynb_to_ipyg(data: OrderedDict) -> OrderedDict: - """Convert ipynb data (ipynb file, as ordered dict) into ipyg data (ipyg, as ordered dict)""" +def ipynb_to_ipyg(data: OrderedDict, use_theme_font: bool = True) -> OrderedDict: + """ + Convert ipynb data (ipynb file, as ordered dict) into ipyg data (ipyg, as ordered dict) + - use_theme_font: should the height of the blocks be computed based on the current + font selected. + """ - blocks_data: List[OrderedDict] = get_blocks_data(data) + blocks_data: List[OrderedDict] = get_blocks_data(data, use_theme_font) edges_data: List[OrderedDict] = get_edges_data(blocks_data) return { @@ -21,7 +25,9 @@ def ipynb_to_ipyg(data: OrderedDict) -> OrderedDict: } -def get_blocks_data(data: OrderedDict) -> List[OrderedDict]: +def get_blocks_data( + data: OrderedDict, use_theme_font: bool = True +) -> List[OrderedDict]: """ Get the blocks corresponding to a ipynb file, Returns them in the ipyg ordered dict format @@ -32,7 +38,8 @@ def get_blocks_data(data: OrderedDict) -> List[OrderedDict]: # Get the font metrics to determine the size fo the blocks font = QFont() - font.setFamily(theme_manager().recommended_font_family) + if use_theme_font: + font.setFamily(theme_manager().recommended_font_family) font.setFixedPitch(True) font.setPointSize(POINT_SIZE) fontmetrics = QFontMetrics(font) diff --git a/tests/unit/scene/test_ipynb_conversion.py b/tests/unit/scene/test_ipynb_conversion.py index 82c00b43..88d1a4cf 100644 --- a/tests/unit/scene/test_ipynb_conversion.py +++ b/tests/unit/scene/test_ipynb_conversion.py @@ -15,7 +15,7 @@ class TestIpynbConversion: def test_empty_data(self, mocker: MockerFixture): """should return empty ipyg graph for empty data.""" - check.equal(ipynb_to_ipyg({}), {"blocks": [], "edges": []}) + check.equal(ipynb_to_ipyg({}, False), {"blocks": [], "edges": []}) def test_empty_notebook_data(self, mocker: MockerFixture): """should return expected graph for a real empty notebook data.""" @@ -56,7 +56,7 @@ def real_notebook_conversion_is_coherent(file_path: str): file_path: the path to a .ipynb file """ ipynb_data = load_json(file_path) - ipyg_data = ipynb_to_ipyg(ipynb_data) + ipyg_data = ipynb_to_ipyg(ipynb_data, False) check_conversion_coherence(ipynb_data, ipyg_data)