Skip to content

Commit 555d89a

Browse files
committed
fixup! pdb: import pdbcls lazily
1 parent e191c95 commit 555d89a

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

src/_pytest/debugging.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -90,29 +90,30 @@ def _is_capturing(cls, capman):
9090

9191
@classmethod
9292
def _import_pdb_cls(cls):
93-
if cls._config:
94-
pdb_cls = cls._config.getvalue("usepdb_cls")
95-
if pdb_cls:
96-
modname, classname = pdb_cls
97-
98-
try:
99-
__import__(modname)
100-
mod = sys.modules[modname]
101-
102-
# Handle --pdbcls=pdb:pdb.Pdb (useful e.g. with pdbpp).
103-
parts = classname.split(".")
104-
pdb_cls = getattr(mod, parts[0])
105-
for part in parts[1:]:
106-
pdb_cls = getattr(pdb_cls, part)
107-
108-
return pdb_cls
109-
except Exception as exc:
110-
value = ":".join((modname, classname))
111-
raise UsageError(
112-
"--pdbcls: could not import {!r}: {}".format(value, exc)
113-
)
114-
115-
return pdb.Pdb
93+
if not cls._config:
94+
# Happens when using pytest.set_trace outside of a test.
95+
return pdb.Pdb
96+
97+
pdb_cls = cls._config.getvalue("usepdb_cls")
98+
if not pdb_cls:
99+
return pdb.Pdb
100+
101+
modname, classname = pdb_cls
102+
103+
try:
104+
__import__(modname)
105+
mod = sys.modules[modname]
106+
107+
# Handle --pdbcls=pdb:pdb.Pdb (useful e.g. with pdbpp).
108+
parts = classname.split(".")
109+
pdb_cls = getattr(mod, parts[0])
110+
for part in parts[1:]:
111+
pdb_cls = getattr(pdb_cls, part)
112+
113+
return pdb_cls
114+
except Exception as exc:
115+
value = ":".join((modname, classname))
116+
raise UsageError("--pdbcls: could not import {!r}: {}".format(value, exc))
116117

117118
@classmethod
118119
def _init_pdb(cls, *args, **kwargs):

0 commit comments

Comments
 (0)