File: mock.py

package info (click to toggle)
python-testfixtures 9.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,036 kB
  • sloc: python: 10,373; makefile: 76; sh: 9
file content (40 lines) | stat: -rw-r--r-- 1,336 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""
A facade for either :mod:`unittest.mock` or its `rolling backport`__, if it is
installed, with a preference for the latter as it may well have newer functionality
and bugfixes.

The facade also contains any bugfixes that are critical to the operation of
functionality provided by testfixtures.

__ https://mock.readthedocs.io
"""
import sys

backport_version: tuple[int, int, int] | None

try:
    from mock import *
    from mock.mock import _Call, _Sentinel
    from mock.mock import call as mock_call
    from mock import version_info as backport_version
except ImportError:
    backport_version = None
    class MockCall:
        pass
    mock_call = MockCall()  # type: ignore[assignment]
    from unittest.mock import *  # type: ignore[assignment]
    from unittest.mock import _Call, _Sentinel  # type: ignore[assignment]


has_backport = backport_version is not None

if not (
        (has_backport and backport_version[:3] > (2, 0, 0)) or  # type: ignore[index]
        (sys.version_info < (3, 0, 0) and not has_backport) or
        (3, 6, 7) < sys.version_info[:3] < (3, 7, 0) or
        sys.version_info[:3] > (3, 7, 1)
):  # pragma: no cover
    raise ImportError('Please upgrade Python (you have {}) or Mock Backport (You have {})'.format(
        sys.version_info, backport_version
    ))
parent_name = '_mock_parent'