Альтернатива contextlib.nested с переменным количеством контекстных менеджеров

У нас есть код, который вызывает переменное количество контекстных менеджеров в зависимости от параметров времени выполнения:

from contextlib import nested, contextmanager

@contextmanager
def my_context(arg):
    print("entering", arg)
    try:
        yield arg
    finally:
        print("exiting", arg)

def my_fn(items): 
    with nested(*(my_context(arg) for arg in items)) as managers:
        print("processing under", managers)

my_fn(range(3))

Тем не мение,contextlib.nested устарела с Python 2.7:

DeprecationWarning: With-statements now directly support multiple context managers

Ответы наНесколько переменных в Python 'с' заявление показывают, чтоcontextlib.nested есть некоторыенепонятные причудливые причуды, но предложенная альтернатива использования нескольких менеджеровwith заявление выиграл• работает с переменным количеством менеджеров контекста (а также нарушает обратную совместимость).

Есть ли альтернативыcontextlib.nested которые нене рекомендуется и (предпочтительно) нете же ошибки?

Или я должен продолжать использоватьcontextlib.nested и игнорировать предупреждение? Если так, я должен планироватьcontextlib.nested быть удаленным в будущем?

Ответы на вопрос(4)

Ваш ответ на вопрос