ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0.6 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| URL | https://docs.astral.sh/ruff/rules/relative-imports/ | |||||||||
| Last Crawled | 2026-04-07 13:04:10 (17 days ago) | |||||||||
| First Indexed | 2023-09-16 14:26:04 (2 years ago) | |||||||||
| HTTP Status Code | 200 | |||||||||
| Content | ||||||||||
| Meta Title | relative-imports (TID252) | Ruff | |||||||||
| Meta Description | Checks for relative imports. | |||||||||
| Meta Canonical | null | |||||||||
| Boilerpipe Text | Added in
v0.0.169
·
Related issues
·
View source
Derived from the
flake8-tidy-imports
linter.
Fix is sometimes available.
What it does
Checks for relative imports.
Why is this bad?
Absolute imports, or relative imports from siblings, are recommended by
PEP 8
:
Absolute imports are recommended, as they are usually more readable and tend to be better behaved...
import
mypkg.sibling
from
mypkg
import
sibling
from
mypkg.sibling
import
example
However, explicit relative imports are an acceptable alternative to absolute imports,
especially when dealing with complex package layouts where using absolute imports would be
unnecessarily verbose:
from
.
import
sibling
from
.sibling
import
example
Example
from
..
import
foo
Use instead:
from
mypkg
import
foo
Options
lint.flake8-tidy-imports.ban-relative-imports | |||||||||
| Markdown | [Skip to content](https://docs.astral.sh/ruff/rules/relative-imports/#relative-imports-tid252)
[](https://docs.astral.sh/ruff/ "Ruff")
Ruff
relative-imports (TID252)
Type to start searching
[ruff 0.15.9 46.9k 2k](https://github.com/astral-sh/ruff "Go to repository")
[](https://docs.astral.sh/ruff/ "Ruff") Ruff
[ruff 0.15.9 46.9k 2k](https://github.com/astral-sh/ruff "Go to repository")
- [Overview](https://docs.astral.sh/ruff/)
- [Tutorial](https://docs.astral.sh/ruff/tutorial/)
- [Installing Ruff](https://docs.astral.sh/ruff/installation/)
- [The Ruff Linter](https://docs.astral.sh/ruff/linter/)
- [The Ruff Formatter](https://docs.astral.sh/ruff/formatter/)
- Editors
Editors
- [Editor Integration](https://docs.astral.sh/ruff/editors/)
- [Setup](https://docs.astral.sh/ruff/editors/setup/)
- [Features](https://docs.astral.sh/ruff/editors/features/)
- [Settings](https://docs.astral.sh/ruff/editors/settings/)
- [Migrating from ruff-lsp](https://docs.astral.sh/ruff/editors/migration/)
- [Configuring Ruff](https://docs.astral.sh/ruff/configuration/)
- [Preview](https://docs.astral.sh/ruff/preview/)
- [Rules](https://docs.astral.sh/ruff/rules/)
- [Settings](https://docs.astral.sh/ruff/settings/)
- [Versioning](https://docs.astral.sh/ruff/versioning/)
- [Integrations](https://docs.astral.sh/ruff/integrations/)
- [FAQ](https://docs.astral.sh/ruff/faq/)
- [Contributing](https://docs.astral.sh/ruff/contributing/)
# [relative-imports (TID252)](https://docs.astral.sh/ruff/rules/relative-imports/#relative-imports-tid252)
Added in [v0.0.169](https://github.com/astral-sh/ruff/releases/tag/v0.0.169) · [Related issues](https://github.com/astral-sh/ruff/issues?q=sort%3Aupdated-desc%20is%3Aissue%20is%3Aopen%20\(%27relative-imports%27%20OR%20TID252\)) · [View source](https://github.com/astral-sh/ruff/blob/main/crates%2Fruff_linter%2Fsrc%2Frules%2Fflake8_tidy_imports%2Frules%2Frelative_imports.rs#L48)
Derived from the **[flake8-tidy-imports](https://docs.astral.sh/ruff/rules/#flake8-tidy-imports-tid)** linter.
Fix is sometimes available.
## [What it does](https://docs.astral.sh/ruff/rules/relative-imports/#what-it-does)
Checks for relative imports.
## [Why is this bad?](https://docs.astral.sh/ruff/rules/relative-imports/#why-is-this-bad)
Absolute imports, or relative imports from siblings, are recommended by [PEP 8](https://peps.python.org/pep-0008/#imports):
> Absolute imports are recommended, as they are usually more readable and tend to be better behaved...
> ```
>
> ```
> However, explicit relative imports are an acceptable alternative to absolute imports, especially when dealing with complex package layouts where using absolute imports would be unnecessarily verbose:
> ```
>
> ```
## [Example](https://docs.astral.sh/ruff/rules/relative-imports/#example)
```
from .. import foo
```
Use instead:
```
from mypkg import foo
```
## [Options](https://docs.astral.sh/ruff/rules/relative-imports/#options)
- [`lint.flake8-tidy-imports.ban-relative-imports`](https://docs.astral.sh/ruff/settings/#lint_flake8-tidy-imports_ban-relative-imports)
Back to top
Made with [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) | |||||||||
| Readable Markdown | Added in [v0.0.169](https://github.com/astral-sh/ruff/releases/tag/v0.0.169) · [Related issues](https://github.com/astral-sh/ruff/issues?q=sort%3Aupdated-desc%20is%3Aissue%20is%3Aopen%20\(%27relative-imports%27%20OR%20TID252\)) · [View source](https://github.com/astral-sh/ruff/blob/main/crates%2Fruff_linter%2Fsrc%2Frules%2Fflake8_tidy_imports%2Frules%2Frelative_imports.rs#L48)
Derived from the **[flake8-tidy-imports](https://docs.astral.sh/ruff/rules/#flake8-tidy-imports-tid)** linter.
Fix is sometimes available.
## [What it does](https://docs.astral.sh/ruff/rules/relative-imports/#what-it-does)
Checks for relative imports.
## [Why is this bad?](https://docs.astral.sh/ruff/rules/relative-imports/#why-is-this-bad)
Absolute imports, or relative imports from siblings, are recommended by [PEP 8](https://peps.python.org/pep-0008/#imports):
> Absolute imports are recommended, as they are usually more readable and tend to be better behaved...
> ```
>
> ```
> However, explicit relative imports are an acceptable alternative to absolute imports, especially when dealing with complex package layouts where using absolute imports would be unnecessarily verbose:
> ```
>
> ```
## [Example](https://docs.astral.sh/ruff/rules/relative-imports/#example)
```
from .. import foo
```
Use instead:
```
from mypkg import foo
```
## [Options](https://docs.astral.sh/ruff/rules/relative-imports/#options)
- [`lint.flake8-tidy-imports.ban-relative-imports`](https://docs.astral.sh/ruff/settings/#lint_flake8-tidy-imports_ban-relative-imports) | |||||||||
| ML Classification | ||||||||||
| ML Categories |
Raw JSON{
"/Computers_and_Electronics": 965,
"/Computers_and_Electronics/Software": 523,
"/Computers_and_Electronics/Software/Software_Utilities": 449
} | |||||||||
| ML Page Types |
Raw JSON{
"/Article": 539,
"/Article/Definitions": 350
} | |||||||||
| ML Intent Types |
Raw JSON{
"Informational": 988
} | |||||||||
| Content Metadata | ||||||||||
| Language | en | |||||||||
| Author | null | |||||||||
| Publish Time | not set | |||||||||
| Original Publish Time | 2023-09-16 14:26:04 (2 years ago) | |||||||||
| Republished | No | |||||||||
| Word Count (Total) | 177 | |||||||||
| Word Count (Content) | 115 | |||||||||
| Links | ||||||||||
| External Links | 9 | |||||||||
| Internal Links | 19 | |||||||||
| Technical SEO | ||||||||||
| Meta Nofollow | No | |||||||||
| Meta Noarchive | No | |||||||||
| JS Rendered | Yes | |||||||||
| Redirect Target | null | |||||||||
| Performance | ||||||||||
| Download Time (ms) | 64 | |||||||||
| TTFB (ms) | 63 | |||||||||
| Download Size (bytes) | 7,381 | |||||||||
| Shard | 10 (laksa) | |||||||||
| Root Hash | 2731251898944797010 | |||||||||
| Unparsed URL | sh,astral!docs,/ruff/rules/relative-imports/ s443 | |||||||||