Opened 4 weeks ago

Closed 3 weeks ago

#71101 closed defect (fixed)

py*-dnspython 2.7.0 needs py*-sniffio 1.3.1

Reported by: marka63 Owned by: jandemter
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: Schamschula (Marius Schamschula)
Port: py310-sniffio

Description (last modified by ryandesign (Ryan Carsten Schmidt))

dnspython 2.7.0 fails because it can't find thread_local in sniffio which is new in 1.3.0 and has a fix in 1.3.1. See https://sniffio.readthedocs.io/en/latest/history.html

Missing minimum version dependancy for dnspython

Upgrade of sniffio to support thread_local

% python bin/tests/system/cookie/ans9/ans.py
Traceback (most recent call last):
  File "/Users/marka/git/bind9/bin/tests/system/cookie/ans9/ans.py", line 26, in <module>
    import dns.query
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/dns/query.py", line 39, in <module>
    import dns.quic
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/dns/quic/__init__.py", line 39, in <module>
    import trio
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/trio/__init__.py", line 22, in <module>
    from ._core import TASK_STATUS_IGNORED as TASK_STATUS_IGNORED  # isort: split
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/trio/_core/__init__.py", line 9, in <module>
    from ._entry_queue import TrioToken
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/trio/_core/_entry_queue.py", line 10, in <module>
    from .._util import NoPublicConstructor, final
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/trio/_util.py", line 13, in <module>
    from sniffio import thread_local as sniffio_loop
ImportError: cannot import name 'thread_local' from 'sniffio' (/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/sniffio/__init__.py)  
% port installed | grep py310 | grep active
  py310-aioquic @1.2.0_1 (active)
  py310-anytree @2.12.1_0 (active)
  py310-asn1 @0.6.0_0 (active)
  py310-asn1-modules @0.4.0_0 (active)
  py310-async_generator @1.10_0 (active)
  py310-attrs @23.2.0_0 (active)
  py310-beaker @1.12.1_0 (active)
  py310-build @1.2.2.post1_0 (active)
  py310-certifi @2024.08.30_0 (active)
  py310-cffi @1.17.1_0 (active)
  py310-charset-normalizer @3.3.2_0 (active)
  py310-cryptography @42.0.5_0 (active)
  py310-cython @3.0.11_0 (active)
  py310-dnspython @2.7.0_1 (active)
  py310-editables @0.5_0 (active)
  py310-exceptiongroup @1.2.0_0 (active)
  py310-hatch-fancy-pypi-readme @24.1.0_0 (active)
  py310-hatch-vcs @0.4.0_0 (active)
  py310-hatchling @1.25.0_0 (active)
  py310-hypothesis @6.103.2_0 (active)
  py310-idna @3.8_0 (active)
  py310-iniconfig @2.0.0_0 (active)
  py310-installer @0.7.0_0 (active)
  py310-jinja2 @3.1.4_0 (active)
  py310-libxml2 @2.13.4_0 (active)
  py310-lxml @5.2.2_0 (active)
  py310-mako @1.3.5_0 (active)
  py310-markdown @3.6_0 (active)
  py310-markupsafe @2.1.5_0 (active)
  py310-openssl @23.2.0_0 (active)
  py310-outcome @1.1.0_0 (active)
  py310-packaging @24.1_0 (active)
  py310-pathspec @0.12.1_0 (active)
  py310-pluggy @1.5.0_0 (active)
  py310-ply @3.11_0 (active)
  py310-py @1.11.0_0 (active)
  py310-pycparser @2.22_0 (active)
  py310-pygments @2.18.0_0 (active)
  py310-pylsqpack @0.3.18_0 (active)
  py310-pyproject_hooks @1.2.0_0 (active)
  py310-pytest @7.4.3_0 (active)
  py310-requests @2.32.3_0 (active)
  py310-requests-toolbelt @1.0.0_0 (active)
  py310-semantic_version @2.10.0_0 (active)
  py310-service_identity @24.1.0_0 (active)
  py310-setuptools @75.1.0_0 (active)
  py310-setuptools-rust @1.9.0_0 (active)
  py310-setuptools_scm @8.1.0_0 (active)
  py310-six @1.16.0_0 (active)
  py310-sniffio @1.2.0_0 (active)
  py310-sortedcontainers @2.4.0_0 (active)
  py310-toml @0.10.2_0 (active)
  py310-tomli @2.0.1_0 (active)
  py310-trio @0.23.2_0 (active)
  py310-trove-classifiers @2024.10.13_0 (active)
  py310-typing_extensions @4.12.2_0 (active)
  py310-urllib3 @2.2.3_0 (active)
  py310-wheel @0.44.0_0 (active)
  py310-yaml @6.0.1_0 (active)
