Позволяет вложить несколько менеджеров один в другой.
contextlib.nested(*managers)
*managers -- Менеджеры контекста, которые следует вложить один в другой.

Внимание
Функция устарела, воспользуйтесь встроенными возможностями with.

    from contextlib import nested, contextmanager

@contextmanager
def manager_one():
print('one start')
yield
print('one finish')



@contextmanager
def manager_two():
print('two start')
yield
print('two finish')


with nested(manager_one(), manager_two()): # one start \n two start
print('do') # do
# two finish
# one finish

На заметку
Причины устаревания. 1. Менеджеры создаются до начала работы этой функции, а потому происходящее в __new__() и __init__() нижестоящих менеджеров не управляется стоящими выше. В результате, если, скажем, открыть при помощи nested() два файла, то при ошибке открытия второго первый не будет закрыт вовсе. 2. Если в __enter__() нижестоящего менеджера возбуждается исключение, заглушаемое потом в __exit__() вышестоящего, то это выливается в RuntimeError, а не в ожидаемый пропуск тела инструкции with.
Синонимы поиска: contextlib.nested, contextlib, nested
На заметку
Зарегистрированные пользователи могут получать еженедельный дайджест обновлений на сайте.