pi-lens
Version:
Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo
59 lines (48 loc) • 1.9 kB
YAML
# Python Slop Detection
# Detects cross-framework import confusion — importing names from the wrong package.
# These are syntactically valid but fail at runtime. Common AI hallucination pattern.
id: python-hallucinated-import
name: Hallucinated Import
severity: warning
category: correctness
defect_class: hallucination
inline_tier: blocking
language: python
message: "Hallucinated import — '{{NAME}}' does not exist in '{{MODULE}}'"
description: |
This import is from the wrong package. A name from one framework is being
imported from another — a common AI confusion pattern that fails at runtime.
Common cases:
- FastAPI/Starlette confusion (JSONResponse, Depends, Query in wrong package)
- dataclasses/typing/pydantic confusion (BaseModel, dataclass)
- pytest/unittest confusion (fixture, TestCase)
- JavaScript method names on json module (json.parse, json.stringify)
query: |
(import_from_statement
module_name: (dotted_name) @MODULE
name: (dotted_name) @NAME)
metavars:
- MODULE
- NAME
post_filter: match_captures
post_filter_params:
MODULE: "^(requests|flask|django|typing|collections|asyncio|json|unittest|pytest|urllib)$"
NAME: "^(JSONResponse|HTMLResponse|RedirectResponse|StreamingResponse|Depends|Query|Path|Body|Header|Cookie|Form|File|UploadFile|FastAPI|APIRouter|HTTPException|BackgroundTasks|dataclass|fields|BaseModel|Field|validator|aiohttp|parse|stringify|fixture|TestCase|get|post|put|delete|Model|Session|Column|Integer|String)$"
has_fix: false
tags:
- python
- correctness
- hallucination
- slop
- ai-generated
examples:
bad: |
from requests import JSONResponse
from flask import Depends
from json import parse
from typing import dataclass
good: |
from fastapi.responses import JSONResponse
from fastapi import Depends
import json; json.loads(data)
from dataclasses import dataclass