ruff/crates/ty_python_semantic/resources/mdtest/import
Aria Desires 172e8d4ae0
[ty] Support implicit imports of submodules in __init__.pyi (#20855)
This is a second take at the implicit imports approach, allowing `from .
import submodule` in an `__init__.pyi` to create the
`mypackage.submodule` attribute everyhere.

This implementation operates inside of the
available_submodule_attributes subsystem instead of as a re-export rule.

The upside of this is we are no longer purely syntactic, and absolute
from imports that happen to target submodules work (an intentional
discussed deviation from pyright which demands a relative from import).
Also we don't re-export functions or classes.

The downside(?) of this is star imports no longer see these attributes
(this may be either good or bad. I believe it's not a huge lift to make
it work with star imports but it's some non-trivial reworking).

I've also intentionally made `import mypackage.submodule` not trigger
this rule although it's trivial to change that.

I've tried to cover as many relevant cases as possible for discussion in
the new test file I've added (there are some random overlaps with
existing tests but trying to add them piecemeal felt confusing and
weird, so I just made a dedicated file for this extension to the rules).

Fixes https://github.com/astral-sh/ty/issues/133

<!--
Thank you for contributing to Ruff/ty! To help us out with reviewing,
please consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title? (Please prefix
with `[ty]` for ty pull
  requests.)
- Does this pull request include references to any relevant issues?
-->

## Summary

<!-- What's the purpose of the change? What does it do, and why? -->

## Test Plan

<!-- How was it tested? -->
2025-10-31 14:29:24 +00:00
..
basic.md [ty] Check typeshed VERSIONS for parent modules when reporting failed stdlib imports (#20908) 2025-10-16 13:25:08 +00:00
builtins.md Update class literal display to use <class 'Foo'> style (#17889) 2025-05-06 20:11:25 -04:00
case_sensitive.md Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
conditional.md [ty] No union with Unknown for module-global symbols (#20664) 2025-10-01 16:40:30 +02:00
conflicts.md Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
conventions.md [ty] Rename "possibly unbound" diagnostics to "possibly missing" (#20492) 2025-09-23 14:26:55 +00:00
cyclic.md [ty] Recognize submodules in self-referential imports (#18005) 2025-05-13 16:59:11 +02:00
dunder_all.md [ty] No union with Unknown for module-global symbols (#20664) 2025-10-01 16:40:30 +02:00
errors.md [ty] Fix bug where ty would think all types had an __mro__ attribute (#20995) 2025-10-27 11:19:12 +00:00
invalid_syntax.md Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
legacy_namespace.md [ty] add legacy namespace package support (#20897) 2025-10-17 03:16:37 +00:00
module_getattr.md [ty] No union with Unknown for module-global symbols (#20664) 2025-10-01 16:40:30 +02:00
namespace.md [ty] No union with Unknown for module-global symbols (#20664) 2025-10-01 16:40:30 +02:00
nonstandard_conventions.md [ty] Support implicit imports of submodules in __init__.pyi (#20855) 2025-10-31 14:29:24 +00:00
partial_stub_packages.md [ty] Add link for namespaces being partial (#20015) 2025-08-20 21:28:57 -07:00
relative.md [ty] Improve error messages for unresolved attribute diagnostics (#20963) 2025-10-19 10:58:25 +01:00
site_packages_discovery.md [ty] Improve tests for site-packages discovery (#18374) 2025-05-30 07:32:21 +01:00
star.md [syntax-errors] Alternative match patterns bind different names (#20682) 2025-10-17 21:35:48 +00:00
stub_packages.md [ty] Fix relative imports in stub packages (#18132) 2025-05-16 15:30:10 +02:00
stubs.md Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
tracking.md Update class literal display to use <class 'Foo'> style (#17889) 2025-05-06 20:11:25 -04:00