mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-02 06:42:02 +00:00
2.2 KiB
2.2 KiB
Namespace package
Basic namespace package
[environment]
python = "/.venv"
parent/child/one.py
:
one = 1
/.venv/<path-to-site-packages>/parent/child/two.py
:
two = 2
main.py
:
import parent.child.one
import parent.child.two
from.py
from parent.child import one, two
reveal_type(one) # revealed: <module 'parent.child.one'>
reveal_type(two) # revealed: <module 'parent.child.two'>
Regular package in namespace package
[environment]
python = "/.venv"
An adapted test case from the
PEP420 examples. The
src/parent/child
package is a regular package. Therefore, site_packages/parent/child/two.py
should not be resolved.
src
parent
child
__init__.py
one.py
.venv/site-packages
parent
child
two.py
parent/child/__init__.py
:
parent/child/one.py
:
one = 1
/.venv/<path-to-site-packages>/parent/child/two.py
:
two = 2
main.py
:
import parent.child.one
import parent.child.two # error: [unresolved-import]
Priority between file and identically named namespace package
If there's a namespace package with the same name as a module, the module takes precedence.
foo.py
:
x = "module"
foo/bar.py
:
x = "namespace"
from foo import x
reveal_type(x) # revealed: Unknown | Literal["module"]
import foo.bar # error: [unresolved-import]
from
import with namespace package
Regression test for https://github.com/astral-sh/ty/issues/363
google/cloud/pubsub_v1/__init__.py
:
class PublisherClient: ...
from google.cloud import pubsub_v1
reveal_type(pubsub_v1.PublisherClient) # revealed: <class 'PublisherClient'>
from
root importing sub-packages
Regresssion test for https://github.com/astral-sh/ty/issues/375
opentelemetry/trace/__init__.py
:
class Trace: ...
opentelemetry/metrics/__init__.py
:
class Metric: ...
from opentelemetry import trace, metrics
reveal_type(trace) # revealed: <module 'opentelemetry.trace'>
reveal_type(metrics) # revealed: <module 'opentelemetry.metrics'>