From 5995d0195978bd301de0abcf5c88291db0961408 Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Mon, 10 Mar 2025 23:07:37 +0200 Subject: [PATCH 1/6] Drop Ubuntu 20.04 (Focal) support Drop Ubuntu 20.04 (Focal) support, because it's nearing its end-of-life date. By doing so, we can remove several workarounds and notices we had in place for this version, and most importantly, remove the pin to our vendored PyMuPDF package. Refs #1018 Refs #965 --- .github/ISSUE_TEMPLATE/bug_report_linux.yml | 4 +- .github/workflows/build.yml | 2 - .github/workflows/check_repos.yml | 14 ------- .github/workflows/ci.yml | 6 --- BUILD.md | 23 ----------- CHANGELOG.md | 2 +- INSTALL.md | 29 -------------- dangerzone/gui/main_window.py | 25 ++---------- dangerzone/util.py | 1 - dev_scripts/env.py | 41 ++------------------ dev_scripts/qa.py | 28 ------------- dodo.py | 2 +- install/linux/debian-vendor-pymupdf.py | 17 -------- install/linux/install-podman-ubuntu-focal.sh | 40 ------------------- 14 files changed, 11 insertions(+), 223 deletions(-) delete mode 100755 install/linux/install-podman-ubuntu-focal.sh diff --git a/.github/ISSUE_TEMPLATE/bug_report_linux.yml b/.github/ISSUE_TEMPLATE/bug_report_linux.yml index 1ab1ea9..89de676 100644 --- a/.github/ISSUE_TEMPLATE/bug_report_linux.yml +++ b/.github/ISSUE_TEMPLATE/bug_report_linux.yml @@ -6,7 +6,7 @@ body: - type: markdown attributes: value: | - Hi, and thanks for taking the time to open this bug report. + Hi, and thanks for taking the time to open this bug report. - type: textarea id: what-happened attributes: @@ -21,7 +21,7 @@ body: label: Linux distribution description: | What is the name and version of your Linux distribution? You can find it out with `cat /etc/os-release` - placeholder: Ubuntu 20.04.6 LTS + placeholder: Ubuntu 22.04.5 LTS validations: required: true - type: textarea diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 108cb37..cd888a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,8 +33,6 @@ jobs: strategy: matrix: include: - - distro: ubuntu - version: "20.04" - distro: ubuntu version: "22.04" - distro: ubuntu diff --git a/.github/workflows/check_repos.yml b/.github/workflows/check_repos.yml index a6ef5e9..1992449 100644 --- a/.github/workflows/check_repos.yml +++ b/.github/workflows/check_repos.yml @@ -25,8 +25,6 @@ jobs: version: "24.04" # noble - distro: ubuntu version: "22.04" # jammy - - distro: ubuntu - version: "20.04" # focal - distro: debian version: "trixie" # 13 - distro: debian @@ -34,18 +32,6 @@ jobs: - distro: debian version: "11" # bullseye steps: - - name: Add Podman repo for Ubuntu Focal - if: matrix.distro == 'ubuntu' && matrix.version == 20.04 - run: | - apt-get update && apt-get -y install curl wget gnupg2 - . /etc/os-release - sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' \ - > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" - wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- \ - | apt-key add - - apt update - apt-get install python-all -y - - name: Add packages.freedom.press PGP key (gpg) if: matrix.version != 'trixie' run: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c2d0ad..fc89978 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -186,8 +186,6 @@ jobs: strategy: matrix: include: - - distro: ubuntu - version: "20.04" - distro: ubuntu version: "22.04" - distro: ubuntu @@ -255,8 +253,6 @@ jobs: strategy: matrix: include: - - distro: ubuntu - version: "20.04" - distro: ubuntu version: "22.04" - distro: ubuntu @@ -383,8 +379,6 @@ jobs: strategy: matrix: include: - - distro: ubuntu - version: "20.04" - distro: ubuntu version: "22.04" - distro: ubuntu diff --git a/BUILD.md b/BUILD.md index 6fc817a..4a7c51e 100644 --- a/BUILD.md +++ b/BUILD.md @@ -34,29 +34,6 @@ Install dependencies: - - - - -
-
- :memo: Expand this section if you are on Ubuntu 20.04 (Focal). -
- - The default Python version that ships with Ubuntu Focal (3.8) is not - compatible with PySide6, which requires Python 3.9 or greater. - - You can install Python 3.9 using the `python3.9` package. - - ```bash - sudo apt install -y python3.9 - ``` - - Poetry will automatically pick up the correct version when running. -
-
- - ```sh sudo apt install -y podman dh-python build-essential make libqt6gui6 \ pipx python3 python3-dev diff --git a/CHANGELOG.md b/CHANGELOG.md index 28aa945..791abcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ since 0.4.1, and this project adheres to [Semantic Versioning](https://semver.or ## [Unreleased](https://github.com/freedomofpress/dangerzone/compare/v0.8.1...HEAD) -- +- Platform support: Drop support for Ubuntu Focal, since it's nearing end-of-life ([#1018](https://github.com/freedomofpress/dangerzone/issues/1018)) ## [0.8.1](https://github.com/freedomofpress/dangerzone/compare/v0.8.1...0.8.0) diff --git a/INSTALL.md b/INSTALL.md index a8e5d2e..3784e0e 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -25,7 +25,6 @@ Dangerzone is available for: - Ubuntu 24.10 (oracular) - Ubuntu 24.04 (noble) - Ubuntu 22.04 (jammy) -- Ubuntu 20.04 (focal) - Debian 13 (trixie) - Debian 12 (bookworm) - Debian 11 (bullseye) @@ -36,34 +35,6 @@ Dangerzone is available for: ### Ubuntu, Debian - - - - -
-
- :memo: Expand this section if you are on Ubuntu 20.04 (Focal). -
- - Dangerzone requires [Podman](https://podman.io/), which is not available - through the official Ubuntu Focal repos. To proceed with the Dangerzone - installation, you need to add an extra OpenSUSE repo that provides Podman to - Ubuntu Focal users. You can follow the instructions below, which have been - copied from the [official Podman blog](https://podman.io/new/2021/06/16/new.html): - - ```bash - sudo apt-get update && sudo apt-get install curl wget gnupg2 -y - . /etc/os-release - sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' \ - > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" - wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- \ - | sudo apt-key add - - sudo apt update - ``` - -
-
-
diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index 80301e1..7ec0a85 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -55,13 +55,6 @@ about updates.

