Support official contextlib.aclosing() when it's available.

This commit is contained in:
Jonathan Moody 2022-04-29 08:39:31 -04:00
parent fe07aac79c
commit fad84c771c

View file

@ -130,12 +130,16 @@ def get_sd_hash(stream_info):
def json_dumps_pretty(obj, **kwargs): def json_dumps_pretty(obj, **kwargs):
return json.dumps(obj, sort_keys=True, indent=2, separators=(',', ': '), **kwargs) return json.dumps(obj, sort_keys=True, indent=2, separators=(',', ': '), **kwargs)
@contextlib.asynccontextmanager try:
async def aclosing(thing): # the standard contextlib.aclosing() is available in 3.10+
try: from contextlib import aclosing
yield thing except ImportError:
finally: @contextlib.asynccontextmanager
await thing.aclose() async def aclosing(thing):
try:
yield thing
finally:
await thing.aclose()
def async_timed_cache(duration: int): def async_timed_cache(duration: int):
def wrapper(func): def wrapper(func):