[Scott Kitterman, 2023-07-20] > I had to override dh_python3 to add --no-guessing-deps in the latest
FTR: you can override detection with debian/py3dist-overrides (see dh_python3's manpage or /usr/share/doc/dh-python/README.PyDist for more details) > dnspython upload because it was getting things wrong. Here's what it > generated: > > python3-httpcore | python3 (<< 3.8), python3-sniffio, python3:any > > The correct answer here is actually use python3:any. Here's what I > think is going on: > > From the pyproject.toml file: > > [tool.poetry.dependencies] > python = "^3.8" > httpx = {version=">=0.24.1", optional=true, python=">=3.8"} > httpcore = {version=">=0.17.3", optional=true, python=">=3.8"} > h2 = {version=">=4.1.0", optional=true, python=">=3.8"} > idna = {version=">=2.1,<4.0", optional=true} > cryptography = {version=">=2.6,<42.0", optional=true} > trio = {version=">=0.14,<0.23", optional=true} > sniffio = {version="^1.1", optional=true} > wmi = {version="^1.5.1", optional=true} > aioquic = {version=">=0.9.20", optional=true} > > ... > > [tool.poetry.extras] > doh = ['httpx', 'h2'] > idna = ['idna'] > dnssec = ['cryptography'] > trio = ['trio'] > wmi = ['wmi'] > doq = ['aioquic'] > > There are two issues: > > 1. httpcore and sniffio shouldn't be listed at all. They are optional. > I suspect that either poetry or dh-python is looking at the extras > section and since those packages aren't listed for one of the extras, it > assumes the package is required, despite the optional flag. They > probably should be listed somewhere (upstream bug), but I think if it > says optional, it shouldn't be added to Depends. dh_python3 doesn't look at source files. It generates dependencies by parsing installed requires.txt file so IMHO it's an upstream / poetry bug > 2. Generating an optional depends on python3 << 3.8 isn't helpful. It > looks to me like {version=">=0.17.3", optional=true, python=">=3.8"} is > being mis-interpreted. I believe the intent here is to say that the > dependency is optional when python3 > 3.8, not you need it if python3 > can you show me how poetry / pyproject / whatever parsed this file interpreted it? I.e. what's in installed requires.txt (I suspect it's a hard dependency there) > 3.8. There's a larger question of why the interpreter version is there > at all, given that's now the minimum python3 version supported, but > that's an upstream issue, we ought to get it right. I agree