From c4dd650897a2902e2b547329393675dc0227821b Mon Sep 17 00:00:00 2001 From: Chris Withers Date: Wed, 28 Dec 2022 12:52:03 +0000 Subject: [PATCH] Preparing for 5.0.0 release. --- CHANGELOG.rst | 61 +++++++++++++++++++ .../2020-12-10-09-24-44.bpo-41877.iJSCvM.rst | 1 - .../2020-12-10-19-49-52.bpo-41877.wiVlPc.rst | 1 - .../2021-04-10-03-30-36.bpo-43478.iZcBTq.rst | 1 - .../2021-08-26-09-54-14.bpo-45010.Cn23bQ.rst | 2 - .../2021-09-13-00-28-17.bpo-45156.8oomV3.rst | 2 - .../2022-01-23-18-04-45.bpo-41403.SgoHqV.rst | 3 - .../2022-02-03-00-21-32.bpo-43478.0nfcam.rst | 1 - .../2022-02-25-01-42-45.bpo-46852.nkRDvV.rst | 4 -- ...2-05-03-11-32-29.gh-issue-91803.pI4Juv.rst | 3 - ...2-06-21-11-40-31.gh-issue-84753.FW1pxO.rst | 3 - ...2-10-08-19-39-27.gh-issue-98086.y---WC.rst | 1 - ...2-10-25-20-17-34.gh-issue-98624.YQUPFy.rst | 2 - ...2-12-14-17-37-01.gh-issue-83076.NaYzWT.rst | 1 - ...-12-24-08-42-05.gh-issue-100287.n0oEuG.rst | 1 - mock/__init__.py | 2 +- 16 files changed, 62 insertions(+), 27 deletions(-) delete mode 100644 NEWS.d/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst delete mode 100644 NEWS.d/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst delete mode 100644 NEWS.d/2021-04-10-03-30-36.bpo-43478.iZcBTq.rst delete mode 100644 NEWS.d/2021-08-26-09-54-14.bpo-45010.Cn23bQ.rst delete mode 100644 NEWS.d/2021-09-13-00-28-17.bpo-45156.8oomV3.rst delete mode 100644 NEWS.d/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst delete mode 100644 NEWS.d/2022-02-03-00-21-32.bpo-43478.0nfcam.rst delete mode 100644 NEWS.d/2022-02-25-01-42-45.bpo-46852.nkRDvV.rst delete mode 100644 NEWS.d/2022-05-03-11-32-29.gh-issue-91803.pI4Juv.rst delete mode 100644 NEWS.d/2022-06-21-11-40-31.gh-issue-84753.FW1pxO.rst delete mode 100644 NEWS.d/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst delete mode 100644 NEWS.d/2022-10-25-20-17-34.gh-issue-98624.YQUPFy.rst delete mode 100644 NEWS.d/2022-12-14-17-37-01.gh-issue-83076.NaYzWT.rst delete mode 100644 NEWS.d/2022-12-24-08-42-05.gh-issue-100287.n0oEuG.rst diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 96285562..386fb4cb 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,64 @@ +5.0.0 +----- + +- gh-98624: Add a mutex to unittest.mock.NonCallableMock to protect + concurrent access to mock attributes. + +- bpo-43478: Mocks can no longer be used as the specs for other Mocks. As a + result, an already-mocked object cannot have an attribute mocked using + `autospec=True` or be the subject of a `create_autospec(...)` call. This + can uncover bugs in tests since these Mock-derived Mocks will always pass + certain tests (e.g. isinstance) and builtin assert functions (e.g. + assert_called_once_with) will unconditionally pass. + +- bpo-45156: Fixes infinite loop on :func:`unittest.mock.seal` of mocks + created by :func:`~unittest.create_autospec`. + +- bpo-41403: Make :meth:`mock.patch` raise a :exc:`TypeError` with a + relevant error message on invalid arg. Previously it allowed a cryptic + :exc:`AttributeError` to escape. + +- gh-91803: Fix an error when using a method of objects mocked with + :func:`unittest.mock.create_autospec` after it was sealed with + :func:`unittest.mock.seal` function. + +- bpo-41877: AttributeError for suspected misspellings of assertions on + mocks are now pointing out that the cause are misspelled assertions and + also what to do if the misspelling is actually an intended attribute name. + The unittest.mock document is also updated to reflect the current set of + recognised misspellings. + +- bpo-43478: Mocks can no longer be provided as the specs for other Mocks. + As a result, an already-mocked object cannot be passed to `mock.Mock()`. + This can uncover bugs in tests since these Mock-derived Mocks will always + pass certain tests (e.g. isinstance) and builtin assert functions (e.g. + assert_called_once_with) will unconditionally pass. + +- bpo-45010: Remove support of special method ``__div__`` in + :mod:`unittest.mock`. It is not used in Python 3. + +- gh-84753: :func:`inspect.iscoroutinefunction` now properly returns + ``True`` when an instance of :class:`unittest.mock.AsyncMock` is passed to + it. This makes it consistent with behavior of + :func:`asyncio.iscoroutinefunction`. Patch by Mehdi ABAAKOUK. + +- bpo-46852: Remove the undocumented private ``float.__set_format__()`` + method, previously known as ``float.__setformat__()`` in Python 3.7. Its + docstring said: "You probably don't want to use this function. It exists + mainly to be used in Python's test suite." Patch by Victor Stinner. + +- gh-98086: Make sure ``patch.dict()`` can be applied on async functions. + +- gh-100287: Fix the interaction of :func:`unittest.mock.seal` with + :class:`unittest.mock.AsyncMock`. + +- gh-83076: Instantiation of ``Mock()`` and ``AsyncMock()`` is now 3.8x + faster. + +- bpo-41877: A check is added against misspellings of autospect, auto_spec + and set_spec being passed as arguments to patch, patch.object and + create_autospec. + 4.0.3 ----- diff --git a/NEWS.d/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst b/NEWS.d/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst deleted file mode 100644 index df43cc5d..00000000 --- a/NEWS.d/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst +++ /dev/null @@ -1 +0,0 @@ -AttributeError for suspected misspellings of assertions on mocks are now pointing out that the cause are misspelled assertions and also what to do if the misspelling is actually an intended attribute name. The unittest.mock document is also updated to reflect the current set of recognised misspellings. \ No newline at end of file diff --git a/NEWS.d/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst b/NEWS.d/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst deleted file mode 100644 index d42200ec..00000000 --- a/NEWS.d/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst +++ /dev/null @@ -1 +0,0 @@ -A check is added against misspellings of autospect, auto_spec and set_spec being passed as arguments to patch, patch.object and create_autospec. \ No newline at end of file diff --git a/NEWS.d/2021-04-10-03-30-36.bpo-43478.iZcBTq.rst b/NEWS.d/2021-04-10-03-30-36.bpo-43478.iZcBTq.rst deleted file mode 100644 index aaa1992f..00000000 --- a/NEWS.d/2021-04-10-03-30-36.bpo-43478.iZcBTq.rst +++ /dev/null @@ -1 +0,0 @@ -Mocks can no longer be used as the specs for other Mocks. As a result, an already-mocked object cannot have an attribute mocked using `autospec=True` or be the subject of a `create_autospec(...)` call. This can uncover bugs in tests since these Mock-derived Mocks will always pass certain tests (e.g. isinstance) and builtin assert functions (e.g. assert_called_once_with) will unconditionally pass. \ No newline at end of file diff --git a/NEWS.d/2021-08-26-09-54-14.bpo-45010.Cn23bQ.rst b/NEWS.d/2021-08-26-09-54-14.bpo-45010.Cn23bQ.rst deleted file mode 100644 index bdf1bfe1..00000000 --- a/NEWS.d/2021-08-26-09-54-14.bpo-45010.Cn23bQ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Remove support of special method ``__div__`` in :mod:`unittest.mock`. It is -not used in Python 3. diff --git a/NEWS.d/2021-09-13-00-28-17.bpo-45156.8oomV3.rst b/NEWS.d/2021-09-13-00-28-17.bpo-45156.8oomV3.rst deleted file mode 100644 index b2094b57..00000000 --- a/NEWS.d/2021-09-13-00-28-17.bpo-45156.8oomV3.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixes infinite loop on :func:`unittest.mock.seal` of mocks created by -:func:`~unittest.create_autospec`. diff --git a/NEWS.d/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst b/NEWS.d/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst deleted file mode 100644 index ede159b2..00000000 --- a/NEWS.d/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst +++ /dev/null @@ -1,3 +0,0 @@ -Make :meth:`mock.patch` raise a :exc:`TypeError` with a relevant error -message on invalid arg. Previously it allowed a cryptic -:exc:`AttributeError` to escape. diff --git a/NEWS.d/2022-02-03-00-21-32.bpo-43478.0nfcam.rst b/NEWS.d/2022-02-03-00-21-32.bpo-43478.0nfcam.rst deleted file mode 100644 index 7c8fc47c..00000000 --- a/NEWS.d/2022-02-03-00-21-32.bpo-43478.0nfcam.rst +++ /dev/null @@ -1 +0,0 @@ -Mocks can no longer be provided as the specs for other Mocks. As a result, an already-mocked object cannot be passed to `mock.Mock()`. This can uncover bugs in tests since these Mock-derived Mocks will always pass certain tests (e.g. isinstance) and builtin assert functions (e.g. assert_called_once_with) will unconditionally pass. diff --git a/NEWS.d/2022-02-25-01-42-45.bpo-46852.nkRDvV.rst b/NEWS.d/2022-02-25-01-42-45.bpo-46852.nkRDvV.rst deleted file mode 100644 index cd0049a4..00000000 --- a/NEWS.d/2022-02-25-01-42-45.bpo-46852.nkRDvV.rst +++ /dev/null @@ -1,4 +0,0 @@ -Remove the undocumented private ``float.__set_format__()`` method, previously -known as ``float.__setformat__()`` in Python 3.7. Its docstring said: "You -probably don't want to use this function. It exists mainly to be used in -Python's test suite." Patch by Victor Stinner. diff --git a/NEWS.d/2022-05-03-11-32-29.gh-issue-91803.pI4Juv.rst b/NEWS.d/2022-05-03-11-32-29.gh-issue-91803.pI4Juv.rst deleted file mode 100644 index 14829e8f..00000000 --- a/NEWS.d/2022-05-03-11-32-29.gh-issue-91803.pI4Juv.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix an error when using a method of objects mocked with -:func:`unittest.mock.create_autospec` after it was sealed with -:func:`unittest.mock.seal` function. diff --git a/NEWS.d/2022-06-21-11-40-31.gh-issue-84753.FW1pxO.rst b/NEWS.d/2022-06-21-11-40-31.gh-issue-84753.FW1pxO.rst deleted file mode 100644 index f701d2a1..00000000 --- a/NEWS.d/2022-06-21-11-40-31.gh-issue-84753.FW1pxO.rst +++ /dev/null @@ -1,3 +0,0 @@ -:func:`inspect.iscoroutinefunction` now properly returns ``True`` when an instance -of :class:`unittest.mock.AsyncMock` is passed to it. This makes it consistent with -behavior of :func:`asyncio.iscoroutinefunction`. Patch by Mehdi ABAAKOUK. diff --git a/NEWS.d/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst b/NEWS.d/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst deleted file mode 100644 index f4a1d272..00000000 --- a/NEWS.d/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst +++ /dev/null @@ -1 +0,0 @@ -Make sure ``patch.dict()`` can be applied on async functions. diff --git a/NEWS.d/2022-10-25-20-17-34.gh-issue-98624.YQUPFy.rst b/NEWS.d/2022-10-25-20-17-34.gh-issue-98624.YQUPFy.rst deleted file mode 100644 index fb3a2b83..00000000 --- a/NEWS.d/2022-10-25-20-17-34.gh-issue-98624.YQUPFy.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add a mutex to unittest.mock.NonCallableMock to protect concurrent access -to mock attributes. diff --git a/NEWS.d/2022-12-14-17-37-01.gh-issue-83076.NaYzWT.rst b/NEWS.d/2022-12-14-17-37-01.gh-issue-83076.NaYzWT.rst deleted file mode 100644 index a4984e69..00000000 --- a/NEWS.d/2022-12-14-17-37-01.gh-issue-83076.NaYzWT.rst +++ /dev/null @@ -1 +0,0 @@ -Instantiation of ``Mock()`` and ``AsyncMock()`` is now 3.8x faster. diff --git a/NEWS.d/2022-12-24-08-42-05.gh-issue-100287.n0oEuG.rst b/NEWS.d/2022-12-24-08-42-05.gh-issue-100287.n0oEuG.rst deleted file mode 100644 index b353f081..00000000 --- a/NEWS.d/2022-12-24-08-42-05.gh-issue-100287.n0oEuG.rst +++ /dev/null @@ -1 +0,0 @@ -Fix the interaction of :func:`unittest.mock.seal` with :class:`unittest.mock.AsyncMock`. diff --git a/mock/__init__.py b/mock/__init__.py index dbe8031b..0e72ce6d 100644 --- a/mock/__init__.py +++ b/mock/__init__.py @@ -7,7 +7,7 @@ import mock.mock as _mock from mock.mock import * -__version__ = '4.0.3' +__version__ = '5.0.0' version_info = tuple(int(p) for p in re.match(r'(\d+).(\d+).(\d+)', __version__).groups())