1"""Async executor versions of file functions from the os module.""" 2import asyncio 3from functools import partial, wraps 4import os 5 6 7def wrap(func): 8 @wraps(func) 9 async def run(*args, loop=None, executor=None, **kwargs): 10 if loop is None: 11 loop = asyncio.get_event_loop() 12 pfunc = partial(func, *args, **kwargs) 13 return await loop.run_in_executor(executor, pfunc) 14 15 return run 16 17 18from . import ospath as path 19 20 21stat = wrap(os.stat) 22rename = wrap(os.rename) 23replace = wrap(os.replace) 24remove = wrap(os.remove) 25mkdir = wrap(os.mkdir) 26makedirs = wrap(os.makedirs) 27rmdir = wrap(os.rmdir) 28removedirs = wrap(os.removedirs) 29 30if hasattr(os, "sendfile"): 31 sendfile = wrap(os.sendfile) 32