Как правильно аннотировать ContextManager в VSCode? - PullRequest
0 голосов
/ 21 июня 2020

Как я могу аннотировать 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.

...