HAMBURGER_MENU_SIZE = 30 -WARNING_MESSAGE = """\ -

Warning: Ubuntu Focal systems and their derivatives will -stop being supported in subsequent Dangerzone releases. We encourage you to upgrade to a -more recent version of your operating system in order to get security updates.

-""" - - def load_svg_image(filename: str, width: int, height: int) -> QtGui.QPixmap: """Load an SVG image from a filename. @@ -632,10 +625,6 @@ class ContentWidget(QtWidgets.QWidget): os_release_path = Path("/etc/os-release") if os_release_path.exists(): os_release = os_release_path.read_text() - if "Ubuntu 20.04" in os_release or "focal" in os_release: - self.warning_label = QtWidgets.QLabel(WARNING_MESSAGE) - self.warning_label.setWordWrap(True) - self.warning_label.setProperty("style", "warning") # Doc selection widget self.doc_selection_widget = DocSelectionWidget(self.dangerzone) @@ -894,22 +883,16 @@ class SettingsWidget(QtWidgets.QWidget): self.safe_extension_name_layout.setSpacing(0) self.safe_extension_name_layout.addWidget(self.safe_extension_filename) self.safe_extension_name_layout.addWidget(self.safe_extension) - # FIXME: Workaround for https://github.com/freedomofpress/dangerzone/issues/339. - # We should drop this once we drop Ubuntu Focal support. - if hasattr(QtGui, "QRegularExpressionValidator"): - QRegEx = QtCore.QRegularExpression - QRegExValidator = QtGui.QRegularExpressionValidator - else: - QRegEx = QtCore.QRegExp # type: ignore [assignment] - QRegExValidator = QtGui.QRegExpValidator # type: ignore [assignment] - self.dot_pdf_validator = QRegExValidator(QRegEx(r".*\.[Pp][Dd][Ff]")) + self.dot_pdf_validator = QtGui.QRegExpValidator( + QtCore.QRegExp(r".*\.[Pp][Dd][Ff]") + ) if platform.system() == "Linux": illegal_chars_regex = r"[/]" elif platform.system() == "Darwin": illegal_chars_regex = r"[\\]" else: illegal_chars_regex = r"[\"*/:<>?\\|]" - self.illegal_chars_regex = QRegEx(illegal_chars_regex) + self.illegal_chars_regex = QtCore.QRegExp(illegal_chars_regex) self.safe_extension_layout = QtWidgets.QHBoxLayout() self.safe_extension_layout.addWidget(self.save_checkbox) self.safe_extension_layout.addWidget(self.safe_extension_label) diff --git a/dangerzone/util.py b/dangerzone/util.py index bcad701..0b0d29b 100644 --- a/dangerzone/util.py +++ b/dangerzone/util.py @@ -58,7 +58,6 @@ def get_tessdata_dir() -> pathlib.Path: pathlib.Path("/usr/share/tessdata/"), # on some Debian pathlib.Path("/usr/share/tesseract/tessdata/"), # on Fedora pathlib.Path("/usr/share/tesseract-ocr/tessdata/"), # ? (documented) - pathlib.Path("/usr/share/tesseract-ocr/4.00/tessdata/"), # on Ubuntu Focal pathlib.Path("/usr/share/tesseract-ocr/5/tessdata/"), # on Debian Trixie ] diff --git a/dev_scripts/env.py b/dev_scripts/env.py index ff4e489..a70de71 100755 --- a/dev_scripts/env.py +++ b/dev_scripts/env.py @@ -60,24 +60,6 @@ Run Dangerzone in the end-user environment: """ -# NOTE: For Ubuntu 20.04 specifically, we need to install some extra deps, mainly for -# Podman. This needs to take place both in our dev and end-user environment. See the -# corresponding note in our Installation section: -# -# https://github.com/freedomofpress/dangerzone/blob/main/INSTALL.md#ubuntu-debian -DOCKERFILE_UBUNTU_2004_DEPS = r""" -ARG DEBIAN_FRONTEND=noninteractive - -RUN apt-get update \ - && apt-get install -y python-all python3.9 curl wget gnupg2 \ - && rm -rf /var/lib/apt/lists/* -RUN . /etc/os-release \ - && sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_$VERSION_ID/ /' \ - > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" \ - && wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_$VERSION_ID/Release.key -O- \ - | apt-key add - -""" - # XXX: overcome the fact that ubuntu images (starting on 23.04) ship with the 'ubuntu' # user by default https://bugs.launchpad.net/cloud-images/+bug/2005129 # Related issue https://github.com/freedomofpress/dangerzone/pull/461 @@ -115,15 +97,7 @@ RUN apt-get update \ && apt-get install -y --no-install-recommends dh-python make build-essential \ git {qt_deps} pipx python3 python3-pip python3-venv dpkg-dev debhelper python3-setuptools \ && rm -rf /var/lib/apt/lists/* -# NOTE: `pipx install poetry` fails on Ubuntu Focal, when installed through APT. By -# installing the latest version, we sidestep this issue. -RUN bash -c 'if [[ "$(pipx --version)" < "1" ]]; then \ - apt-get update \ - && apt-get remove -y pipx \ - && apt-get install -y --no-install-recommends python3-pip \ - && pip install pipx \ - && rm -rf /var/lib/apt/lists/*; \ - else true; fi' +RUN pix install poetry RUN apt-get update \ && apt-get install -y --no-install-recommends mupdf thunar \ && rm -rf /var/lib/apt/lists/* @@ -573,12 +547,7 @@ class Env: # See https://github.com/freedomofpress/dangerzone/issues/482 qt_deps = "libqt6gui6 libxcb-cursor0" install_deps = DOCKERFILE_BUILD_DEV_DEBIAN_DEPS - if self.distro == "ubuntu" and self.version in ("20.04", "focal"): - qt_deps = "libqt5gui5 libxcb-cursor0" # Ubuntu Focal has only Qt5. - install_deps = ( - DOCKERFILE_UBUNTU_2004_DEPS + DOCKERFILE_BUILD_DEV_DEBIAN_DEPS - ) - elif self.distro == "ubuntu" and self.version in ("22.04", "jammy"): + if self.distro == "ubuntu" and self.version in ("22.04", "jammy"): # Ubuntu Jammy misses a dependency to `libxkbcommon-x11-0`, which we can # install indirectly via `qt6-qpa-plugins`. qt_deps += " qt6-qpa-plugins" @@ -642,11 +611,7 @@ class Env: install_cmd = "dnf install -y" else: install_deps = DOCKERFILE_BUILD_DEBIAN_DEPS - if self.distro == "ubuntu" and self.version in ("20.04", "focal"): - install_deps = ( - DOCKERFILE_UBUNTU_2004_DEPS + DOCKERFILE_BUILD_DEBIAN_DEPS - ) - elif self.distro == "ubuntu" and self.version in ("22.04", "jammy"): + if self.distro == "ubuntu" and self.version in ("22.04", "jammy"): # Ubuntu Jammy requires a more up-to-date conmon # package (see https://github.com/freedomofpress/dangerzone/issues/685) install_deps = DOCKERFILE_CONMON_UPDATE + DOCKERFILE_BUILD_DEBIAN_DEPS diff --git a/dev_scripts/qa.py b/dev_scripts/qa.py index ef2b321..12526a2 100755 --- a/dev_scripts/qa.py +++ b/dev_scripts/qa.py @@ -251,29 +251,6 @@ Install dependencies:
- - - - -
-
- :memo: Expand this section if you are on Ubuntu 20.04 (Focal). -
- - The default Python version that ships with Ubuntu Focal (3.8) is not - compatible with PySide6, which requires Python 3.9 or greater. - - You can install Python 3.9 using the `python3.9` package. - - ```bash - sudo apt install -y python3.9 - ``` - - Poetry will automatically pick up the correct version when running. -
-
- - ```sh sudo apt install -y podman dh-python build-essential make libqt6gui6 \ pipx python3 python3-dev @@ -1035,11 +1012,6 @@ class QADebianTrixie(QADebianBased): VERSION = "trixie" -class QAUbuntu2004(QADebianBased): - DISTRO = "ubuntu" - VERSION = "20.04" - - class QAUbuntu2204(QADebianBased): DISTRO = "ubuntu" VERSION = "22.04" diff --git a/dodo.py b/dodo.py index 2022ffa..4584b74 100644 --- a/dodo.py +++ b/dodo.py @@ -9,7 +9,7 @@ from doit.action import CmdAction ARCH = "arm64" if platform.machine() == "arm64" else "i686" VERSION = open("share/version.txt").read().strip() FEDORA_VERSIONS = ["40", "41"] -DEBIAN_VERSIONS = ["bullseye", "focal", "jammy", "mantic", "noble", "trixie"] +DEBIAN_VERSIONS = ["bullseye", "jammy", "mantic", "noble", "trixie"] ### Global parameters diff --git a/install/linux/debian-vendor-pymupdf.py b/install/linux/debian-vendor-pymupdf.py index 9cb5ccc..8cdd66c 100755 --- a/install/linux/debian-vendor-pymupdf.py +++ b/install/linux/debian-vendor-pymupdf.py @@ -31,23 +31,6 @@ def main(): cmd = ["poetry", "export", "--only", "debian"] container_requirements_txt = subprocess.check_output(cmd) - # XXX: Hack for Ubuntu Focal. - # - # The `requirements.txt` file is generated from our `pyproject.toml` file, and thus - # specifies that the minimum Python version is 3.9. This was to accommodate to - # PySide6, which is installed in macOS / Windows via `poetry` and works with Python - # 3.9+. [1] - # - # The Python version in Ubuntu Focal though is 3.8. This generally was not much of - # an issue, since we used the package manager to install dependencies. However, it - # becomes an issue when we want to vendor the PyMuPDF package, using `pip`. In order - # to sidestep this virtual limitation, we can just change the Python version in the - # generated `requirements.txt` file in Ubuntu Focal from 3.9 to 3.8. - # - # [1] https://github.com/freedomofpress/dangerzone/pull/818 - if sys.version.startswith("3.8"): - container_requirements_txt = container_requirements_txt.replace(b"3.9", b"3.8") - logger.info(f"Vendoring PyMuPDF under '{args.dest}'") # We prefer to call the CLI version of `pip`, instead of importing it directly, as # instructed here: diff --git a/install/linux/install-podman-ubuntu-focal.sh b/install/linux/install-podman-ubuntu-focal.sh deleted file mode 100755 index 34351ec..0000000 --- a/install/linux/install-podman-ubuntu-focal.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# Development script for installing Podman on Ubuntu Focal. Mainly to be used as -# part of our CI pipelines, where we may install Podman on environments that -# don't have sudo. - -set -e - -if [[ "$EUID" -ne 0 ]]; then - SUDO=sudo -else - SUDO= -fi - -provide() { - $SUDO apt-get update - $SUDO apt-get install curl wget gnupg2 -y - source /etc/os-release - $SUDO sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' \ - > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" - wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- \ - | $SUDO apt-key add - - $SUDO apt-get update -qq -y -} - -install() { - $SUDO apt-get -qq --yes install podman - podman --version -} - -if [[ "$1" == "--repo-only" ]]; then - provide -elif [[ "$1" == "" ]]; then - provide - install -else - echo "Unexpected argument: $1" - echo "Usage: $0 [--repo-only]" - exit 1 -fi From 603fe86f4a0caa47d67da8bb6cb6bbe397581617 Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Mon, 10 Mar 2025 23:10:56 +0200 Subject: [PATCH 2/6] Unpin the Debian-vendored PyMuPDF package Unpin the PyMuPDF package that we vendor in our Debian packages. We originally pinned it to version 1.24.11, because it was the last version that supported Ubuntu Focal, but we can now unpin it, since we have dropped Ubuntu Focal support. Fixes #1018 --- poetry.lock | 133 ++++++++++++++++++++++--------------------------- pyproject.toml | 2 +- 2 files changed, 60 insertions(+), 75 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2b28f93..c50550e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -486,13 +486,13 @@ files = [ [[package]] name = "jinja2" -version = "3.1.5" +version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, - {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -831,19 +831,18 @@ setuptools = ">=42.0.0" [[package]] name = "pymupdf" -version = "1.24.11" +version = "1.25.3" description = "A high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "PyMuPDF-1.24.11-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:24c35ba9e731027ff24566b90d4986e9aac75e1ce47589b25de51e3c687ddb73"}, - {file = "PyMuPDF-1.24.11-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:20c8eb65b855a33411246d6697a3f3166727fe2d8585753cf0db648730104be6"}, - {file = "PyMuPDF-1.24.11-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32fd013e3c844f105c0a6a43ee82acc7cd0c900f6ff14f5eed9492840bbcbdd9"}, - {file = "PyMuPDF-1.24.11-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2efb793644df99db0fe2468149048175cf25c5803997828efc9152aca838f5f2"}, - {file = "PyMuPDF-1.24.11-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9b7ac5b8ec3daec17f2e830962ed091610e576a5e531d2fe28c437fbd69b1969"}, - {file = "PyMuPDF-1.24.11-cp38-abi3-win32.whl", hash = "sha256:6fda6c7ed7e6ad74d9cfac5c3837ef42efd58c506440e2513a0a200bc3c4dbc0"}, - {file = "PyMuPDF-1.24.11-cp38-abi3-win_amd64.whl", hash = "sha256:745ce77532702d6ddeeecb47306d3669629aa5ff82708318cd652881f493b0ba"}, - {file = "PyMuPDF-1.24.11.tar.gz", hash = "sha256:6e45e57f14ac902029d4aacf07684958d0e58c769f47d9045b2048d0a3d20155"}, + {file = "pymupdf-1.25.3-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:96878e1b748f9c2011aecb2028c5f96b5a347a9a91169130ad0133053d97915e"}, + {file = "pymupdf-1.25.3-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:6ef753005b72ebfd23470f72f7e30f61e21b0b5e748045ec5b8f89e6e3068d62"}, + {file = "pymupdf-1.25.3-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:46d90c4f9e62d1856e8db4b9f04a202ff4a7f086a816af73abdc86adb7f5e25a"}, + {file = "pymupdf-1.25.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5de51efdbe4d486b6c1111c84e8a231cbfb426f3d6ff31ab530ad70e6f39756"}, + {file = "pymupdf-1.25.3-cp39-abi3-win32.whl", hash = "sha256:bca72e6089f985d800596e22973f79cc08af6cbff1d93e5bda9248326a03857c"}, + {file = "pymupdf-1.25.3-cp39-abi3-win_amd64.whl", hash = "sha256:4fb357438c9129fbf939b5af85323434df64e36759c399c376b62ad6da95498c"}, + {file = "pymupdf-1.25.3.tar.gz", hash = "sha256:b640187c64c5ac5d97505a92e836da299da79c2f689f3f94a67a37a493492193"}, ] [[package]] @@ -1009,29 +1008,27 @@ test = ["Pygments (>=2.0)", "anyio", "docutils (>=0.12)", "pytest (>=4.0)", "pyt [[package]] name = "pywin32" -version = "308" +version = "309" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, - {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, - {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, - {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, - {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, - {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, - {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, - {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, - {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, - {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, - {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, - {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, - {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, - {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, - {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, - {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, - {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, - {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, + {file = "pywin32-309-cp310-cp310-win32.whl", hash = "sha256:5b78d98550ca093a6fe7ab6d71733fbc886e2af9d4876d935e7f6e1cd6577ac9"}, + {file = "pywin32-309-cp310-cp310-win_amd64.whl", hash = "sha256:728d08046f3d65b90d4c77f71b6fbb551699e2005cc31bbffd1febd6a08aa698"}, + {file = "pywin32-309-cp310-cp310-win_arm64.whl", hash = "sha256:c667bcc0a1e6acaca8984eb3e2b6e42696fc035015f99ff8bc6c3db4c09a466a"}, + {file = "pywin32-309-cp311-cp311-win32.whl", hash = "sha256:d5df6faa32b868baf9ade7c9b25337fa5eced28eb1ab89082c8dae9c48e4cd51"}, + {file = "pywin32-309-cp311-cp311-win_amd64.whl", hash = "sha256:e7ec2cef6df0926f8a89fd64959eba591a1eeaf0258082065f7bdbe2121228db"}, + {file = "pywin32-309-cp311-cp311-win_arm64.whl", hash = "sha256:54ee296f6d11db1627216e9b4d4c3231856ed2d9f194c82f26c6cb5650163f4c"}, + {file = "pywin32-309-cp312-cp312-win32.whl", hash = "sha256:de9acacced5fa82f557298b1fed5fef7bd49beee04190f68e1e4783fbdc19926"}, + {file = "pywin32-309-cp312-cp312-win_amd64.whl", hash = "sha256:6ff9eebb77ffc3d59812c68db33c0a7817e1337e3537859499bd27586330fc9e"}, + {file = "pywin32-309-cp312-cp312-win_arm64.whl", hash = "sha256:619f3e0a327b5418d833f44dc87859523635cf339f86071cc65a13c07be3110f"}, + {file = "pywin32-309-cp313-cp313-win32.whl", hash = "sha256:008bffd4afd6de8ca46c6486085414cc898263a21a63c7f860d54c9d02b45c8d"}, + {file = "pywin32-309-cp313-cp313-win_amd64.whl", hash = "sha256:bd0724f58492db4cbfbeb1fcd606495205aa119370c0ddc4f70e5771a3ab768d"}, + {file = "pywin32-309-cp313-cp313-win_arm64.whl", hash = "sha256:8fd9669cfd41863b688a1bc9b1d4d2d76fd4ba2128be50a70b0ea66b8d37953b"}, + {file = "pywin32-309-cp38-cp38-win32.whl", hash = "sha256:617b837dc5d9dfa7e156dbfa7d3906c009a2881849a80a9ae7519f3dd8c6cb86"}, + {file = "pywin32-309-cp38-cp38-win_amd64.whl", hash = "sha256:0be3071f555480fbfd86a816a1a773880ee655bf186aa2931860dbb44e8424f8"}, + {file = "pywin32-309-cp39-cp39-win32.whl", hash = "sha256:72ae9ae3a7a6473223589a1621f9001fe802d59ed227fd6a8503c9af67c1d5f4"}, + {file = "pywin32-309-cp39-cp39-win_amd64.whl", hash = "sha256:88bc06d6a9feac70783de64089324568ecbc65866e2ab318eab35da3811fd7ef"}, ] [[package]] @@ -1068,40 +1065,40 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "ruff" -version = "0.9.6" +version = "0.9.10" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.9.6-py3-none-linux_armv6l.whl", hash = "sha256:2f218f356dd2d995839f1941322ff021c72a492c470f0b26a34f844c29cdf5ba"}, - {file = "ruff-0.9.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b908ff4df65dad7b251c9968a2e4560836d8f5487c2f0cc238321ed951ea0504"}, - {file = "ruff-0.9.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b109c0ad2ececf42e75fa99dc4043ff72a357436bb171900714a9ea581ddef83"}, - {file = "ruff-0.9.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1de4367cca3dac99bcbd15c161404e849bb0bfd543664db39232648dc00112dc"}, - {file = "ruff-0.9.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3ee4d7c2c92ddfdaedf0bf31b2b176fa7aa8950efc454628d477394d35638b"}, - {file = "ruff-0.9.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dc1edd1775270e6aa2386119aea692039781429f0be1e0949ea5884e011aa8e"}, - {file = "ruff-0.9.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4a091729086dffa4bd070aa5dab7e39cc6b9d62eb2bef8f3d91172d30d599666"}, - {file = "ruff-0.9.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1bbc6808bf7b15796cef0815e1dfb796fbd383e7dbd4334709642649625e7c5"}, - {file = "ruff-0.9.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:589d1d9f25b5754ff230dce914a174a7c951a85a4e9270613a2b74231fdac2f5"}, - {file = "ruff-0.9.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc61dd5131742e21103fbbdcad683a8813be0e3c204472d520d9a5021ca8b217"}, - {file = "ruff-0.9.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5e2d9126161d0357e5c8f30b0bd6168d2c3872372f14481136d13de9937f79b6"}, - {file = "ruff-0.9.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:68660eab1a8e65babb5229a1f97b46e3120923757a68b5413d8561f8a85d4897"}, - {file = "ruff-0.9.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c4cae6c4cc7b9b4017c71114115db0445b00a16de3bcde0946273e8392856f08"}, - {file = "ruff-0.9.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:19f505b643228b417c1111a2a536424ddde0db4ef9023b9e04a46ed8a1cb4656"}, - {file = "ruff-0.9.6-py3-none-win32.whl", hash = "sha256:194d8402bceef1b31164909540a597e0d913c0e4952015a5b40e28c146121b5d"}, - {file = "ruff-0.9.6-py3-none-win_amd64.whl", hash = "sha256:03482d5c09d90d4ee3f40d97578423698ad895c87314c4de39ed2af945633caa"}, - {file = "ruff-0.9.6-py3-none-win_arm64.whl", hash = "sha256:0e2bb706a2be7ddfea4a4af918562fdc1bcb16df255e5fa595bbd800ce322a5a"}, - {file = "ruff-0.9.6.tar.gz", hash = "sha256:81761592f72b620ec8fa1068a6fd00e98a5ebee342a3642efd84454f3031dca9"}, + {file = "ruff-0.9.10-py3-none-linux_armv6l.whl", hash = "sha256:eb4d25532cfd9fe461acc83498361ec2e2252795b4f40b17e80692814329e42d"}, + {file = "ruff-0.9.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:188a6638dab1aa9bb6228a7302387b2c9954e455fb25d6b4470cb0641d16759d"}, + {file = "ruff-0.9.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5284dcac6b9dbc2fcb71fdfc26a217b2ca4ede6ccd57476f52a587451ebe450d"}, + {file = "ruff-0.9.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47678f39fa2a3da62724851107f438c8229a3470f533894b5568a39b40029c0c"}, + {file = "ruff-0.9.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99713a6e2766b7a17147b309e8c915b32b07a25c9efd12ada79f217c9c778b3e"}, + {file = "ruff-0.9.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524ee184d92f7c7304aa568e2db20f50c32d1d0caa235d8ddf10497566ea1a12"}, + {file = "ruff-0.9.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:df92aeac30af821f9acf819fc01b4afc3dfb829d2782884f8739fb52a8119a16"}, + {file = "ruff-0.9.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de42e4edc296f520bb84954eb992a07a0ec5a02fecb834498415908469854a52"}, + {file = "ruff-0.9.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d257f95b65806104b6b1ffca0ea53f4ef98454036df65b1eda3693534813ecd1"}, + {file = "ruff-0.9.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60dec7201c0b10d6d11be00e8f2dbb6f40ef1828ee75ed739923799513db24c"}, + {file = "ruff-0.9.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d838b60007da7a39c046fcdd317293d10b845001f38bcb55ba766c3875b01e43"}, + {file = "ruff-0.9.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ccaf903108b899beb8e09a63ffae5869057ab649c1e9231c05ae354ebc62066c"}, + {file = "ruff-0.9.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f9567d135265d46e59d62dc60c0bfad10e9a6822e231f5b24032dba5a55be6b5"}, + {file = "ruff-0.9.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5f202f0d93738c28a89f8ed9eaba01b7be339e5d8d642c994347eaa81c6d75b8"}, + {file = "ruff-0.9.10-py3-none-win32.whl", hash = "sha256:bfb834e87c916521ce46b1788fbb8484966e5113c02df216680102e9eb960029"}, + {file = "ruff-0.9.10-py3-none-win_amd64.whl", hash = "sha256:f2160eeef3031bf4b17df74e307d4c5fb689a6f3a26a2de3f7ef4044e3c484f1"}, + {file = "ruff-0.9.10-py3-none-win_arm64.whl", hash = "sha256:5fd804c0327a5e5ea26615550e706942f348b197d5475ff34c19733aee4b2e69"}, + {file = "ruff-0.9.10.tar.gz", hash = "sha256:9bacb735d7bada9cfb0f2c227d3658fc443d90a727b47f206fb33f52f3c0eac7"}, ] [[package]] name = "setuptools" -version = "75.8.0" +version = "75.9.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" files = [ - {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, - {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, + {file = "setuptools-75.9.1-py3-none-any.whl", hash = "sha256:0a6f876d62f4d978ca1a11ab4daf728d1357731f978543ff18ecdbf9fd071f73"}, + {file = "setuptools-75.9.1.tar.gz", hash = "sha256:b6eca2c3070cdc82f71b4cb4bb2946bc0760a210d11362278cf1ff394e6ea32c"}, ] [package.extras] @@ -1224,18 +1221,17 @@ files = [ [[package]] name = "types-pygments" -version = "2.19.0.20250219" +version = "2.19.0.20250305" description = "Typing stubs for Pygments" optional = false python-versions = ">=3.9" files = [ - {file = "types_Pygments-2.19.0.20250219-py3-none-any.whl", hash = "sha256:5e3e1f660665b3a2ea946dda794b8d5b05772d789181704b523d646e8a7f4382"}, - {file = "types_pygments-2.19.0.20250219.tar.gz", hash = "sha256:a4a279338c96f3d4f2eb2c4d7c6c5593c88108b185bb5c664f943f781170cd14"}, + {file = "types_pygments-2.19.0.20250305-py3-none-any.whl", hash = "sha256:ca88aae5ec426f9b107c0f7adc36dc096d2882d930a49f679eaf4b8b643db35d"}, + {file = "types_pygments-2.19.0.20250305.tar.gz", hash = "sha256:044c50e80ecd4128c00a7268f20355e16f5c55466d3d49dfda09be920af40b4b"}, ] [package.dependencies] types-docutils = "*" -types-setuptools = "*" [[package]] name = "types-pyside2" @@ -1250,29 +1246,18 @@ files = [ [[package]] name = "types-requests" -version = "2.32.0.20241016" +version = "2.32.0.20250306" description = "Typing stubs for requests" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, - {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, + {file = "types_requests-2.32.0.20250306-py3-none-any.whl", hash = "sha256:25f2cbb5c8710b2022f8bbee7b2b66f319ef14aeea2f35d80f18c9dbf3b60a0b"}, + {file = "types_requests-2.32.0.20250306.tar.gz", hash = "sha256:0962352694ec5b2f95fda877ee60a159abdf84a0fc6fdace599f20acb41a03d1"}, ] [package.dependencies] urllib3 = ">=2" -[[package]] -name = "types-setuptools" -version = "75.8.0.20250210" -description = "Typing stubs for setuptools" -optional = false -python-versions = ">=3.9" -files = [ - {file = "types_setuptools-75.8.0.20250210-py3-none-any.whl", hash = "sha256:a217d7b4d59be04c29e23d142c959a0f85e71292fd3fc4313f016ca11f0b56dc"}, - {file = "types_setuptools-75.8.0.20250210.tar.gz", hash = "sha256:c1547361b2441f07c94e25dce8a068e18c611593ad4b6fdd727b1a8f5d1fda33"}, -] - [[package]] name = "typing-extensions" version = "4.12.2" @@ -1323,4 +1308,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.14" -content-hash = "bd66b4a55c137f803902b235627ca4399c30d5428be8be925ca8d2a394c5dc80" +content-hash = "d8a5861e3c50aec2b3b787c87b9b8f8ceab5240f152af9db87451ef4e33a8a32" diff --git a/pyproject.toml b/pyproject.toml index fcdea48..b8cf646 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,7 +59,7 @@ pytest-subprocess = "^1.5.2" pytest-rerunfailures = "^14.0" [tool.poetry.group.debian.dependencies] -pymupdf = "1.24.11" # Last version to support python 3.8 (needed for Ubuntu Focal support) +pymupdf = "^1.24.11" [tool.poetry.group.dev.dependencies] httpx = "^0.27.2" From 47bc5cdb4ad12db3b38de6e6ee53a591106a33f9 Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Mon, 10 Mar 2025 23:14:15 +0200 Subject: [PATCH 3/6] Use correct Ubuntu version for conmon notice --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 3784e0e..32621f9 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -39,7 +39,7 @@ Dangerzone is available for:
- :information_source: Backport notice for Ubuntu 24.04 (Noble) users regarding the conmon package + :information_source: Backport notice for Ubuntu 22.04 (Jammy) users regarding the conmon package
The `conmon` version that Podman uses and Ubuntu Jammy ships, has a bug From 606efa7ea23011c0c4bc07d1fc70e7a4c55e2c9f Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Mon, 10 Mar 2025 23:24:43 +0200 Subject: [PATCH 4/6] fixup! Drop Ubuntu 20.04 (Focal) support --- dangerzone/gui/main_window.py | 9 --------- dev_scripts/env.py | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index 7ec0a85..280f68b 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -619,13 +619,6 @@ class ContentWidget(QtWidgets.QWidget): self.dangerzone = dangerzone self.conversion_started = False - self.warning_label = None - if platform.system() == "Linux": - # Add the warning message only for ubuntu focal - os_release_path = Path("/etc/os-release") - if os_release_path.exists(): - os_release = os_release_path.read_text() - # Doc selection widget self.doc_selection_widget = DocSelectionWidget(self.dangerzone) self.doc_selection_widget.documents_selected.connect(self.documents_selected) @@ -651,8 +644,6 @@ class ContentWidget(QtWidgets.QWidget): # Layout layout = QtWidgets.QVBoxLayout() - if self.warning_label: - layout.addWidget(self.warning_label) # Add warning at the top layout.addWidget(self.settings_widget, stretch=1) layout.addWidget(self.documents_list, stretch=1) layout.addWidget(self.doc_selection_wrapper, stretch=1) diff --git a/dev_scripts/env.py b/dev_scripts/env.py index a70de71..a739004 100755 --- a/dev_scripts/env.py +++ b/dev_scripts/env.py @@ -97,7 +97,7 @@ RUN apt-get update \ && apt-get install -y --no-install-recommends dh-python make build-essential \ git {qt_deps} pipx python3 python3-pip python3-venv dpkg-dev debhelper python3-setuptools \ && rm -rf /var/lib/apt/lists/* -RUN pix install poetry +RUN pipx install poetry RUN apt-get update \ && apt-get install -y --no-install-recommends mupdf thunar \ && rm -rf /var/lib/apt/lists/* From d9a714b793e549e2804636a88280fcef3aadb6c6 Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Mon, 10 Mar 2025 23:36:49 +0200 Subject: [PATCH 5/6] fixup! Drop Ubuntu 20.04 (Focal) support --- dangerzone/gui/main_window.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index 280f68b..bb87371 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -185,6 +185,9 @@ class MainWindow(QtWidgets.QMainWindow): header_layout.addWidget(self.hamburger_button) header_layout.addSpacing(15) + # Content widget, contains all the window content except waiting widget + self.content_widget = ContentWidget(self.dangerzone) + if self.dangerzone.isolation_provider.should_wait_install(): # Waiting widget replaces content widget while container runtime isn't available self.waiting_widget: WaitingWidget = WaitingWidgetContainer(self.dangerzone) @@ -194,9 +197,6 @@ class MainWindow(QtWidgets.QMainWindow): self.waiting_widget = WaitingWidget() self.dangerzone.is_waiting_finished = True - # Content widget, contains all the window content except waiting widget - self.content_widget = ContentWidget(self.dangerzone) - # Only use the waiting widget if container runtime isn't available if self.dangerzone.is_waiting_finished: self.waiting_widget.hide() @@ -874,8 +874,8 @@ class SettingsWidget(QtWidgets.QWidget): self.safe_extension_name_layout.setSpacing(0) self.safe_extension_name_layout.addWidget(self.safe_extension_filename) self.safe_extension_name_layout.addWidget(self.safe_extension) - self.dot_pdf_validator = QtGui.QRegExpValidator( - QtCore.QRegExp(r".*\.[Pp][Dd][Ff]") + self.dot_pdf_validator = QtGui.QRegularExpressionValidator( + QtCore.QRegularExpression(r".*\.[Pp][Dd][Ff]") ) if platform.system() == "Linux": illegal_chars_regex = r"[/]" @@ -883,7 +883,7 @@ class SettingsWidget(QtWidgets.QWidget): illegal_chars_regex = r"[\\]" else: illegal_chars_regex = r"[\"*/:<>?\\|]" - self.illegal_chars_regex = QtCore.QRegExp(illegal_chars_regex) + self.illegal_chars_regex = QtCore.QRegularExpression(illegal_chars_regex) self.safe_extension_layout = QtWidgets.QHBoxLayout() self.safe_extension_layout.addWidget(self.save_checkbox) self.safe_extension_layout.addWidget(self.safe_extension_label) From 11fa8ab7a80e32be290b2bac01d0247a66bd620e Mon Sep 17 00:00:00 2001 From: Alex Pyrgiotis Date: Tue, 11 Mar 2025 10:59:29 +0200 Subject: [PATCH 6/6] FIXUP: Re-add tesseract path --- dangerzone/util.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dangerzone/util.py b/dangerzone/util.py index 0b0d29b..1fa3025 100644 --- a/dangerzone/util.py +++ b/dangerzone/util.py @@ -58,6 +58,7 @@ def get_tessdata_dir() -> pathlib.Path: pathlib.Path("/usr/share/tessdata/"), # on some Debian pathlib.Path("/usr/share/tesseract/tessdata/"), # on Fedora pathlib.Path("/usr/share/tesseract-ocr/tessdata/"), # ? (documented) + pathlib.Path("/usr/share/tesseract-ocr/4.00/tessdata/"), # on Debian Bullseye pathlib.Path("/usr/share/tesseract-ocr/5/tessdata/"), # on Debian Trixie ]