diff --git a/.github/workflows/pytest.yaml b/.github/workflows/pytest.yaml index 6108b3055..651c2b78f 100644 --- a/.github/workflows/pytest.yaml +++ b/.github/workflows/pytest.yaml @@ -16,7 +16,7 @@ jobs: strategy: matrix: # "3.10" must be a string; otherwise it is interpreted as 3.1. - python-version: ["3.11", "3.10", "3.9", "3.8"] + python-version: ["3.12", "3.11", "3.10", "3.9", "3.8"] os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false @@ -53,7 +53,7 @@ jobs: if: github.event_name != 'release' strategy: matrix: - python-version: ["3.11", "3.10", "3.9", "3.8"] + python-version: ["3.12", "3.11", "3.10", "3.9", "3.8"] os: [ubuntu-latest] fail-fast: false diff --git a/examples/cpuinfo/app.py b/examples/cpuinfo/app.py index b898672af..7cf934283 100644 --- a/examples/cpuinfo/app.py +++ b/examples/cpuinfo/app.py @@ -50,7 +50,7 @@ text-align: center; } """ - % f"{ncpu*4}em" + % f"{ncpu * 4}em" ), ui.h3("CPU Usage %", class_="mt-2"), ui.layout_sidebar( diff --git a/setup.cfg b/setup.cfg index 04ffd8517..2658862b0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -19,6 +19,7 @@ classifiers = Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 + Programming Language :: Python :: 3.12 project_urls = Bug Tracker = https://github.com/posit-dev/py-shiny/issues Documentation = https://shiny.posit.co/py/ diff --git a/shiny/api-examples/download/app-core.py b/shiny/api-examples/download/app-core.py index b88161867..74edfa82d 100644 --- a/shiny/api-examples/download/app-core.py +++ b/shiny/api-examples/download/app-core.py @@ -108,7 +108,7 @@ def download2(): yield buf.getvalue() @render.download( - filename=lambda: f"新型-{date.today().isoformat()}-{np.random.randint(100,999)}.csv" + filename=lambda: f"新型-{date.today().isoformat()}-{np.random.randint(100, 999)}.csv" ) async def download3(): await asyncio.sleep(0.25) diff --git a/shiny/api-examples/download/app-express.py b/shiny/api-examples/download/app-express.py index 748dce7c4..9eaa60647 100644 --- a/shiny/api-examples/download/app-express.py +++ b/shiny/api-examples/download/app-express.py @@ -57,7 +57,7 @@ def download2(): @render.download( label="Download filename", - filename=lambda: f"新型-{date.today().isoformat()}-{np.random.randint(100,999)}.csv", + filename=lambda: f"新型-{date.today().isoformat()}-{np.random.randint(100, 999)}.csv", ) async def download3(): await asyncio.sleep(0.25) diff --git a/shiny/api-examples/download_button/app-core.py b/shiny/api-examples/download_button/app-core.py index 520fa934d..ed3cab273 100644 --- a/shiny/api-examples/download_button/app-core.py +++ b/shiny/api-examples/download_button/app-core.py @@ -11,7 +11,7 @@ def server(input: Inputs, output: Outputs, session: Session): @render.download( - filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100,999)}.csv" + filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100, 999)}.csv" ) async def downloadData(): await asyncio.sleep(0.25) diff --git a/shiny/api-examples/download_button/app-express.py b/shiny/api-examples/download_button/app-express.py index 96bd64273..c45fade5d 100644 --- a/shiny/api-examples/download_button/app-express.py +++ b/shiny/api-examples/download_button/app-express.py @@ -6,7 +6,7 @@ @render.download( - filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100,999)}.csv" + filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100, 999)}.csv" ) async def downloadData(): await asyncio.sleep(0.25) diff --git a/shiny/api-examples/download_link/app-core.py b/shiny/api-examples/download_link/app-core.py index 408b38761..f8bc61ac2 100644 --- a/shiny/api-examples/download_link/app-core.py +++ b/shiny/api-examples/download_link/app-core.py @@ -11,7 +11,7 @@ def server(input: Inputs, output: Outputs, session: Session): @render.download( - filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100,999)}.csv" + filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100, 999)}.csv" ) async def downloadData(): await asyncio.sleep(0.25) diff --git a/shiny/api-examples/remove_accordion_panel/app-core.py b/shiny/api-examples/remove_accordion_panel/app-core.py index 00e4eb844..fa51fd56d 100644 --- a/shiny/api-examples/remove_accordion_panel/app-core.py +++ b/shiny/api-examples/remove_accordion_panel/app-core.py @@ -37,7 +37,7 @@ def _(): return # Remove panel - ui.remove_accordion_panel("acc", f"Section { user_choices.pop() }") + ui.remove_accordion_panel("acc", f"Section {user_choices.pop()}") label = "No more panels to remove!" if len(user_choices) > 0: diff --git a/shiny/api-examples/remove_accordion_panel/app-express.py b/shiny/api-examples/remove_accordion_panel/app-express.py index 04c9a087a..d01f643e6 100644 --- a/shiny/api-examples/remove_accordion_panel/app-express.py +++ b/shiny/api-examples/remove_accordion_panel/app-express.py @@ -30,7 +30,7 @@ def _(): ui.notification_show("No more panels to remove!") return - ui.remove_accordion_panel("acc", f"Section { user_choices.pop() }") + ui.remove_accordion_panel("acc", f"Section {user_choices.pop()}") label = "No more panels to remove!" if len(user_choices) > 0: diff --git a/shiny/quarto.py b/shiny/quarto.py index 394c1d3f9..5f0d5efc2 100644 --- a/shiny/quarto.py +++ b/shiny/quarto.py @@ -74,11 +74,11 @@ def convert_code_cells_to_app_py(json_file: str | Path, app_file: str | Path) -> from pathlib import Path from shiny import App, Inputs, Outputs, Session, ui -{ "".join(global_code_cell_texts) } +{"".join(global_code_cell_texts)} def server(input: Inputs, output: Outputs, session: Session) -> None: -{ "".join(session_code_cell_texts) } +{"".join(session_code_cell_texts)} return None @@ -87,7 +87,7 @@ def server(input: Inputs, output: Outputs, session: Session) -> None: _static_assets = {{"/" + sa: Path(__file__).parent / sa for sa in _static_assets}} app = App( - Path(__file__).parent / "{ data["html_file"] }", + Path(__file__).parent / "{data["html_file"]}", server, static_assets=_static_assets, )