44#
55# Copyright (c) 2004-2021 Holger Krekel and others
66"""Discover and run ipdoctests in modules and test files."""
7- import builtins
87import bdb
8+ import builtins
99import inspect
1010import os
1111import platform
1515import warnings
1616from contextlib import contextmanager
1717from pathlib import Path
18- from typing import Any
19- from typing import Callable
20- from typing import Dict
21- from typing import Generator
22- from typing import Iterable
23- from typing import List
24- from typing import Optional
25- from typing import Pattern
26- from typing import Sequence
27- from typing import Tuple
28- from typing import Type
29- from typing import TYPE_CHECKING
30- from typing import Union
18+ from typing import (
19+ TYPE_CHECKING ,
20+ Any ,
21+ Callable ,
22+ Dict ,
23+ Generator ,
24+ Iterable ,
25+ List ,
26+ Optional ,
27+ Pattern ,
28+ Sequence ,
29+ Tuple ,
30+ Type ,
31+ Union ,
32+ )
3133
3234import pytest
3335from _pytest import outcomes
34- from _pytest ._code .code import ExceptionInfo
35- from _pytest ._code .code import ReprFileLocation
36- from _pytest ._code .code import TerminalRepr
36+ from _pytest ._code .code import ExceptionInfo , ReprFileLocation , TerminalRepr
3737from _pytest ._io import TerminalWriter
3838from _pytest .compat import safe_getattr
3939from _pytest .config import Config
4040from _pytest .config .argparsing import Parser
4141from _pytest .fixtures import FixtureRequest
4242from _pytest .nodes import Collector
4343from _pytest .outcomes import OutcomeException
44- from _pytest .pathlib import fnmatch_ex
45- from _pytest .pathlib import import_path
44+ from _pytest .pathlib import fnmatch_ex , import_path
4645from _pytest .python_api import approx
4746from _pytest .warning_types import PytestWarning
4847
4948if TYPE_CHECKING :
5049 import doctest
5150
51+ from .ipdoctest import IPDoctestOutputChecker
52+
5253DOCTEST_REPORT_CHOICE_NONE = "none"
5354DOCTEST_REPORT_CHOICE_CDIFF = "cdiff"
5455DOCTEST_REPORT_CHOICE_NDIFF = "ndiff"
@@ -271,6 +272,8 @@ def _get_runner(
271272
272273
273274class IPDoctestItem (pytest .Item ):
275+ _user_ns_orig : Dict [str , Any ]
276+
274277 def __init__ (
275278 self ,
276279 name : str ,
@@ -283,6 +286,7 @@ def __init__(
283286 self .dtest = dtest
284287 self .obj = None
285288 self .fixture_request : Optional [FixtureRequest ] = None
289+ self ._user_ns_orig = {}
286290
287291 @classmethod
288292 def from_parent ( # type: ignore
0 commit comments