Compatibility with older Debian/Ubuntu releases?

Original issue

I built the dh-debputy_0.1.21_all.deb and tried to install it on a Ubuntu 20.04 laptop. Apt does not complain about any dependencies, but the installation does fail on apparently too old Python version:

Setting up dh-debputy (0.1.21) ...
  File "/usr/share/dh-debputy/debputy/commands/deb_packer.py", line 133
    ) as compress_proc,
      ^
SyntaxError: invalid syntax

dpkg: error processing package dh-debputy (--configure):
 installed dh-debputy package post-installation script subprocess returned error exit status 1
Processing triggers for man-db (2.9.1-1) ...
Errors were encountered while processing:
 dh-debputy

Running fails with:

$ debputy 
Traceback (most recent call last):
  File "/usr/bin/debputy", line 6, in <module>
    from debputy.commands.debputy_cmd.__main__ import main
  File "/usr/share/dh-debputy/debputy/commands/debputy_cmd/__main__.py", line 12, in <module>
    from typing import (
ImportError: cannot import name 'NotRequired' from 'typing' (/usr/lib/python3.8/typing.py)

Do you know off the top of your head what the expected backwards compatibility is of debputy? Can we update debian/control to reflect it?

Current baseline support issues

Current baseline is defined as Debian stable(-backports) and Ubuntu noble for debputy {lint,lsp server,reformat}. Outstanding issues:

  • Debian stable(-backports)

    • Build-Depends/Depends
      • Python (3.11)
      • YAML parser (trivially fixable without backport)
      • (Optionally) python3-lsprotocol + python3-pygls (needs backport)
    • Add CI case running tests in Debian stable + backports
  • Ubuntu 24.04 (noble)

    • Build-Depends/Depends
      • Python (3.11)
      • YAML parser
      • python3-lsprotocol + python3-pygls
    • Add CI case running tests in Ubuntu noble

Note: Debian stable is a moving target and will be a long term commitment (like with debhelper) provided lsprotocol and pygls are acceptable backports. Ubuntu noble is a fixed target and will at some point be "too old".

Edited by Niels Thykier