diff --git a/.flake8 b/.flake8 index 0a036140..741cd4a2 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] -exclude = .git,.venv,.venv-*,__pycache__,.local-sessions +exclude = .git,.venv,.venv-*,__pycache__,.local-sessions,dist # Config recommended by black: # https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html#bugbear diff --git a/dp_wizard/app.py b/dp_wizard/app.py index ae78f08e..2ead8015 100644 --- a/dp_wizard/app.py +++ b/dp_wizard/app.py @@ -1,4 +1,4 @@ -from dp_wizard.shiny import make_app +from dp_wizard.ui import make_app from dp_wizard.utils.argparse_helpers import get_cli_info app = make_app(get_cli_info()) diff --git a/dp_wizard/shiny/__init__.py b/dp_wizard/ui/__init__.py similarity index 93% rename from dp_wizard/shiny/__init__.py rename to dp_wizard/ui/__init__.py index 0149d115..2de5e9f7 100644 --- a/dp_wizard/shiny/__init__.py +++ b/dp_wizard/ui/__init__.py @@ -4,14 +4,14 @@ from shiny import App, Inputs, Outputs, Session, reactive, ui from dp_wizard import config_root, package_root -from dp_wizard.shiny.components.icons import tutorial_icon -from dp_wizard.shiny.panels import ( +from dp_wizard.types import AppState, Product +from dp_wizard.ui.components.icons import tutorial_icon +from dp_wizard.ui.panels import ( analysis_panel, dataset_panel, faq_panel, results_panel, ) -from dp_wizard.types import AppState, Product from dp_wizard.utils import config from dp_wizard.utils.argparse_helpers import CLIInfo from dp_wizard.utils.csv_helper import ( @@ -19,8 +19,8 @@ make_demo_csv, ) -_shiny_root = package_root / "shiny" -_assets_root = _shiny_root / "assets" +_ui_root = package_root / "ui" +_assets_root = _ui_root / "assets" assert _assets_root.exists() @@ -51,11 +51,11 @@ def _make_app_ui(cli_info: CLIInfo) -> Tag: return ui.page_bootstrap( ui.head_content( ui.tags.link(rel="icon", href="favicon.ico"), - ui.include_css(_shiny_root / "assets/styles.css"), + ui.include_css(_ui_root / "assets/styles.css"), ui.include_css( - _shiny_root / "vendor/highlight.js/11.11.1/styles/default.min.css" + _ui_root / "vendor/highlight.js/11.11.1/styles/default.min.css" ), - ui.include_js(_shiny_root / "vendor/highlight.js/11.11.1/highlight.min.js"), + ui.include_js(_ui_root / "vendor/highlight.js/11.11.1/highlight.min.js"), ), ui.navset_tab( faq_panel.about_ui(), diff --git a/dp_wizard/shiny/assets/favicon.ico b/dp_wizard/ui/assets/favicon.ico similarity index 100% rename from dp_wizard/shiny/assets/favicon.ico rename to dp_wizard/ui/assets/favicon.ico diff --git a/dp_wizard/shiny/assets/styles.css b/dp_wizard/ui/assets/styles.css similarity index 100% rename from dp_wizard/shiny/assets/styles.css rename to dp_wizard/ui/assets/styles.css diff --git a/dp_wizard/shiny/components/icons.py b/dp_wizard/ui/components/icons.py similarity index 100% rename from dp_wizard/shiny/components/icons.py rename to dp_wizard/ui/components/icons.py diff --git a/dp_wizard/shiny/components/inputs.py b/dp_wizard/ui/components/inputs.py similarity index 96% rename from dp_wizard/shiny/components/inputs.py rename to dp_wizard/ui/components/inputs.py index c64d88de..d30d0c27 100644 --- a/dp_wizard/shiny/components/inputs.py +++ b/dp_wizard/ui/components/inputs.py @@ -2,7 +2,7 @@ from shiny import ui -from dp_wizard.shiny.components.outputs import only_for_screenreader +from dp_wizard.ui.components.outputs import only_for_screenreader def log_slider( diff --git a/dp_wizard/shiny/components/outputs.py b/dp_wizard/ui/components/outputs.py similarity index 97% rename from dp_wizard/shiny/components/outputs.py rename to dp_wizard/ui/components/outputs.py index 5843ebda..343514ec 100644 --- a/dp_wizard/shiny/components/outputs.py +++ b/dp_wizard/ui/components/outputs.py @@ -3,7 +3,7 @@ from htmltools.tags import details, script, small, summary from shiny import ui -from dp_wizard.shiny.components.icons import next_tab_icon, tutorial_icon +from dp_wizard.ui.components.icons import next_tab_icon, tutorial_icon col_widths = { # Controls stay roughly a constant width; diff --git a/dp_wizard/shiny/components/summaries.py b/dp_wizard/ui/components/summaries.py similarity index 96% rename from dp_wizard/shiny/components/summaries.py rename to dp_wizard/ui/components/summaries.py index 50001eef..d963ca66 100644 --- a/dp_wizard/shiny/components/summaries.py +++ b/dp_wizard/ui/components/summaries.py @@ -1,6 +1,7 @@ from shiny.ui import tags -from dp_wizard.shiny.components.icons import ( +from dp_wizard.types import AppState +from dp_wizard.ui.components.icons import ( budget_icon, columns_icon, data_source_icon, @@ -8,7 +9,6 @@ product_icon, unit_of_protection_icon, ) -from dp_wizard.types import AppState _css = "display: block; padding: 0 1em 1em 1em;" diff --git a/dp_wizard/shiny/panels/__init__.py b/dp_wizard/ui/panels/__init__.py similarity index 100% rename from dp_wizard/shiny/panels/__init__.py rename to dp_wizard/ui/panels/__init__.py diff --git a/dp_wizard/shiny/panels/analysis_panel/__init__.py b/dp_wizard/ui/panels/analysis_panel/__init__.py similarity index 97% rename from dp_wizard/shiny/panels/analysis_panel/__init__.py rename to dp_wizard/ui/panels/analysis_panel/__init__.py index 63f965f5..d4d59015 100644 --- a/dp_wizard/shiny/panels/analysis_panel/__init__.py +++ b/dp_wizard/ui/panels/analysis_panel/__init__.py @@ -5,24 +5,24 @@ from shiny import Inputs, Outputs, Session, reactive, render, ui from dp_wizard import registry_url -from dp_wizard.shiny.components.icons import ( +from dp_wizard.types import AppState, ColumnId +from dp_wizard.ui.components.icons import ( budget_icon, columns_icon, groups_icon, simulation_icon, ) -from dp_wizard.shiny.components.inputs import log_slider -from dp_wizard.shiny.components.outputs import ( +from dp_wizard.ui.components.inputs import log_slider +from dp_wizard.ui.components.outputs import ( code_sample, hide_if, nav_button, tutorial_box, warning_md_box, ) -from dp_wizard.shiny.components.summaries import dataset_summary -from dp_wizard.shiny.panels.analysis_panel.column_module import column_server, column_ui -from dp_wizard.shiny.panels.analysis_panel.group_module import group_server, group_ui -from dp_wizard.types import AppState, ColumnId +from dp_wizard.ui.components.summaries import dataset_summary +from dp_wizard.ui.panels.analysis_panel.column_module import column_server, column_ui +from dp_wizard.ui.panels.analysis_panel.group_module import group_server, group_ui from dp_wizard.utils.code_generators import make_privacy_loss_block from dp_wizard.utils.constraints import MAX_EPSILON, MIN_EPSILON from dp_wizard.utils.csv_helper import ( diff --git a/dp_wizard/shiny/panels/analysis_panel/column_module.py b/dp_wizard/ui/panels/analysis_panel/column_module.py similarity index 99% rename from dp_wizard/shiny/panels/analysis_panel/column_module.py rename to dp_wizard/ui/panels/analysis_panel/column_module.py index c626e61c..4701112b 100644 --- a/dp_wizard/shiny/panels/analysis_panel/column_module.py +++ b/dp_wizard/ui/panels/analysis_panel/column_module.py @@ -5,10 +5,11 @@ from shiny import Inputs, Outputs, Session, module, reactive, render, ui from shiny.types import SilentException -from dp_wizard.shiny.components.icons import ( +from dp_wizard.types import ColumnName, Product, StatisticName, Weight +from dp_wizard.ui.components.icons import ( column_config_icon, ) -from dp_wizard.shiny.components.outputs import ( +from dp_wizard.ui.components.outputs import ( code_sample, col_widths, hide_if, @@ -16,7 +17,6 @@ tutorial_box, warning_md_box, ) -from dp_wizard.types import ColumnName, Product, StatisticName, Weight from dp_wizard.utils.code_generators import make_column_config_block from dp_wizard.utils.code_generators.analyses import ( # median, get_statistic_by_name, diff --git a/dp_wizard/shiny/panels/analysis_panel/group_module.py b/dp_wizard/ui/panels/analysis_panel/group_module.py similarity index 94% rename from dp_wizard/shiny/panels/analysis_panel/group_module.py rename to dp_wizard/ui/panels/analysis_panel/group_module.py index 3e443c1a..46093653 100644 --- a/dp_wizard/shiny/panels/analysis_panel/group_module.py +++ b/dp_wizard/ui/panels/analysis_panel/group_module.py @@ -1,9 +1,9 @@ import polars as pl from shiny import Inputs, Outputs, Session, module, reactive, render, ui -from dp_wizard.shiny.components.icons import column_config_icon -from dp_wizard.shiny.components.outputs import only_for_screenreader from dp_wizard.types import ColumnName +from dp_wizard.ui.components.icons import column_config_icon +from dp_wizard.ui.components.outputs import only_for_screenreader from dp_wizard.utils.csv_helper import convert_text diff --git a/dp_wizard/shiny/panels/dataset_panel/__init__.py b/dp_wizard/ui/panels/dataset_panel/__init__.py similarity index 99% rename from dp_wizard/shiny/panels/dataset_panel/__init__.py rename to dp_wizard/ui/panels/dataset_panel/__init__.py index fcc7b6e8..ecc8758a 100644 --- a/dp_wizard/shiny/panels/dataset_panel/__init__.py +++ b/dp_wizard/ui/panels/dataset_panel/__init__.py @@ -4,12 +4,13 @@ from shiny import Inputs, Outputs, Session, reactive, render, ui -from dp_wizard.shiny.components.icons import ( +from dp_wizard.types import AppState, Product +from dp_wizard.ui.components.icons import ( data_source_icon, product_icon, unit_of_protection_icon, ) -from dp_wizard.shiny.components.outputs import ( +from dp_wizard.ui.components.outputs import ( code_sample, col_widths, hide_if, @@ -18,8 +19,7 @@ tutorial_box, warning_md_box, ) -from dp_wizard.shiny.panels.dataset_panel import data_source -from dp_wizard.types import AppState, Product +from dp_wizard.ui.panels.dataset_panel import data_source from dp_wizard.utils.argparse_helpers import ( PRIVATE_TEXT, PUBLIC_PRIVATE_TEXT, diff --git a/dp_wizard/shiny/panels/dataset_panel/data_source.py b/dp_wizard/ui/panels/dataset_panel/data_source.py similarity index 97% rename from dp_wizard/shiny/panels/dataset_panel/data_source.py rename to dp_wizard/ui/panels/dataset_panel/data_source.py index 222369a9..8f10d46d 100644 --- a/dp_wizard/shiny/panels/dataset_panel/data_source.py +++ b/dp_wizard/ui/panels/dataset_panel/data_source.py @@ -1,5 +1,5 @@ from dp_wizard import package_root -from dp_wizard.shiny.components.outputs import ( +from dp_wizard.ui.components.outputs import ( code_sample, hide_if, warning_md_box, diff --git a/dp_wizard/shiny/panels/faq_panel/__init__.py b/dp_wizard/ui/panels/faq_panel/__init__.py similarity index 97% rename from dp_wizard/shiny/panels/faq_panel/__init__.py rename to dp_wizard/ui/panels/faq_panel/__init__.py index ca4c7970..633d56e6 100644 --- a/dp_wizard/shiny/panels/faq_panel/__init__.py +++ b/dp_wizard/ui/panels/faq_panel/__init__.py @@ -5,7 +5,7 @@ from shiny import Inputs, Outputs, Session, reactive, ui from dp_wizard import __version__, package_root -from dp_wizard.shiny.components.outputs import nav_button +from dp_wizard.ui.components.outputs import nav_button def _get_info() -> str: diff --git a/dp_wizard/shiny/panels/results_panel/__init__.py b/dp_wizard/ui/panels/results_panel/__init__.py similarity index 98% rename from dp_wizard/shiny/panels/results_panel/__init__.py rename to dp_wizard/ui/panels/results_panel/__init__.py index 0af0d4a4..b53685bc 100644 --- a/dp_wizard/shiny/panels/results_panel/__init__.py +++ b/dp_wizard/ui/panels/results_panel/__init__.py @@ -9,24 +9,24 @@ from shiny import Inputs, Outputs, Session, reactive, render, types, ui from dp_wizard import config_root -from dp_wizard.shiny.components.icons import ( +from dp_wizard.types import AppState, ColumnName, Product +from dp_wizard.ui.components.icons import ( download_code_icon, download_config_icon, download_results_icon, ) -from dp_wizard.shiny.components.outputs import ( +from dp_wizard.ui.components.outputs import ( hide_if, only_for_screenreader, tutorial_box, warning_md_box, ) -from dp_wizard.shiny.components.summaries import analysis_summary, dataset_summary -from dp_wizard.shiny.panels.results_panel.download_options import ( +from dp_wizard.ui.components.summaries import analysis_summary, dataset_summary +from dp_wizard.ui.panels.results_panel.download_options import ( download_button, download_link, table_of_contents_md, ) -from dp_wizard.types import AppState, ColumnName, Product from dp_wizard.utils.code_generators import AnalysisPlan, AnalysisPlanColumn from dp_wizard.utils.code_generators.notebook_generator import ( PLACEHOLDER_CSV_NAME, diff --git a/dp_wizard/shiny/panels/results_panel/download_options.py b/dp_wizard/ui/panels/results_panel/download_options.py similarity index 100% rename from dp_wizard/shiny/panels/results_panel/download_options.py rename to dp_wizard/ui/panels/results_panel/download_options.py diff --git a/dp_wizard/shiny/vendor/highlight.js/11.11.1/highlight.min.js b/dp_wizard/ui/vendor/highlight.js/11.11.1/highlight.min.js similarity index 100% rename from dp_wizard/shiny/vendor/highlight.js/11.11.1/highlight.min.js rename to dp_wizard/ui/vendor/highlight.js/11.11.1/highlight.min.js diff --git a/dp_wizard/shiny/vendor/highlight.js/11.11.1/styles/default.min.css b/dp_wizard/ui/vendor/highlight.js/11.11.1/styles/default.min.css similarity index 100% rename from dp_wizard/shiny/vendor/highlight.js/11.11.1/styles/default.min.css rename to dp_wizard/ui/vendor/highlight.js/11.11.1/styles/default.min.css diff --git a/pyproject.toml b/pyproject.toml index 4fa08559..43dc8f4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,7 +47,7 @@ ignore = ["**/no-tests/"] reportPrivateImportUsage = false # TODO: Expand strict type checking strict = [ - "dp_wizard/shiny/__init__.py", + "dp_wizard/ui/__init__.py", "dp_wizard/utils/argparse_helpers.py", "dp_wizard/utils/config.py", "dp_wizard/utils/csv_helper.py", diff --git a/tests/apps/app_qa.py b/tests/apps/app_qa.py index 1b01b4ac..1f1bea1c 100644 --- a/tests/apps/app_qa.py +++ b/tests/apps/app_qa.py @@ -1,4 +1,4 @@ -from dp_wizard.shiny import make_app +from dp_wizard.ui import make_app from dp_wizard.utils.argparse_helpers import cli_info_defaults app = make_app( diff --git a/tests/apps/app_sample.py b/tests/apps/app_sample.py index 0f3ce456..59942bb9 100644 --- a/tests/apps/app_sample.py +++ b/tests/apps/app_sample.py @@ -1,4 +1,4 @@ -from dp_wizard.shiny import make_app +from dp_wizard.ui import make_app from dp_wizard.utils.argparse_helpers import cli_info_defaults app = make_app( diff --git a/tests/test_app.py b/tests/test_app.py index 788c625b..ebabb45b 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -6,7 +6,7 @@ from shiny.run import ShinyAppProc from dp_wizard import package_root -from dp_wizard.shiny.panels.results_panel.download_options import ( +from dp_wizard.ui.panels.results_panel.download_options import ( DownloadOption, _download_options, )