Какие методы должен реализовать объект, чтобы стать менеджером контекста?

Менеджер контекста должен реализовывать два магических метода:

  1.  __enter__ — вызывается при входе в блок with, открывает и возвращает ресурс.
  2.  __exit__ — вызывается при выходе из блока with, освобождает ресурс и обрабатывает исключения.

В асинхронном варианте это __aenter__ и __aexit__ соответственно.