crates/ty_python_semantic/resources/mdtest/import/basic.md
from b import C as D
E = D
reveal_type(E) # revealed: <class 'C'>
b.py:
class C: ...
import b
D = b.C
reveal_type(D) # revealed: <class 'C'>
b.py:
class C: ...
import a.b
reveal_type(a.b.C) # revealed: <class 'C'>
a/__init__.py:
a/b.py:
class C: ...
import a.b.c
reveal_type(a.b.c.C) # revealed: <class 'C'>
a/__init__.py:
a/b/__init__.py:
a/b/c.py:
class C: ...
import a.b as b
reveal_type(b.C) # revealed: <class 'C'>
a/__init__.py:
a/b.py:
class C: ...
import a.b.c as c
reveal_type(c.C) # revealed: <class 'C'>
a/__init__.py:
a/b/__init__.py:
a/b/c.py:
class C: ...
import zqzqzqzqzqzqzq # error: [unresolved-import] "Cannot resolve imported module `zqzqzqzqzqzqzq`"
# Topmost component resolvable, submodule not resolvable:
import a.foo # error: [unresolved-import] "Cannot resolve imported module `a.foo`"
# Topmost component unresolvable:
import b.foo # error: [unresolved-import] "Cannot resolve imported module `b.foo`"
a/__init__.py:
It's unlikely that a single module component is as long as in this example, but Windows treats paths that are longer than 200 and something specially. This test ensures that ty can handle those paths gracefully.
system = "os"
AveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPath/__init__.py:
class Foo: ...
from AveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPathAveryLongPath import (
Foo,
)
reveal_type(Foo()) # revealed: Foo
If multiple members are imported from a module that cannot be resolved, only a single diagnostic is
emitted for the import from statement:
# error: [unresolved-import]
from does_not_exist import foo, bar, baz
[environment]
python-version = "3.10"
import tomllib # error: [unresolved-import]
from string.templatelib import Template # error: [unresolved-import]
from importlib.resources import abc # error: [unresolved-import]
compression and compression.zstd were both added in 3.14 so there is a typeshed VERSIONS entry
for compression but not compression.zstd. We can't be confident compression.zstd exists but we
do know compression does and can still give good diagnostics about it.
[environment]
python-version = "3.10"
import compression.zstd # error: [unresolved-import]
from compression import zstd # error: [unresolved-import]
import compression.fakebutwhocansay # error: [unresolved-import]
from compression import fakebutwhocansay # error: [unresolved-import]
[environment]
python-version = "3.13"
import aifc # error: [unresolved-import]
from distutils import sysconfig # error: [unresolved-import]
types.py:
x: int
# error: [unresolved-import]
from types import x
from types import FunctionType