Skip to main content

A backport of __future__ annotations to python<3.7

Project description

Build Status Azure DevOps coverage

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:

  1. 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.
  2. 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

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

future_annotations-1.0.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

future_annotations-1.0.0-py2.py3-none-any.whl (5.6 kB view details)

Uploaded Python 2 Python 3

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

Hashes for future_annotations-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c707d19f7c74e08d9e67b310fd6a7438ff510ba5cbfb7334695627f8f69c6378
MD5 19897525a7f4dfe2df9e14e494b6e233
BLAKE2b-256 453a168feb6471a3142b1a501947e2f45afbbe9753e44f9d05317553ad7c04c0

See more details on using hashes here.

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

Hashes for future_annotations-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a38cc5d9602181a7eb04550d34644508a63e5550c82c4b45b28b86923be203d2
MD5 68c4c03370fd13fc71d459dc2d996a89
BLAKE2b-256 2aa695dd5f6dd2a785d69fa2fd2c7c217c13a6eb9c1f37eddc232eb11bfd8fa7

See more details on using hashes here.

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