mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-10-31 12:05:57 +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'>
