future-annotations 1.0.0

Creator: rpa-with-ash

Last updated:

Add to Cart

Description:

futureannotations 1.0.0

future-annotations
A backport of __future__ annotations to python<3.7.
Installation
pip install future-annotations
Usage
Include the following encoding cookie at the top of your file (this replaces
the utf-8 cookie if you already have it):
# -*- coding: future_annotations -*-

And then write python3.7+ forward-annotation code as usual!
# -*- coding: future_annotations -*-
class C:
@classmethod
def make(cls) -> C:
return cls()

print(C.make())

$ python3.6 main.py
<__main__.C object at 0x7fb50825dd90>
$ mypy main.py
Success: no issues found in 1 source file

Showing transformed source
future-annotations also includes a cli to show transformed source.
$ future-annotations-show main.py
# ****************************** -*-
class C:
@classmethod
def make(cls) -> 'C':
return cls()

print(C.make())

How does this work?
future-annotations has two parts:

A utf-8 compatible codec which performs source manipulation

The codec first decodes the source bytes using the UTF-8 codec
The codec then leverages
tokenize-rt to rewrite
annotations.


A .pth file which registers a codec on interpreter startup.

when you aren't using normal site registration
in setups (such as aws lambda) where you utilize PYTHONPATH or sys.path
instead of truly installed packages, the .pth magic above will not take.
for those circumstances, you'll need to manually initialize future-annotations
in a non-annotations wrapper. for instance:
import future_annotations

future_annotations.register()

from actual_main import main

if __name__ == '__main__':
exit(main())

you may also like

future-breakpoint
future-fstrings

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.