truthy-function incorrectly reported on sqlalchemy's hybrid_property with expression
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
Bug Report
(A clear and concise description of what the bug is.)
To Reproduce
import sqlalchemy as sa
from sqlalchemy.orm import declarative_base
from sqlalchemy.ext.hybrid import hybrid_property
Base = declarative_base()
class Foo(Base):
deleted_at = sa.Column(sa.DateTime(), nullable=True)
@hybrid_property
def is_deleted(cls) -> bool:
return cls.deleted_at is not None
@is_deleted.expression # type: ignore[no-redef]
def is_deleted(cls, v):
return cls.deleted_at.is_not(None)
foo = Foo()
assert foo.is_deleted
Expected Behavior
mypy should report no error.
Actual Behavior
mypy reports the following error on the last line:
error: Function "Callable[..., Any]" could always be true in boolean context [truthy-function]
BTW, if there is no @is_deleted.expression,just one @hybrid_property,mypy reports no error.
Your Environment
- mypy version: 0.991
- python version: 3.11.0
- sqlalchemy2-stubs version: 0.0.2a29
- mypy config (in
pyproject.toml)
[tool.mypy]
plugins = ['sqlalchemy.ext.mypy.plugin']
show_error_codes = true
warn_unused_ignores = true
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci lo snippet segnalato con mypy 0.991, il plugin SQLAlchemy e la configurazione mostrata, quindi confronta il comportamento con e senza il decoratore @is_deleted.expression. Traccia come viene tipizzata l’espressione di hybrid_property nell’assert finale; il lavoro è completato quando l’errore di falso positivo relativo a una funzione truthy non compare più, mentre il caso segnalato continua a essere verificato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python, sqlalchemy
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100