%

Change History (13)

comment:1 Changed 3 weeks ago by marka63

The full import list being attempted:

from __future__ import print_function
import os
import sys
import signal
import socket
import select
from datetime import datetime, timedelta
import time
import functools

import dns
import dns.edns
import dns.flags
import dns.message
import dns.query
import dns.tsig
import dns.tsigkeyring
import dns.version

from dns.edns import *
from dns.name import *
from dns.rcode import *
from dns.rdataclass import *
from dns.rdatatype import *
from dns.tsig import *
Last edited 3 weeks ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:2 Changed 3 weeks ago by marka63

Port: py310-sniffio added; py310-sniffo removed

comment:3 Changed 3 weeks ago by ryandesign (Ryan Carsten Schmidt)

Cc: Schamschula added
Description: modified (diff)
Owner: set to jandemter
Status: newassigned

comment:4 Changed 3 weeks ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)

comment:5 Changed 3 weeks ago by Schamschula (Marius Schamschula)

This dependency is not declared upstream. See: https://github.com/rthalley/dnspython/blob/main/pyproject.toml

I will open an issue.

comment:6 Changed 3 weeks ago by Schamschula (Marius Schamschula)

comment:7 Changed 3 weeks ago by Schamschula (Marius Schamschula)

However, I can't find bin/tests/system/cookie/ans9/ans.py on my system, and, hence, cannot reproduce the issue locally before reporting it.

comment:8 in reply to:  7 Changed 3 weeks ago by marka63

Replying to Schamschula:

However, I can't find bin/tests/system/cookie/ans9/ans.py on my system, and, hence, cannot reproduce the issue locally before reporting it.

It was attempting this list of imports:

from future import print_function import os import sys import signal import socket import select from datetime import datetime, timedelta import time import functools

import dns import dns.edns import dns.flags import dns.message import dns.query import dns.tsig import dns.tsigkeyring import dns.version

from dns.edns import * from dns.name import * from dns.rcode import * from dns.rdataclass import * from dns.rdatatype import * from dns.tsig import *

Version 0, edited 3 weeks ago by marka63 (next)

comment:9 in reply to:  7 Changed 3 weeks ago by marka63

Replying to Schamschula:

However, I can't find bin/tests/system/cookie/ans9/ans.py on my system, and, hence, cannot reproduce the issue locally before reporting it.

It's part of bind9's test system.

comment:10 Changed 3 weeks ago by Schamschula (Marius Schamschula)

I have bind9 installed. However, this test is only available in the bind9 source code.

I get

python /opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_macports_macports-ports_net_bind9/bind9/work/bind-9.20.2/bin/tests/system/cookie/ans9/ans.py
Traceback (most recent call last):
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_macports_macports-ports_net_bind9/bind9/work/bind-9.20.2/bin/tests/system/cookie/ans9/ans.py", line 159, in <module>
    query4_udp1.bind((ip4_addr1, port))
OSError: [Errno 49] Can't assign requested address
Last edited 3 weeks ago by Schamschula (Marius Schamschula) (previous) (diff)

comment:11 Changed 3 weeks ago by Schamschula (Marius Schamschula)

This problem is a simple one: my local repository was ahead of MacPorts master:

port list py-sniffio
py-sniffio                     @1.3.1          python/py-sniffio
py-sniffio                     @1.2.0          python/py-sniffio

I've pushed it. See: [9d56290f80754da55f836ca6c5c587cc630d4693/macports-ports]

Last edited 3 weeks ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:12 in reply to:  11 Changed 3 weeks ago by marka63

Thanks.

On further reflection the missing version dependancy is with py*-trio rather than py*-dnspython. Somewhere between py310-trio 0.22.2 and py310-trio 0.23.2, py-sniffio 1.3.1 became required.

comment:13 Changed 3 weeks ago by Schamschula (Marius Schamschula)

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.