diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b1ece4ed..df640241 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,12 +64,12 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11 + python-version: 3.13 - name: Create venv run: | cd backend - python3.11 -m venv venv + python3.13 -m venv venv - name: Install packages run: | @@ -84,9 +84,9 @@ jobs: source venv/bin/activate # use version of ifcopenshell with desired schema parsing # TODO: revert to pyPI when schema parsing is published in the future - wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-311-v0.8.4-e8eb5e4-linux64.zip" - mkdir -p venv/lib/python3.11/site-packages - unzip -d venv/lib/python3.11/site-packages /tmp/ifcopenshell_python.zip + wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-313-v0.8.4-e8eb5e4-linux64.zip" + mkdir -p venv/lib/python3.13/site-packages + unzip -d venv/lib/python3.13/site-packages /tmp/ifcopenshell_python.zip - name: Check Django config run: | diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index beea7c15..d4c94658 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -65,12 +65,12 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11 + python-version: 3.13 - name: Create venv run: | cd backend - python3.11 -m venv venv + python3.13 -m venv venv - name: Install packages run: | @@ -85,9 +85,9 @@ jobs: source venv/bin/activate # use version of ifcopenshell with desired schema parsing # TODO: revert to pyPI when schema parsing is published in the future - wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-311-v0.8.4-e8eb5e4-linux64.zip" - mkdir -p venv/lib/python3.11/site-packages - unzip -d venv/lib/python3.11/site-packages /tmp/ifcopenshell_python.zip + wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-313-v0.8.4-e8eb5e4-linux64.zip" + mkdir -p venv/lib/python3.13/site-packages + unzip -d venv/lib/python3.13/site-packages /tmp/ifcopenshell_python.zip - name: Check Django config run: | diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 3292d9f1..2cd4f58e 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -86,12 +86,12 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: 3.11 + python-version: 3.13 - name: Create venv run: | cd backend - python3.11 -m venv .dev/venv --clear + python3.13 -m venv .dev/venv --clear echo "venv/bin folder content:" ls -l .dev/venv/bin @@ -104,14 +104,14 @@ jobs: - name: Download and install ifcopenshell run: | - wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-311-v0.8.4-e8eb5e4-linux64.zip" - mkdir -p .dev/venv/lib/python3.11/site-packages - unzip -o -d .dev/venv/lib/python3.11/site-packages /tmp/ifcopenshell_python.zip + wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-313-v0.8.4-e8eb5e4-linux64.zip" + mkdir -p .dev/venv/lib/python3.13/site-packages + unzip -o -d .dev/venv/lib/python3.13/site-packages /tmp/ifcopenshell_python.zip rm /tmp/ifcopenshell_python.zip # Verify installation - ls -la .dev/venv/lib/python3.11/site-packages/ + ls -la .dev/venv/lib/python3.13/site-packages/ echo "Checking for ifcopenshell installation:" - find .dev/venv/lib/python3.11/site-packages -name "*ifcopenshell*" || echo "No ifcopenshell files found" + find .dev/venv/lib/python3.13/site-packages -name "*ifcopenshell*" || echo "No ifcopenshell files found" working-directory: ./backend - name: Cache frontend dependencies diff --git a/backend/Makefile b/backend/Makefile index 2a2488e0..23ee3728 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -9,30 +9,30 @@ none: @echo venv: - test -d $(VIRTUAL_ENV) || python3.11 -m venv $(VIRTUAL_ENV) + test -d $(VIRTUAL_ENV) || python3.13 -m venv $(VIRTUAL_ENV) install: venv $(PIP) install --upgrade pip find . -name 'requirements.txt' -exec $(PIP) install -r {} \; - wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-311-v0.8.4-e8eb5e4-linux64.zip" - mkdir -p $(VIRTUAL_ENV)/lib/python3.11/site-packages - unzip -f -d $(VIRTUAL_ENV)/lib/python3.11/site-packages /tmp/ifcopenshell_python.zip + wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-313-v0.8.4-e8eb5e4-linux64.zip" + mkdir -p $(VIRTUAL_ENV)/lib/python3.13/site-packages + unzip -f -d $(VIRTUAL_ENV)/lib/python3.13/site-packages /tmp/ifcopenshell_python.zip rm /tmp/ifcopenshell_python.zip install-macos: venv find . -name 'requirements.txt' -exec $(PIP) install -r {} \; $(PIP) install -r requirements.txt - wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-311-v0.8.4-e8eb5e4-macos64.zip" - mkdir -p $(VIRTUAL_ENV)/lib/python3.11/site-packages - unzip /tmp/ifcopenshell_python.zip -d $(VIRTUAL_ENV)/lib/python3.11/site-packages + wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-313-v0.8.4-e8eb5e4-macos64.zip" + mkdir -p $(VIRTUAL_ENV)/lib/python3.13/site-packages + unzip /tmp/ifcopenshell_python.zip -d $(VIRTUAL_ENV)/lib/python3.13/site-packages rm /tmp/ifcopenshell_python.zip install-macos-m1: venv find . -name 'requirements.txt' -exec $(PIP) install -r {} \; $(PIP) install -r requirements.txt - wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-311-v0.8.4-e8eb5e4-macosm164.zip" - mkdir -p $(VIRTUAL_ENV)/lib/python3.11/site-packages - unzip /tmp/ifcopenshell_python.zip -d $(VIRTUAL_ENV)/lib/python3.11/site-packages + wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-313-v0.8.4-e8eb5e4-macosm164.zip" + mkdir -p $(VIRTUAL_ENV)/lib/python3.13/site-packages + unzip /tmp/ifcopenshell_python.zip -d $(VIRTUAL_ENV)/lib/python3.13/site-packages rm /tmp/ifcopenshell_python.zip fetch-modules: diff --git a/backend/apps/ifc_validation/tests/tests_header_validation_task.py b/backend/apps/ifc_validation/tests/tests_header_validation_task.py index 425ead27..b6ce6d59 100644 --- a/backend/apps/ifc_validation/tests/tests_header_validation_task.py +++ b/backend/apps/ifc_validation/tests/tests_header_validation_task.py @@ -150,9 +150,9 @@ def test_header_validation_task_correctly_parses_authoring_tool(self): # assert model = Model.objects.get(id=request.id) self.assertIsNotNone(model) - self.assertEquals('MyFabTool', model.produced_by.name) - self.assertEquals('2025.1', model.produced_by.version) - self.assertEquals('Acme Inc.', model.produced_by.company.name) + self.assertEqual('MyFabTool', model.produced_by.name) + self.assertEqual('2025.1', model.produced_by.version) + self.assertEqual('Acme Inc.', model.produced_by.company.name) def test_header_validation_task_correctly_parses_existing_authoring_tool(self): @@ -176,10 +176,10 @@ def test_header_validation_task_correctly_parses_existing_authoring_tool(self): # assert model = Model.objects.get(id=request.id) self.assertIsNotNone(model) - self.assertEquals('MyFabTool', model.produced_by.name) - self.assertEquals('2025.1', model.produced_by.version) - self.assertEquals('Acme Inc.', model.produced_by.company.name) - self.assertEquals(company.id, model.produced_by.id) + self.assertEqual('MyFabTool', model.produced_by.name) + self.assertEqual('2025.1', model.produced_by.version) + self.assertEqual('Acme Inc.', model.produced_by.company.name) + self.assertEqual(company.id, model.produced_by.id) def test_header_validation_task_correctly_parses_existing_authoring_tool2(self): @@ -204,6 +204,6 @@ def test_header_validation_task_correctly_parses_existing_authoring_tool2(self): # assert model = Model.objects.get(id=request.id) self.assertIsNotNone(model) - self.assertEquals('MyFabTool', model.produced_by.name) - self.assertEquals('2025.1', model.produced_by.version) - self.assertEquals('Acme Inc.', model.produced_by.company.name) + self.assertEqual('MyFabTool', model.produced_by.name) + self.assertEqual('2025.1', model.produced_by.version) + self.assertEqual('Acme Inc.', model.produced_by.company.name) diff --git a/docker/backend/Dockerfile b/docker/backend/Dockerfile index 2172a48e..8dfbfbee 100644 --- a/docker/backend/Dockerfile +++ b/docker/backend/Dockerfile @@ -1,5 +1,5 @@ # BUILD image -FROM python:3.11-slim-bookworm AS build +FROM python:3.13-slim-bookworm AS build ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ @@ -37,9 +37,9 @@ RUN --mount=type=cache,target=/root/.cache \ find /app/backend -name 'requirements.txt' -exec pip install --no-cache-dir -r {} \; && \ # use version of ifcopenshell with desired schema parsing # TODO: revert to pyPI when schema parsing is published in the future - wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-311-v0.8.4-e8eb5e4-linux64.zip" && \ - mkdir -p /opt/venv/lib/python3.11/site-packages && \ - unzip -d /opt/venv/lib/python3.11/site-packages /tmp/ifcopenshell_python.zip && \ + wget -O /tmp/ifcopenshell_python.zip "https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-313-v0.8.4-e8eb5e4-linux64.zip" && \ + mkdir -p /opt/venv/lib/python3.13/site-packages && \ + unzip -d /opt/venv/lib/python3.13/site-packages /tmp/ifcopenshell_python.zip && \ # some cleanup find / -type d -name setuptools -prune -exec rm -rf {} \; && \ find / -type d -name pip -prune -exec rm -rf {} \; && \ @@ -55,7 +55,7 @@ ADD --chmod=777 ./docker/backend/worker-entrypoint.sh /app/backend # RUN image # NOTE: don't use Alpine images... -FROM python:3.11-slim-bookworm AS run +FROM python:3.13-slim-bookworm AS run WORKDIR /app