Reduce __enter__/__exit__ boilerplate for sync ctx managers

This commit is contained in:
Lonami Exo
2019-04-13 10:53:33 +02:00
parent badefcec48
commit 9090ede5db
5 changed files with 33 additions and 51 deletions

View File

@@ -536,23 +536,13 @@ class AuthMethods(MessageParseMethods, UserMethods):
# region with blocks
def __enter__(self):
if self._loop.is_running():
raise RuntimeError(
'You must use "async with" if the event loop '
'is running (i.e. you are inside an "async def")'
)
return self.start()
async def __aenter__(self):
return await self.start()
def __exit__(self, *args):
# No loop.run_until_complete; it's already syncified
self.disconnect()
async def __aexit__(self, *args):
await self.disconnect()
__enter__ = helpers._sync_enter
__exit__ = helpers._sync_exit
# endregion