Skip to content

issue gh-153888: autospec doesn't work with lazy-imported symbols#153977

Open
palakkhinvasara wants to merge 11 commits into
python:mainfrom
palakkhinvasara:fix-unittest-lazy-import-patch
Open

issue gh-153888: autospec doesn't work with lazy-imported symbols#153977
palakkhinvasara wants to merge 11 commits into
python:mainfrom
palakkhinvasara:fix-unittest-lazy-import-patch

Conversation

@palakkhinvasara

Copy link
Copy Markdown
Contributor

#153888 Fix unittest.mock.patch with lazy imports and autospec

unittest.mock.patch() currently reads unresolved lazy-import bindings directly from target.__dict__.

When autospec=True (and similarly spec/spec_set) is used with a lazy-imported object, patch() receives the LazyImportType proxy instead of the actual imported object. This causes create_autospec() to create a NonCallableMagicMock for callable objects.

For example:

lazy from json import dumps

with patch("__main__.dumps", autospec=True) as mock_dumps:
    mock_dumps({})

@palakkhinvasara palakkhinvasara changed the title issue #153888: autospec doesn't work with lazy-imported symbols issue gh-153888: autospec doesn't work with lazy-imported symbols Jul 18, 2026
@palakkhinvasara

Copy link
Copy Markdown
Contributor Author

hello @cjw296 , can you pls review this pr?

Thanks & Regards
Palak

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant