From 745e71c948d9fd4ab7fea35f23b538044f1971a4 Mon Sep 17 00:00:00 2001 From: SilvinWillemsen Date: Mon, 13 Apr 2026 14:35:44 +0200 Subject: [PATCH 1/4] Updated the schema files to work with new requirements. Removed all specific versions from the requirements file (so that in the future we won't have conflicts with DeepONet dependencies). Finally, changed some path names for local simulation method finding (in config.py). Used to be in app/simulation-backend, now in ../simulation-backend. --- app/schemas/auralization_schema.py | 2 +- app/schemas/file_schema.py | 4 +- app/schemas/geometry_schema.py | 2 +- app/schemas/material_schema.py | 2 +- app/schemas/mesh_schema.py | 2 +- app/schemas/model_schema.py | 2 +- app/schemas/project_schema.py | 2 +- config.py | 8 +- requirements.txt | 286 ++++++++++++++--------------- 9 files changed, 153 insertions(+), 157 deletions(-) diff --git a/app/schemas/auralization_schema.py b/app/schemas/auralization_schema.py index adeb528b..7e8d24f1 100644 --- a/app/schemas/auralization_schema.py +++ b/app/schemas/auralization_schema.py @@ -19,7 +19,7 @@ class AuralizationSchema(Schema): id = fields.Integer() simulationId = fields.Integer() audioFileId = fields.Integer() - status = fields.Enum(Status, default=Status.Uncreated) + status = fields.Enum(Status, dump_default=Status.Uncreated) createdAt = fields.String() updatedAt = fields.String() diff --git a/app/schemas/file_schema.py b/app/schemas/file_schema.py index b39b10aa..4e98a650 100644 --- a/app/schemas/file_schema.py +++ b/app/schemas/file_schema.py @@ -2,10 +2,10 @@ class FileSchema(Schema): - id = fields.Number() + id = fields.Integer() fileName = fields.Str() slot = fields.Str() - size = fields.Number() + size = fields.Integer() class GetSlotSchema(Schema): diff --git a/app/schemas/geometry_schema.py b/app/schemas/geometry_schema.py index b4c2829e..1957de7f 100644 --- a/app/schemas/geometry_schema.py +++ b/app/schemas/geometry_schema.py @@ -16,7 +16,7 @@ class GeometrySchema(Schema): class GeometryStartQuerySchema(Schema): - fileUploadId = fields.Number(required=True) + fileUploadId = fields.Integer(required=True) class GeometryGetQuerySchema(Schema): diff --git a/app/schemas/material_schema.py b/app/schemas/material_schema.py index 92cd80db..2b0665c6 100644 --- a/app/schemas/material_schema.py +++ b/app/schemas/material_schema.py @@ -14,7 +14,7 @@ class MaterialUpdateSchema(Schema): absorptionCoefficients = fields.List(fields.Float()) class MaterialSchema(MaterialCreateSchema): - id = fields.Number() + id = fields.Integer() origin = fields.String() createdAt = fields.String() updatedAt = fields.String() diff --git a/app/schemas/mesh_schema.py b/app/schemas/mesh_schema.py index 631e58f8..4f52404c 100644 --- a/app/schemas/mesh_schema.py +++ b/app/schemas/mesh_schema.py @@ -10,7 +10,7 @@ class MeshSchema(Schema): - id = fields.Number() + id = fields.Integer() taskId = fields.Integer() createdAt = fields.Str() diff --git a/app/schemas/model_schema.py b/app/schemas/model_schema.py index 3b557ffa..0f23ed9d 100644 --- a/app/schemas/model_schema.py +++ b/app/schemas/model_schema.py @@ -4,7 +4,7 @@ class ModelSchema(Schema): - id = fields.Number() + id = fields.Integer() name = fields.Str(required=True) sourceFileId = fields.Integer() outputFileId = fields.Integer() diff --git a/app/schemas/project_schema.py b/app/schemas/project_schema.py index 26e272f8..6adaff90 100644 --- a/app/schemas/project_schema.py +++ b/app/schemas/project_schema.py @@ -6,7 +6,7 @@ class ProjectSchema(Schema): - id = fields.Number() + id = fields.Integer() name = fields.Str(required=True) description = fields.Str(required=True) group = fields.Str(required=True) diff --git a/config.py b/config.py index 2743e88d..d579336b 100644 --- a/config.py +++ b/config.py @@ -71,14 +71,14 @@ class DefaultConfig: #SETTINGS_FILE_FOLDER = "/app/simulation-backend/example_settings" SETTINGS_FILE_FOLDER = os.environ.get( "SETTINGS_FILE_FOLDER", - "/app/simulation-backend/example_settings" + "../simulation-backend/example_settings" ) - #METHODS_CONFIG_PATH = "/app/simulation-backend/methods-config.json" + # METHODS_CONFIG_PATH = "/app/simulation-backend/methods-config.json" METHODS_CONFIG_PATH = os.environ.get( "METHODS_CONFIG_PATH", - "/app/simulation-backend/methods-config.json" -) + "../simulation-backend/methods-config.json" + ) USER_MODEL_IMAGE_FOLDER_NAME = os.path.join(UPLOAD_FOLDER_NAME, "model_images") diff --git a/requirements.txt b/requirements.txt index d1727ab9..bd8a1084 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,144 +1,144 @@ -alabaster==0.7.16 -alembic==1.10.2 -amqp==5.2.0 -apispec==6.3.0 -asgiref==3.7.2 -asttokens==2.2.1 -attrs==23.2.0 -Babel==2.15.0 -backcall==0.2.0 -billiard==4.2.0 -black==25.1.0 -blinker==1.5 -celery==5.4.0 -certifi==2023.5.7 -cfgv==3.4.0 -charset-normalizer==3.3.2 -click==8.1.3 -click-didyoumean==0.3.1 -click-plugins==1.1.1 -click-repl==0.3.0 -colorama==0.4.6 -comm==0.1.2 -contourpy==1.2.1 -coverage==7.2.7 -cycler==0.12.1 -debugpy==1.6.4 -decorator==5.1.1 -distlib==0.3.6 -Django==4.2.6 -dnspython==2.6.1 -docutils==0.21.2 -entrypoints==0.4 -eventlet==0.36.1 -executing==1.2.0 -filelock==3.12.2 -flake8==6.1.0 -Flask==2.2.5 -Flask-Cors==3.0.10 -Flask-JWT-Extended==4.4.4 -Flask-Migrate==4.0.4 -Flask-Script==2.0.5 -flask-smorest==0.40.0 -Flask-SQLAlchemy==3.0.3 -fonttools==4.53.1 -gmsh==4.13.1 -greenlet==2.0.2 -gunicorn==21.2.0 -identify==2.6.0 -idna==3.7 -imagesize==1.4.1 -importlib-metadata==6.7.0 -ipykernel==6.19.2 -ipython==8.10.0 -isort==5.12.0 -itsdangerous==2.1.2 -jedi==0.18.2 -Jinja2==3.1.2 -jsonschema==4.22.0 -jsonschema-specifications==2023.12.1 -jupyter_client==7.4.8 -jupyter_core==5.1.0 -kiwisolver==1.4.5 -kombu==5.3.7 -Mako==1.2.4 -markdown-it-py==3.0.0 -MarkupSafe==2.1.2 -marshmallow==3.19.0 -mccabe==0.7.0 -mdurl==0.1.2 -meshio==5.3.5 -mypy-extensions==1.0.0 -nest-asyncio==1.5.6 -networkx==3.3 -nodeenv==1.9.1 +alabaster +alembic +amqp +apispec +asgiref +asttokens +attrs +Babel +backcall +billiard +black +blinker +celery +certifi +cfgv +charset-normalizer +click +click-didyoumean +click-plugins +click-repl +colorama +comm +contourpy +coverage +cycler +debugpy +decorator +distlib +Django +dnspython +docutils +entrypoints +eventlet +executing +filelock +flake8 +Flask +Flask-Cors +Flask-JWT-Extended +Flask-Migrate +Flask-Script +flask-smorest +Flask-SQLAlchemy +fonttools +gmsh +greenlet +gunicorn +identify +idna +imagesize +importlib-metadata +ipykernel +ipython +isort +itsdangerous +jedi +Jinja2 +jsonschema +jsonschema-specifications +jupyter_client +jupyter_core +kiwisolver +kombu +Mako +markdown-it-py +MarkupSafe +marshmallow +mccabe +mdurl +meshio +mypy-extensions +nest-asyncio +networkx +nodeenv numpy -numpy-stl==3.1.1 -openpyxl==3.1.5 -packaging==22.0 -pandas==2.2.3 -parso==0.8.3 -passlib==1.7.4 -pathspec==0.12.1 -pexpect==4.8.0 -pickleshare==0.7.5 -pillow==10.3.0 -pipenv==2023.7.3 -platformdirs==3.8.0 -pre-commit==3.8.0 -prompt-toolkit==3.0.36 -psutil==5.9.4 -psycopg2-binary==2.9.6 -ptyprocess==0.7.0 -pure-eval==0.2.2 -pycodestyle==2.11.1 -pyflakes==3.1.0 -pyglet==1.5.29 -Pygments==2.18.0 -PyJWT==2.6.0 -pyparsing==3.1.2 -python-dateutil==2.8.2 -python-dotenv==1.0.0 -python-utils==3.8.2 -pytz==2023.3 -# pywin32==306 -PyYAML==6.0.2 -pyzmq==24.0.1 -referencing==0.35.1 -requests==2.32.3 -rhino3dm==8.6.1 -rich==13.7.1 -rpds-py==0.18.1 -scipy==1.14.0 -six==1.16.0 -snowballstemmer==2.2.0 -soundfile==0.13.1 -Sphinx==7.3.7 # Docs -sphinxcontrib-applehelp==1.0.8 # docs, potentially secondary requirement -sphinxcontrib-devhelp==1.0.6 # docs, potentially secondary requirement -sphinxcontrib-htmlhelp==2.0.5 # docs, potentially secondary requirement -sphinxcontrib-jsmath==1.0.1 # docs, potentially secondary requirement -sphinxcontrib-qthelp==1.0.7 # docs, potentially secondary requirement -sphinxcontrib-serializinghtml==1.1.10 # docs, potentially secondary requirement -SQLAlchemy==2.0.7 -sqlparse==0.4.4 -stack-data==0.6.2 -tomli==2.0.1 -tornado==6.3.2 -traitlets==5.7.1 -trimesh==4.4.1 +numpy-stl +openpyxl +packaging +pandas +parso +passlib +pathspec +pexpect +pickleshare +pillow +pipenv +platformdirs +pre-commit +prompt-toolkit +psutil +psycopg2-binary +ptyprocess +pure-eval +pycodestyle +pyflakes +pyglet +Pygments +PyJWT +pyparsing +python-dateutil +python-dotenv +python-utils +pytz +# pywin32 +PyYAML +pyzmq +referencing +requests +rhino3dm +rich +rpds-py +scipy +six +snowballstemmer +soundfile +Sphinx # Docs +sphinxcontrib-applehelp # docs, potentially secondary requirement +sphinxcontrib-devhelp # docs, potentially secondary requirement +sphinxcontrib-htmlhelp # docs, potentially secondary requirement +sphinxcontrib-jsmath # docs, potentially secondary requirement +sphinxcontrib-qthelp # docs, potentially secondary requirement +sphinxcontrib-serializinghtml # docs, potentially secondary requirement +SQLAlchemy +sqlparse +stack-data +tomli +tornado +traitlets +trimesh typing_extensions -tzdata==2023.3 -urllib3==2.2.2 -vine==5.1.0 -virtualenv==20.23.1 -virtualenv-clone==0.5.7 -watchdog==4.0.1 -wcwidth==0.2.5 -webargs==8.2.0 -Werkzeug==2.2.3 -wincertstore==0.2 -zipp==3.15.0 +tzdata +urllib3 +vine +virtualenv +virtualenv-clone +watchdog +wcwidth +webargs +Werkzeug +wincertstore +zipp pytest locust ezdxf @@ -149,11 +149,7 @@ sphinx-design # Docs, required for tabs and other design elements sphinx-copybutton # Docs, required for copy buttons in code blocks sphinx-gallery # Docs, required for example gallery matplotlib # Docs, required for plot directive -pyroomacoustics +# pyroomacoustics docker pathlib -paramiko -git+https://github.com/Building-acoustics-TU-Eindhoven/acousticDE.git@d32afb2498e27bd996fc7356d57dc4f1ed76aa44#egg=acousticDE -# git+https://github.com/dtu-act/deeponet-acoustic-wave-prop.git@3d3fc5ee952756eedcd4fec3c3674ad829825c7e#egg=deeponet-acoustics -git+https://github.com/Building-acoustics-TU-Eindhoven/edg-acoustics.git@08cac98da98ed14ba1366741b1c0644001503b82#egg=edg-acoustics - +paramiko \ No newline at end of file From 5e5d309a5c64867df8dc49a2988a95e45ebdfe4b Mon Sep 17 00:00:00 2001 From: SilvinWillemsen Date: Mon, 13 Apr 2026 17:52:56 +0200 Subject: [PATCH 2/4] Re-added app/ as this is needed for the docker containers working properly. Should figure out a way to have docker and local setups coexist. Also re-added acousticDE as a requirement as we need for the generate_mesh function (we should decouple it at some point though) --- config.py | 4 ++-- requirements.txt | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/config.py b/config.py index d579336b..064ad3d7 100644 --- a/config.py +++ b/config.py @@ -71,13 +71,13 @@ class DefaultConfig: #SETTINGS_FILE_FOLDER = "/app/simulation-backend/example_settings" SETTINGS_FILE_FOLDER = os.environ.get( "SETTINGS_FILE_FOLDER", - "../simulation-backend/example_settings" + "/app/simulation-backend/example_settings" ) # METHODS_CONFIG_PATH = "/app/simulation-backend/methods-config.json" METHODS_CONFIG_PATH = os.environ.get( "METHODS_CONFIG_PATH", - "../simulation-backend/methods-config.json" + "/app/simulation-backend/methods-config.json" ) diff --git a/requirements.txt b/requirements.txt index bd8a1084..e0e9d141 100644 --- a/requirements.txt +++ b/requirements.txt @@ -152,4 +152,6 @@ matplotlib # Docs, required for plot directive # pyroomacoustics docker pathlib -paramiko \ No newline at end of file +paramiko + +acousticDE # Needed for generate_mesh function (should decouple at some point) \ No newline at end of file From e63e990f7a5bfb9698b3c4944766b9af6f490581 Mon Sep 17 00:00:00 2001 From: SilvinWillemsen Date: Mon, 4 May 2026 11:25:55 +0200 Subject: [PATCH 3/4] Added mimimum required marshmallow version --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e0e9d141..b10435bf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -64,7 +64,7 @@ kombu Mako markdown-it-py MarkupSafe -marshmallow +marshmallow>=3.13.0 mccabe mdurl meshio From 43206ee6066a5e604230108841b0df66ab44a152 Mon Sep 17 00:00:00 2001 From: SilvinWillemsen <32464520+SilvinWillemsen@users.noreply.github.com> Date: Mon, 4 May 2026 11:26:53 +0200 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: Marco Berzborn --- config.py | 4 ++-- requirements.txt | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/config.py b/config.py index 064ad3d7..2743e88d 100644 --- a/config.py +++ b/config.py @@ -74,11 +74,11 @@ class DefaultConfig: "/app/simulation-backend/example_settings" ) - # METHODS_CONFIG_PATH = "/app/simulation-backend/methods-config.json" + #METHODS_CONFIG_PATH = "/app/simulation-backend/methods-config.json" METHODS_CONFIG_PATH = os.environ.get( "METHODS_CONFIG_PATH", "/app/simulation-backend/methods-config.json" - ) +) USER_MODEL_IMAGE_FOLDER_NAME = os.path.join(UPLOAD_FOLDER_NAME, "model_images") diff --git a/requirements.txt b/requirements.txt index b10435bf..b4bd1b09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -149,7 +149,6 @@ sphinx-design # Docs, required for tabs and other design elements sphinx-copybutton # Docs, required for copy buttons in code blocks sphinx-gallery # Docs, required for example gallery matplotlib # Docs, required for plot directive -# pyroomacoustics docker pathlib paramiko