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
--- 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
):
--- 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