| -- NOTE: If a module has a name starting or ending with _, it is skipped in | |
| -- output. | |
| [case testImport] | |
| import x | |
| x.y | |
| [file x.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(x) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| NameExpr(x) | |
| y [x.y]))) | |
| MypyFile:1( | |
| tmp/x.py | |
| AssignmentStmt:1( | |
| NameExpr(y [x.y]) | |
| IntExpr(1) | |
| builtins.int)) | |
| [case testImportedNameInType] | |
| import m | |
| x = None # type: m.c | |
| [file m.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| Import:1(m) | |
| AssignmentStmt:2( | |
| NameExpr(x [__main__.x]) | |
| NameExpr(None [builtins.None]) | |
| m.c)) | |
| MypyFile:1( | |
| tmp/m.py | |
| ClassDef:1( | |
| c | |
| PassStmt:1())) | |
| [case testImportFrom] | |
| from m import y | |
| x = y | |
| [file m.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(m, [y]) | |
| AssignmentStmt:2( | |
| NameExpr(x* [__main__.x]) | |
| NameExpr(y [m.y]))) | |
| MypyFile:1( | |
| tmp/m.py | |
| AssignmentStmt:1( | |
| NameExpr(y [m.y]) | |
| IntExpr(1) | |
| builtins.int)) | |
| [case testImportFromType] | |
| from m import c | |
| x = None # type: c | |
| [file m.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(m, [c]) | |
| AssignmentStmt:2( | |
| NameExpr(x [__main__.x]) | |
| NameExpr(None [builtins.None]) | |
| m.c)) | |
| MypyFile:1( | |
| tmp/m.py | |
| ClassDef:1( | |
| c | |
| PassStmt:1())) | |
| [case testImportMultiple] | |
| import _m, _n | |
| _m.x, _n.y | |
| [fixture _m.py] | |
| x = 1 | |
| [fixture _n.py] | |
| y = 2 | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m, _n) | |
| ExpressionStmt:2( | |
| TupleExpr:2( | |
| MemberExpr:2( | |
| NameExpr(_m) | |
| x [_m.x]) | |
| MemberExpr:2( | |
| NameExpr(_n) | |
| y [_n.y])))) | |
| [case testImportAs] | |
| import _m as n | |
| n.x | |
| [fixture _m.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m : n) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| NameExpr(n [_m]) | |
| x [_m.x]))) | |
| [case testImportFromMultiple] | |
| from _m import x, y | |
| x, y | |
| [fixture _m.py] | |
| x = y = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(_m, [x, y]) | |
| ExpressionStmt:2( | |
| TupleExpr:2( | |
| NameExpr(x [_m.x]) | |
| NameExpr(y [_m.y])))) | |
| [case testImportFromAs] | |
| from _m import y as z | |
| z | |
| [fixture _m.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(_m, [y : z]) | |
| ExpressionStmt:2( | |
| NameExpr(z [_m.y]))) | |
| [case testAccessImportedName] | |
| from m import x | |
| y = x | |
| [file m.py] | |
| from _n import x | |
| [fixture _n.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(m, [x]) | |
| AssignmentStmt:2( | |
| NameExpr(y* [__main__.y]) | |
| NameExpr(x [_n.x]))) | |
| MypyFile:1( | |
| tmp/m.py | |
| ImportFrom:1(_n, [x])) | |
| [case testAccessImportedName2] | |
| import _m | |
| y = _m.x | |
| [fixture _m.py] | |
| from _n import x | |
| [fixture _n.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m) | |
| AssignmentStmt:2( | |
| NameExpr(y* [__main__.y]) | |
| MemberExpr:2( | |
| NameExpr(_m) | |
| x [_n.x]))) | |
| [case testAccessingImportedNameInType] | |
| from _m import c | |
| x = None # type: c | |
| [fixture _m.py] | |
| from _n import c | |
| [fixture _n.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(_m, [c]) | |
| AssignmentStmt:2( | |
| NameExpr(x [__main__.x]) | |
| NameExpr(None [builtins.None]) | |
| _n.c)) | |
| [case testAccessingImportedNameInType2] | |
| import _m | |
| x = None # type: _m.c | |
| [fixture _m.py] | |
| from _n import c | |
| [fixture _n.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m) | |
| AssignmentStmt:2( | |
| NameExpr(x [__main__.x]) | |
| NameExpr(None [builtins.None]) | |
| _n.c)) | |
| [case testAccessingImportedModule] | |
| from _m import _n | |
| _n.x | |
| [fixture _m.py] | |
| import _n | |
| [fixture _n.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(_m, [_n]) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| NameExpr(_n) | |
| x [_n.x]))) | |
| [case testAccessingImportedModule2] | |
| import _m | |
| _m._n.x | |
| [fixture _m.py] | |
| import _n | |
| [fixture _n.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| NameExpr(_m) | |
| _n) | |
| x [_n.x]))) | |
| [case testAccessTypeViaDoubleIndirection] | |
| from _m import c | |
| a = None # type: c | |
| [fixture _m.py] | |
| from _n import c | |
| [fixture _n.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(_m, [c]) | |
| AssignmentStmt:2( | |
| NameExpr(a [__main__.a]) | |
| NameExpr(None [builtins.None]) | |
| _n.c)) | |
| [case testAccessTypeViaDoubleIndirection2] | |
| import _m | |
| a = None # type: _m.c | |
| [fixture _m.py] | |
| from _n import c | |
| [fixture _n.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m) | |
| AssignmentStmt:2( | |
| NameExpr(a [__main__.a]) | |
| NameExpr(None [builtins.None]) | |
| _n.c)) | |
| [case testImportAsterisk] | |
| from _m import * | |
| x, y | |
| [fixture _m.py] | |
| x = y = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportAll:1(_m) | |
| ExpressionStmt:2( | |
| TupleExpr:2( | |
| NameExpr(x [_m.x]) | |
| NameExpr(y [_m.y])))) | |
| [case testImportAsteriskAndImportedNames] | |
| from _m import * | |
| n_.x, y | |
| [fixture _m.py] | |
| import n_ | |
| from n_ import y | |
| [fixture n_.py] | |
| x = y = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportAll:1(_m) | |
| ExpressionStmt:2( | |
| TupleExpr:2( | |
| MemberExpr:2( | |
| NameExpr(n_) | |
| x [n_.x]) | |
| NameExpr(y [n_.y])))) | |
| [case testImportAsteriskAndImportedNamesInTypes] | |
| from _m import * | |
| x = None # type: n_.c | |
| y = None # type: d | |
| [fixture _m.py] | |
| import n_ | |
| from n_ import d | |
| [fixture n_.py] | |
| class c: pass | |
| class d: pass | |
| [out] | |
| MypyFile:1( | |
| ImportAll:1(_m) | |
| AssignmentStmt:2( | |
| NameExpr(x [__main__.x]) | |
| NameExpr(None [builtins.None]) | |
| n_.c) | |
| AssignmentStmt:3( | |
| NameExpr(y [__main__.y]) | |
| NameExpr(None [builtins.None]) | |
| n_.d)) | |
| [case testModuleInSubdir] | |
| import _m | |
| _m.x | |
| [fixture _m/__init__.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| NameExpr(_m) | |
| x [_m.x]))) | |
| [case testNestedModules] | |
| import m.n | |
| m.n.x, m.y | |
| [fixture m/__init__.py] | |
| y = 1 | |
| [file m/n.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(m.n) | |
| ExpressionStmt:2( | |
| TupleExpr:2( | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| NameExpr(m) | |
| n [m.n]) | |
| x [m.n.x]) | |
| MemberExpr:2( | |
| NameExpr(m) | |
| y [m.y])))) | |
| MypyFile:1( | |
| tmp/m/n.py | |
| AssignmentStmt:1( | |
| NameExpr(x [m.n.x]) | |
| IntExpr(1) | |
| builtins.int)) | |
| [case testImportFromSubmodule] | |
| from m._n import x | |
| x | |
| [fixture m/__init__.py] | |
| [fixture m/_n.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(m._n, [x]) | |
| ExpressionStmt:2( | |
| NameExpr(x [m._n.x]))) | |
| [case testImportAllFromSubmodule] | |
| from m._n import * | |
| x, y | |
| [fixture m/__init__.py] | |
| [fixture m/_n.py] | |
| x = y = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportAll:1(m._n) | |
| ExpressionStmt:2( | |
| TupleExpr:2( | |
| NameExpr(x [m._n.x]) | |
| NameExpr(y [m._n.y])))) | |
| [case testSubmodulesAndTypes] | |
| import m._n | |
| x = None # type: m._n.c | |
| [fixture m/__init__.py] | |
| [fixture m/_n.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| Import:1(m._n) | |
| AssignmentStmt:2( | |
| NameExpr(x [__main__.x]) | |
| NameExpr(None [builtins.None]) | |
| m._n.c)) | |
| [case testSubmodulesAndTypes2] | |
| from m._n import c | |
| x = None # type: c | |
| [fixture m/__init__.py] | |
| [fixture m/_n.py] | |
| class c: pass | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(m._n, [c]) | |
| AssignmentStmt:2( | |
| NameExpr(x [__main__.x]) | |
| NameExpr(None [builtins.None]) | |
| m._n.c)) | |
| [case testFromPackageImportModule] | |
| from m import _n | |
| _n.x | |
| [fixture m/__init__.py] | |
| [fixture m/_n.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| ImportFrom:1(m, [_n]) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| NameExpr(_n [m._n]) | |
| x [m._n.x]))) | |
| [case testDeeplyNestedModule] | |
| import m.n.k | |
| m.n.k.x | |
| m.n.b | |
| m.a | |
| [fixture m/__init__.py] | |
| a = 1 | |
| [fixture m/n/__init__.py] | |
| b = 1 | |
| [file m/n/k.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(m.n.k) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| NameExpr(m) | |
| n [m.n]) | |
| k [m.n.k]) | |
| x [m.n.k.x])) | |
| ExpressionStmt:3( | |
| MemberExpr:3( | |
| MemberExpr:3( | |
| NameExpr(m) | |
| n [m.n]) | |
| b [m.n.b])) | |
| ExpressionStmt:4( | |
| MemberExpr:4( | |
| NameExpr(m) | |
| a [m.a]))) | |
| MypyFile:1( | |
| tmp/m/n/k.py | |
| AssignmentStmt:1( | |
| NameExpr(x [m.n.k.x]) | |
| IntExpr(1) | |
| builtins.int)) | |
| [case testImportInSubmodule] | |
| import m._n | |
| y = m._n.x | |
| [fixture m/__init__.py] | |
| [fixture m/_n.py] | |
| from m._k import x | |
| [fixture m/_k.py] | |
| x = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(m._n) | |
| AssignmentStmt:2( | |
| NameExpr(y* [__main__.y]) | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| NameExpr(m) | |
| _n [m._n]) | |
| x [m._k.x]))) | |
| [case testBuiltinsUsingModule] | |
| o = None # type: __builtins__.object | |
| [out] | |
| MypyFile:1( | |
| AssignmentStmt:1( | |
| NameExpr(o [__main__.o]) | |
| NameExpr(None [builtins.None]) | |
| builtins.object)) | |
| [case testImplicitAccessToBuiltins] | |
| object | |
| [out] | |
| MypyFile:1( | |
| ExpressionStmt:1( | |
| NameExpr(object [builtins.object]))) | |
| [case testAssignmentToModuleAttribute] | |
| import _m | |
| _m.x = ( | |
| _m.x) | |
| [fixture _m.py] | |
| x = None | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m) | |
| AssignmentStmt:2( | |
| MemberExpr:2( | |
| NameExpr(_m) | |
| x [_m.x]) | |
| MemberExpr:3( | |
| NameExpr(_m) | |
| x [_m.x]))) | |
| [case testAssignmentThatRefersToModule] | |
| import _m | |
| _m.x[None] = None | |
| [fixture _m.py] | |
| x = None | |
| [out] | |
| MypyFile:1( | |
| Import:1(_m) | |
| AssignmentStmt:2( | |
| IndexExpr:2( | |
| MemberExpr:2( | |
| NameExpr(_m) | |
| x [_m.x]) | |
| NameExpr(None [builtins.None])) | |
| NameExpr(None [builtins.None]))) | |
| [case testImportInBlock] | |
| if 1: | |
| import _x | |
| _x.y | |
| [fixture _x.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| IfStmt:1( | |
| If( | |
| IntExpr(1)) | |
| Then( | |
| Import:2(_x) | |
| ExpressionStmt:3( | |
| MemberExpr:3( | |
| NameExpr(_x) | |
| y [_x.y]))))) | |
| [case testImportInFunction] | |
| def f() -> None: | |
| import _x | |
| _x.y | |
| [fixture _x.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| FuncDef:1( | |
| f | |
| def () | |
| Block:2( | |
| Import:2(_x) | |
| ExpressionStmt:3( | |
| MemberExpr:3( | |
| NameExpr(_x) | |
| y [_x.y]))))) | |
| [case testImportInClassBody] | |
| class A: | |
| from _x import y | |
| z = y | |
| [fixture _x.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| ClassDef:1( | |
| A | |
| ImportFrom:2(_x, [y]) | |
| AssignmentStmt:3( | |
| NameExpr(z* [m]) | |
| NameExpr(y [__main__.A.y])))) | |
| [case testImportInClassBody2] | |
| class A: | |
| import _x | |
| z = _x.y | |
| [fixture _x.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| ClassDef:1( | |
| A | |
| Import:2(_x) | |
| AssignmentStmt:3( | |
| NameExpr(z* [m]) | |
| MemberExpr:3( | |
| NameExpr(_x) | |
| y [_x.y])))) | |
| [case testImportModuleTwice] | |
| def f() -> None: | |
| import x | |
| import x | |
| x.y | |
| [file x.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| FuncDef:1( | |
| f | |
| def () | |
| Block:2( | |
| Import:2(x) | |
| Import:3(x) | |
| ExpressionStmt:4( | |
| MemberExpr:4( | |
| NameExpr(x) | |
| y [x.y]))))) | |
| MypyFile:1( | |
| tmp/x.py | |
| AssignmentStmt:1( | |
| NameExpr(y [x.y]) | |
| IntExpr(1) | |
| builtins.int)) | |
| [case testRelativeImport0] | |
| import m.x | |
| m.x.z.y | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| from . import z | |
| [file m/z.py] | |
| y = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(m.x) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| NameExpr(m) | |
| x [m.x]) | |
| z [m.z]) | |
| y [m.z.y]))) | |
| MypyFile:1( | |
| tmp/m/x.py | |
| ImportFrom:1(., [z])) | |
| MypyFile:1( | |
| tmp/m/z.py | |
| AssignmentStmt:1( | |
| NameExpr(y [m.z.y]) | |
| IntExpr(1) | |
| builtins.int)) | |
| [case testRelativeImport1] | |
| import m.t.b as b | |
| b.x.y | |
| b.z.y | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| y = 1 | |
| [file m/z.py] | |
| y = 3 | |
| [fixture m/t/__init__.py] | |
| [file m/t/b.py] | |
| from .. import x, z | |
| [out] | |
| MypyFile:1( | |
| Import:1(m.t.b : b) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| MemberExpr:2( | |
| NameExpr(b [m.t.b]) | |
| x [m.x]) | |
| y [m.x.y])) | |
| ExpressionStmt:3( | |
| MemberExpr:3( | |
| MemberExpr:3( | |
| NameExpr(b [m.t.b]) | |
| z [m.z]) | |
| y [m.z.y]))) | |
| MypyFile:1( | |
| tmp/m/t/b.py | |
| ImportFrom:1(.., [x, z])) | |
| MypyFile:1( | |
| tmp/m/x.py | |
| AssignmentStmt:1( | |
| NameExpr(y [m.x.y]) | |
| IntExpr(1) | |
| builtins.int)) | |
| MypyFile:1( | |
| tmp/m/z.py | |
| AssignmentStmt:1( | |
| NameExpr(y [m.z.y]) | |
| IntExpr(3) | |
| builtins.int)) | |
| [case testRelativeImport2] | |
| import m.t.b as b | |
| b.xy | |
| b.zy | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| y = 1 | |
| [file m/z.py] | |
| y = 3 | |
| [fixture m/t/__init__.py] | |
| [file m/t/b.py] | |
| from ..x import y as xy | |
| from ..z import y as zy | |
| [out] | |
| MypyFile:1( | |
| Import:1(m.t.b : b) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| NameExpr(b [m.t.b]) | |
| xy [m.x.y])) | |
| ExpressionStmt:3( | |
| MemberExpr:3( | |
| NameExpr(b [m.t.b]) | |
| zy [m.z.y]))) | |
| MypyFile:1( | |
| tmp/m/t/b.py | |
| ImportFrom:1(..x, [y : xy]) | |
| ImportFrom:2(..z, [y : zy])) | |
| MypyFile:1( | |
| tmp/m/x.py | |
| AssignmentStmt:1( | |
| NameExpr(y [m.x.y]) | |
| IntExpr(1) | |
| builtins.int)) | |
| MypyFile:1( | |
| tmp/m/z.py | |
| AssignmentStmt:1( | |
| NameExpr(y [m.z.y]) | |
| IntExpr(3) | |
| builtins.int)) | |
| [case testRelativeImport3] | |
| import m.t | |
| m.zy | |
| m.xy | |
| m.t.y | |
| [fixture m/__init__.py] | |
| from .x import * | |
| from .z import * | |
| [file m/x.py] | |
| from .z import zy as xy | |
| [file m/z.py] | |
| zy = 3 | |
| [fixture m/t/__init__.py] | |
| from .b import * | |
| [file m/t/b.py] | |
| from .. import xy as y | |
| [out] | |
| MypyFile:1( | |
| Import:1(m.t) | |
| ExpressionStmt:2( | |
| MemberExpr:2( | |
| NameExpr(m) | |
| zy [m.z.zy])) | |
| ExpressionStmt:3( | |
| MemberExpr:3( | |
| NameExpr(m) | |
| xy [m.z.zy])) | |
| ExpressionStmt:4( | |
| MemberExpr:4( | |
| MemberExpr:4( | |
| NameExpr(m) | |
| t [m.t]) | |
| y [m.z.zy]))) | |
| MypyFile:1( | |
| tmp/m/t/b.py | |
| ImportFrom:1(.., [xy : y])) | |
| MypyFile:1( | |
| tmp/m/x.py | |
| ImportFrom:1(.z, [zy : xy])) | |
| MypyFile:1( | |
| tmp/m/z.py | |
| AssignmentStmt:1( | |
| NameExpr(zy [m.z.zy]) | |
| IntExpr(3) | |
| builtins.int)) | |
| [case testRelativeImportFromSameModule] | |
| import m.x | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| from .x import nonexistent | |
| [out] | |
| tmp/m/x.py:1: error: Module "m.x" has no attribute "nonexistent" | |
| [case testImportFromSameModule] | |
| import m.x | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| from m.x import nonexistent | |
| [out] | |
| tmp/m/x.py:1: error: Module "m.x" has no attribute "nonexistent" | |
| [case testImportMisspellingSingleCandidate] | |
| import f | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| def some_function(): | |
| pass | |
| [file f.py] | |
| from m.x import somefunction | |
| [out] | |
| tmp/f.py:1: error: Module "m.x" has no attribute "somefunction"; maybe "some_function"? | |
| [case testImportMisspellingMultipleCandidates] | |
| import f | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| def some_function(): | |
| pass | |
| def somef_unction(): | |
| pass | |
| [file f.py] | |
| from m.x import somefunction | |
| [out] | |
| tmp/f.py:1: error: Module "m.x" has no attribute "somefunction"; maybe "some_function" or "somef_unction"? | |
| [case testImportMisspellingMultipleCandidatesTruncated] | |
| import f | |
| [fixture m/__init__.py] | |
| [file m/x.py] | |
| def some_function(): | |
| pass | |
| def somef_unction(): | |
| pass | |
| def somefu_nction(): | |
| pass | |
| def somefun_ction(): | |
| pass | |
| [file f.py] | |
| from m.x import somefunction | |
| [out] | |
| tmp/f.py:1: error: Module "m.x" has no attribute "somefunction"; maybe "some_function", "somef_unction", or "somefu_nction"? | |
| [case testFromImportAsInStub] | |
| from m import * | |
| x | |
| y # E: Name "y" is not defined | |
| [file m.pyi] | |
| from m2 import x as x | |
| from m2 import y | |
| [file m2.py] | |
| x = 1 | |
| y = 2 | |
| [out] | |
| [case testFromImportAsInNonStub] | |
| from m_ import * | |
| x | |
| y | |
| [fixture m_.py] | |
| from m2_ import x as x | |
| from m2_ import y | |
| [fixture m2_.py] | |
| x = 1 | |
| y = 2 | |
| [out] | |
| MypyFile:1( | |
| ImportAll:1(m_) | |
| ExpressionStmt:2( | |
| NameExpr(x [m2_.x])) | |
| ExpressionStmt:3( | |
| NameExpr(y [m2_.y]))) | |
| [case testImportAsInStub] | |
| from m import * | |
| m2 | |
| m3 # E: Name "m3" is not defined | |
| [file m.pyi] | |
| import m2 as m2 | |
| import m3 | |
| [file m2.py] | |
| [file m3.py] | |
| [out] | |
| [case testImportAsInNonStub] | |
| from m_ import * | |
| m2_ | |
| m3_ | |
| [fixture m_.py] | |
| import m2_ as m2_ | |
| import m3_ | |
| [fixture m2_.py] | |
| [fixture m3_.py] | |
| [out] | |
| MypyFile:1( | |
| ImportAll:1(m_) | |
| ExpressionStmt:2( | |
| NameExpr(m2_)) | |
| ExpressionStmt:3( | |
| NameExpr(m3_))) | |
| [case testErrorsInMultipleModules] | |
| import m | |
| x | |
| [file m.py] | |
| y | |
| [out] | |
| tmp/m.py:1: error: Name "y" is not defined | |
| main:2: error: Name "x" is not defined | |
| [case testImportTwice] | |
| import typing | |
| from x import a, a # ok (we could give a warning, but this is valid) | |
| def f() -> None: | |
| from x import a | |
| from x import a # ok | |
| import x | |
| import x # ok, since we may import multiple submodules of a package | |
| [file x.py] | |
| a = 1 | |
| [out] | |
| MypyFile:1( | |
| Import:1(typing) | |
| ImportFrom:2(x, [a, a]) | |
| FuncDef:3( | |
| f | |
| def () | |
| Block:4( | |
| ImportFrom:4(x, [a]) | |
| ImportFrom:5(x, [a]))) | |
| Import:6(x) | |
| Import:7(x)) | |
| MypyFile:1( | |
| tmp/x.py | |
| AssignmentStmt:1( | |
| NameExpr(a [x.a]) | |
| IntExpr(1) | |
| builtins.int)) |