diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index 3ad29b0077..9a3a6d1121 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -37,12 +37,13 @@ jobs: - {version: '3.9'} - {version: '3.10'} - {version: '3.11'} + - {version: '3.12'} include: - python: {version: '3.8'} # win7 compat os: windows-latest - - python: {version: '3.11'} # current + - python: {version: '3.12'} # current os: windows-latest - - python: {version: '3.11'} # current + - python: {version: '3.12'} # current os: macos-latest steps: @@ -70,7 +71,7 @@ jobs: os: - ubuntu-latest python: - - {version: '3.11'} # current + - {version: '3.12'} # current steps: - uses: actions/checkout@v4 diff --git a/ModuleUpdate.py b/ModuleUpdate.py index ed041bef46..f49182bb78 100644 --- a/ModuleUpdate.py +++ b/ModuleUpdate.py @@ -75,13 +75,13 @@ def update(yes: bool = False, force: bool = False) -> None: if not update_ran: update_ran = True + install_pkg_resources(yes=yes) + import pkg_resources + if force: update_command() return - install_pkg_resources(yes=yes) - import pkg_resources - prev = "" # if a line ends in \ we store here and merge later for req_file in requirements_files: path = os.path.join(os.path.dirname(sys.argv[0]), req_file) diff --git a/WebHost.py b/WebHost.py index 08ef3c4307..e597de2476 100644 --- a/WebHost.py +++ b/WebHost.py @@ -1,3 +1,4 @@ +import argparse import os import multiprocessing import logging @@ -31,6 +32,15 @@ def get_app() -> "Flask": import yaml app.config.from_file(configpath, yaml.safe_load) logging.info(f"Updated config from {configpath}") + # inside get_app() so it's usable in systems like gunicorn, which do not run WebHost.py, but import it. + parser = argparse.ArgumentParser() + parser.add_argument('--config_override', default=None, + help="Path to yaml config file that overrules config.yaml.") + args = parser.parse_known_args()[0] + if args.config_override: + import yaml + app.config.from_file(os.path.abspath(args.config_override), yaml.safe_load) + logging.info(f"Updated config from {args.config_override}") if not app.config["HOST_ADDRESS"]: logging.info("Getting public IP, as HOST_ADDRESS is empty.") app.config["HOST_ADDRESS"] = Utils.get_public_ipv4() diff --git a/WebHostLib/requirements.txt b/WebHostLib/requirements.txt index 3452c9d416..c593cd63df 100644 --- a/WebHostLib/requirements.txt +++ b/WebHostLib/requirements.txt @@ -1,10 +1,11 @@ flask>=3.0.3 -werkzeug>=3.0.3 -pony>=0.7.17 +werkzeug>=3.0.4 +pony>=0.7.19 waitress>=3.0.0 Flask-Caching>=2.3.0 Flask-Compress>=1.15 -Flask-Limiter>=3.7.0 +Flask-Limiter>=3.8.0 bokeh>=3.1.1; python_version <= '3.8' -bokeh>=3.4.1; python_version >= '3.9' +bokeh>=3.4.3; python_version == '3.9' +bokeh>=3.5.2; python_version >= '3.10' markupsafe>=2.1.5 diff --git a/docs/running from source.md b/docs/running from source.md index 34083a603d..4bd335648d 100644 --- a/docs/running from source.md +++ b/docs/running from source.md @@ -8,7 +8,7 @@ use that version. These steps are for developers or platforms without compiled r What you'll need: * [Python 3.8.7 or newer](https://www.python.org/downloads/), not the Windows Store version - * **Python 3.12 is currently unsupported** + * Python 3.12.x is currently the newest supported version * pip: included in downloads from python.org, separate in many Linux distributions * Matching C compiler * possibly optional, read operating system specific sections @@ -31,7 +31,7 @@ After this, you should be able to run the programs. Recommended steps * Download and install a "Windows installer (64-bit)" from the [Python download page](https://www.python.org/downloads) - * **Python 3.12 is currently unsupported** + * [read above](#General) which versions are supported * **Optional**: Download and install Visual Studio Build Tools from [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/). diff --git a/requirements.txt b/requirements.txt index db4f544503..6fe14c9f32 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,14 +1,14 @@ colorama>=0.4.6 -websockets>=12.0 -PyYAML>=6.0.1 -jellyfish>=1.0.3 +websockets>=13.0.1 +PyYAML>=6.0.2 +jellyfish>=1.1.0 jinja2>=3.1.4 schema>=0.7.7 kivy>=2.3.0 bsdiff4>=1.2.4 platformdirs>=4.2.2 -certifi>=2024.6.2 -cython>=3.0.10 +certifi>=2024.8.30 +cython>=3.0.11 cymem>=2.0.8 -orjson>=3.10.3 -typing_extensions>=4.12.1 +orjson>=3.10.7 +typing_extensions>=4.12.2