# HG changeset patch # User Martin von Zweigbergk # Date 1576705184 28800 # Node ID 303576116ac19a13862e6b408f9d32c13ad7edf2 # Parent d825e7e0ca6eb5025c410dfd634625523fa071f8 import-checker: allow all absolute imports of stdlib modules Before this patch, we didn't allow imports like from importlib import resources (That's the reason I used `import importlib.resources` in D7629.) I think that form is still an absolute import, so I don't think we forbade on purpose. Differential Revision: https://phab.mercurial-scm.org/D7700 diff -r d825e7e0ca6e -r 303576116ac1 contrib/import-checker.py --- a/contrib/import-checker.py Tue Dec 17 22:36:40 2019 -0500 +++ b/contrib/import-checker.py Wed Dec 18 13:39:44 2019 -0800 @@ -536,7 +536,7 @@ if not fullname or ( fullname in stdlib_modules # allow standard 'from typing import ...' style - and fullname != 'typing' + and fullname.startswith('.') and fullname not in localmods and fullname + '.__init__' not in localmods ): diff -r d825e7e0ca6e -r 303576116ac1 tests/test-imports-checker.t --- a/tests/test-imports-checker.t Tue Dec 17 22:36:40 2019 -0500 +++ b/tests/test-imports-checker.t Wed Dec 18 13:39:44 2019 -0800 @@ -47,6 +47,11 @@ > from .. import os > EOF + $ cat > testpackage/stdlibfrom.py << EOF + > from __future__ import absolute_import + > from collections import abc + > EOF + $ cat > testpackage/symbolimport.py << EOF > from __future__ import absolute_import > from .unsorted import foo @@ -150,6 +155,7 @@ testpackage/requirerelative.py:2: import should be relative: testpackage.unsorted testpackage/sortedentries.py:2: imports from testpackage not lexically sorted: bar < foo testpackage/stdafterlocal.py:3: stdlib import "os" follows local import: testpackage + testpackage/stdlibfrom.py:2: direct symbol import abc from collections testpackage/subpackage/levelpriority.py:3: higher-level import should come first: testpackage testpackage/subpackage/localimport.py:7: multiple "from .. import" statements testpackage/subpackage/localimport.py:8: import should be relative: testpackage.subpackage.levelpriority