diff --git a/dash/dash.py b/dash/dash.py index 386e66f243..b70709b306 100644 --- a/dash/dash.py +++ b/dash/dash.py @@ -205,9 +205,10 @@ class Dash: for pages of a multi-page app. Default ``'pages'``. :type pages_folder: string - :param use_pages: Default False, or True if you set a non-default ``pages_folder``. - When True, the ``pages`` feature for multi-page apps is enabled. - :type pages: boolean + :param use_pages: When True, the ``pages`` feature for multi-page apps is + enabled. If you set a non-default ``pages_folder`` this will be inferred + to be True. Default `None`. + :type use_pages: boolean :param assets_url_path: The local urls for assets will be: ``requests_pathname_prefix + assets_url_path + '/' + asset_path`` @@ -341,7 +342,7 @@ def __init__( # pylint: disable=too-many-statements server=True, assets_folder="assets", pages_folder="pages", - use_pages=False, + use_pages=None, assets_url_path="assets", assets_ignore="", assets_external_path=None, @@ -439,7 +440,7 @@ def __init__( # pylint: disable=too-many-statements _pages.CONFIG = self.config self.pages_folder = str(pages_folder) - self.use_pages = True if pages_folder != "pages" else use_pages + self.use_pages = (pages_folder != "pages") if use_pages is None else use_pages # keep title as a class property for backwards compatibility self.title = title diff --git a/tests/unit/pages/test_pages_config.py b/tests/unit/pages/test_pages_config.py index cf6d92d501..958580422d 100644 --- a/tests/unit/pages/test_pages_config.py +++ b/tests/unit/pages/test_pages_config.py @@ -65,17 +65,26 @@ def test_pages_missing_path_config(empty_environ, pages_folder, use_pages, expec @pytest.mark.parametrize( - "pages_folder", + "use_pages, pages_folder", [ - "custom_pages", - Path("custom_pages"), - str(THIS_DIR / "custom_pages"), - THIS_DIR / "custom_pages", - str(THIS_DIR / "sub_dir" / "custom_pages"), - THIS_DIR / "sub_dir" / "custom_pages", + (True, "custom_pages"), + (True, Path("custom_pages")), + (True, str(THIS_DIR / "custom_pages")), + (True, THIS_DIR / "custom_pages"), + (True, str(THIS_DIR / "sub_dir" / "custom_pages")), + (True, THIS_DIR / "sub_dir" / "custom_pages"), + (None, "custom_pages"), + (None, "pages"), + (False, "custom_pages"), ], ) -def test_pages_folder_app_config(empty_environ, clear_pages_state, pages_folder): - app = Dash(__name__, pages_folder=pages_folder) - assert app.use_pages +def test_pages_folder_app_config( + empty_environ, clear_pages_state, use_pages, pages_folder +): + app = Dash(__name__, use_pages=use_pages, pages_folder=pages_folder) + if use_pages is None: + expected_use_pages = bool(pages_folder != "pages") + elif use_pages in (True, False): + expected_use_pages = use_pages + assert app.use_pages == expected_use_pages assert app.pages_folder == str(pages_folder)