scrub / scripts /run_local_streamlit.py
solidprivacy-nl
Add WP46 local Streamlit launcher
3e6c480
Raw
History Blame Contribute Delete
1.75 kB
"""Run the SolidPrivacy Scrub Streamlit app on localhost.
This launcher mirrors the existing container startup patches, then starts the
current Streamlit app without changing app behavior, export semantics, or
reinsert semantics.
"""
from __future__ import annotations
import argparse
import subprocess
import sys
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
APP_FILE = "presidio_streamlit.py"
STARTUP_PATCHES = (
"fix_streamlit_nested_expanders.py",
"fix_streamlit_pdf_text_reinsert.py",
)
def run_checked(command: list[str]) -> None:
subprocess.run(command, cwd=REPO_ROOT, check=True)
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="Launch SolidPrivacy Scrub locally with Streamlit.",
)
parser.add_argument(
"--address",
default="127.0.0.1",
help="Bind address for the local Streamlit server. Default: 127.0.0.1.",
)
parser.add_argument(
"--port",
default="8501",
help="Port for the local Streamlit server. Default: 8501.",
)
return parser.parse_args(argv)
def main(argv: list[str] | None = None) -> int:
args = parse_args(argv)
for patch in STARTUP_PATCHES:
run_checked([sys.executable, patch])
streamlit_command = [
sys.executable,
"-m",
"streamlit",
"run",
APP_FILE,
"--server.address",
args.address,
"--server.port",
str(args.port),
"--server.headless",
"true",
"--browser.gatherUsageStats",
"false",
]
run_checked(streamlit_command)
return 0
if __name__ == "__main__":
raise SystemExit(main())