[ https://issues.apache.org/jira/browse/QPID-8632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17710211#comment-17710211 ]
ASF subversion and git services commented on QPID-8632: ------------------------------------------------------- Commit f28a657a1a9201cd628b5225a131751beffb2cd7 in qpid-python's branch refs/heads/main from Jiri Daněk [ https://gitbox.apache.org/repos/asf?p=qpid-python.git;h=f28a657 ] QPID-8632: use absolute, full imports when dealing with circular imports (#7) This patch leaves the circular import in place, but changes the importing code to make it overall safer. > [python client] Circular imports in mllib and qpid.connection, qpid.delegates > ----------------------------------------------------------------------------- > > Key: QPID-8632 > URL: https://issues.apache.org/jira/browse/QPID-8632 > Project: Qpid > Issue Type: Bug > Components: Python Client > Affects Versions: qpid-python-1.38.0 > Reporter: Jiri Daněk > Priority: Blocker > > Circular imports in Python actually do work, and break only when one makes a > change that trips this potential minefield. One such change is Python 2/3 > compatibility. > What triggers the problem is the situation when two modules import each > other, _and_ the other module needs to be evaluated for the first import > (when evaluating the first module) to complete. See > https://stackoverflow.com/questions/744373/what-happens-when-using-mutual-or-circular-cyclic-imports > for discussion and examples. > Picking solution that is compatible with Python 2 as well as Python 3 in the > future (QPID-8631) is tricky. > {noformat} > Traceback (most recent call last): > File "./qpid-python-test", line 29, in <module> > from qpid.harness import Skipped > File "/home/runner/work/qpid-python/qpid-python/qpid/__init__.py", line 20, > in <module> > from . import connection > File "/home/runner/work/qpid-python/qpid-python/qpid/connection.py", line > 29, in <module> > from . import delegates > File "/home/runner/work/qpid-python/qpid-python/qpid/delegates.py", line > 21, in <module> > from . import connection, session > ImportError: cannot import name connection > {noformat} > {noformat} > Traceback (most recent call last): > File "./qpid-python-test", line 30, in <module> > from qpid.harness import Skipped > File "/home/runner/work/qpid-python/qpid-python/qpid/__init__.py", line 21, > in <module> > from . import connection > File "/home/runner/work/qpid-python/qpid-python/qpid/connection.py", line > 21, in <module> > from . import datatypes, session > File "/home/runner/work/qpid-python/qpid-python/qpid/session.py", line 22, > in <module> > from .generator import command_invoker > File "/home/runner/work/qpid-python/qpid-python/qpid/generator.py", line > 23, in <module> > from .ops import * > File "/home/runner/work/qpid-python/qpid-python/qpid/ops.py", line 21, in > <module> > import os, mllib, sys > File "/home/runner/work/qpid-python/qpid-python/mllib/__init__.py", line > 27, in <module> > from . import dom, transforms, parsers > File "/home/runner/work/qpid-python/qpid-python/mllib/dom.py", line 34, in > <module> > from . import transforms > File "/home/runner/work/qpid-python/qpid-python/mllib/transforms.py", line > 25, in <module> > from . import dom > ImportError: cannot import name dom > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org