Skip to main content

Convert trollius code to asyncio

Project description

trollius2asyncio

A tool based on lib2to3 for converting code using trollius to use asyncio. After installation, run trollius2asyncio. It works in the same way as 2to3.

For example, it will transform this:

import trollius
from trollius import From, Return

@trollius.coroutine
def double_future(future):
    value = yield From(future)
    raise Return(2 * value)

into

import asyncio


async def double_future(future):
    value = await future
    return 2 * value

Usage

After installation, run trollius2asyncio as you would 2to3. It takes the same command-line arguments, including -h for help.

Limitations

It recognises From, trollius.From, Return and trollius.Return, without taking the imports into consideration. Thus, importing trollius as a different name will confuse it, and from tornado.gen import Return will cause the returns from Tornado to also be rewritten (which should still be a legal transformation).

It recognises @trollius.coroutine, again without taking imports into consideration. If the decorator is omitted, it won't turn the function into a coroutine, which will lead to syntax errors if it ends up containing await statements. It also won't apply the transformation if there are additional decorators inside (i.e., between @trollius.coroutine and the definition) since that would alter the semantics.

The resulting code is not necessarily well-styled e.g., the extra blank line in the example above. These are limitations of lib2to3 and won't be easy to fix without risking breaking code in corner cases.

Release history

0.2

  • Drop Python 3.4 support (output code uses async and await).

0.1.1

  • Add licence.

0.1

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trollius-fixers-0.2.tar.gz (4.6 kB view hashes)

Uploaded Source

Built Distribution

trollius_fixers-0.2-py2.py3-none-any.whl (10.1 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page