some way to skip replacing mock with unittest.mock
graingert opened this issue · 10 comments
when you're using python 3.6 or 3.7 unittest.mock.AsyncMock
is unavailable, but mock.AsyncMock
is available if you're using the latest backport
there should be some way to skip replacing mock
with unittest.mock
, or the fixer should be moved to --py38-plus
and then to a later --py...-plus
as and when unittest.mock
gains features
I suppose we could hardcode of a list of unittest.mock
attrs and the version they were added into unittest.mock
, and rewrite conditionally based on that
maybe --no-mock
is easier, idk
But would you want --no-xx
for suppressing an arbitrary rewrite? If not, why this specific case?
only this case because there's a good reason to keep it (%-rewrite could break python2 in some exotic scenarios) -- unless we can actually detect it properly and then we don't need an option
It should be possible to detect it properly using the approach I outlined
also mock.patch behaves differently (on 3.6/3.7 Vs pypi mock/3.8) when applied to a coroutinefunction
Also I don't like an autodetect because I don't want some project files using unittest.mock and others using mock
thirdly how should other backports be handled? eg functools32 contextlib2 pkg_util_resolve_name etc?
Good points, sounds like --no-mock
is the best approach for now