Mark import names as needing to be rewritten. The named module or package as well as any nested modules will be rewritten on import.
(self, *names: str)
| 261 | return False |
| 262 | |
| 263 | def mark_rewrite(self, *names: str) -> None: |
| 264 | """Mark import names as needing to be rewritten. |
| 265 | |
| 266 | The named module or package as well as any nested modules will |
| 267 | be rewritten on import. |
| 268 | """ |
| 269 | already_imported = ( |
| 270 | set(names).intersection(sys.modules).difference(self._rewritten_names) |
| 271 | ) |
| 272 | for name in already_imported: |
| 273 | mod = sys.modules[name] |
| 274 | if not AssertionRewriter.is_rewrite_disabled( |
| 275 | mod.__doc__ or "" |
| 276 | ) and not isinstance(mod.__loader__, type(self)): |
| 277 | self._warn_already_imported(name) |
| 278 | self._must_rewrite.update(names) |
| 279 | self._marked_for_rewrite_cache.clear() |
| 280 | |
| 281 | def _warn_already_imported(self, name: str) -> None: |
| 282 | from _pytest.warning_types import PytestAssertRewriteWarning |