relative-imports
Relative import used instead of absolute import.
Applies to: Python
Why this matters
Relative imports (from . import x, from .. import y) are fragile and confusing. They break when files are moved and make it harder to understand where code comes from. Absolute imports (from mypackage.module import x) are explicit and reliable.
Catch it before it ships
pip install stablestack # or: npx stablestackstablestack # scans your project, STRUCT005 includedstablestack explain STRUCT005STRUCT005 is part of the Pro rule set. See pricing — the free tier ships 24 checks with no signup.
False positive in your codebase? Suppress a single line with # noqa: STRUCT005
More Code Structure checks
multiple-classes-per-file
Multiple classes defined in a single file.
STRUCT003imports-in-function
Import statement inside a function instead of at module level.
STRUCT004sys-path-manipulation
Direct sys.path manipulation detected.
STRUCT006hasattr-getattr-pattern
Using hasattr/getattr for attribute access instead of proper typing.
STRUCT009class-filename-mismatch
Class name doesn't match filename convention.
STRUCT010mixed-frontend-backend
Frontend and backend code should be clearly separated
STRUCT011duplicate-modules
Duplicate files exist in multiple locations - likely from incomplete migration or copy-paste.
STRUCT012naked-functions
Too many loose functions - consider grouping into a class or service.