Как я могу аннотировать contextlib.contextmanager
в VSCode, чтобы его тип был известен, когда я использую оператор with
?
Я пробовал использовать ContextManager
из typing
, но VSCode (Jedi / Microsoft Language Server) по-прежнему не распознает его тип и не отображает автозаполнение:
import sqlalchemy.orm.session.Session
from contextlib import contextmanager
from typing import ContextManager
...
@contextmanager
def session_scope() -> ContextManager[sqlalchemy.orm.session.Session]:
session: sqlalchemy.orm.session.Session = Session()
try:
yield session
session.commit()
except Exception:
session.rollback()
raise
finally:
session.close()
with session_scope() as session:
session # VSCode doesn't recognize this as `sqlalchemy.orm.session.Session`
По сути, это тот же вопрос, что и Как правильно аннотировать ContextManager в PyCharm? , но есть укажите c в код Visual Studio вместо PyCharm.