A backport of __future__ annotations to python<3.7
Project description
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
codecwhich performs source manipulation- The
codecfirst decodes the source bytes using the UTF-8 codec - The
codecthen leverages tokenize-rt to rewrite annotations.
- The
- A
.pthfile 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file future_annotations-1.0.0.tar.gz.
File metadata
- Download URL: future_annotations-1.0.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c707d19f7c74e08d9e67b310fd6a7438ff510ba5cbfb7334695627f8f69c6378
|
|
| MD5 |
19897525a7f4dfe2df9e14e494b6e233
|
|
| BLAKE2b-256 |
453a168feb6471a3142b1a501947e2f45afbbe9753e44f9d05317553ad7c04c0
|
File details
Details for the file future_annotations-1.0.0-py2.py3-none-any.whl.
File metadata
- Download URL: future_annotations-1.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a38cc5d9602181a7eb04550d34644508a63e5550c82c4b45b28b86923be203d2
|
|
| MD5 |
68c4c03370fd13fc71d459dc2d996a89
|
|
| BLAKE2b-256 |
2aa695dd5f6dd2a785d69fa2fd2c7c217c13a6eb9c1f37eddc232eb11bfd8fa7
|