Skip to main content

Backport for type hinting generics in standard collections and union types as X | Y

Project description

future-typing

Tests codecov pypi versions license

Backport for type hinting generics in standard collections and union types as X | Y

(greatly inspired by future-annotations!)

Installation

    pip install future_typing

Usage

Just add this custom source code encoding at the top of your file

# -*- coding: future_typing -*-

and then use | and list[str], dict[str, int], ... as if you were using python 3.10

# -*- coding: future_typing -*-
from typing import Literal


class C:
    @staticmethod
    def g(t: tuple[int, ...]) -> tuple[int, ...]:
        return t


def f(a: list[str | int] | dict[str, str], b: Literal['pika'] | None = None) -> type[C]:
    x: set[str | int] = set(a)
    y: frozenset[str] = frozenset(['y1', 'y2'])
    t: tuple[int, ...] = (1, 2)
    print(f'it works! a: {a!r}, b: {b!r}')
    return C


f(['a', 'b', 1], 'pika')
$ python3.8 pika.py
it works! a: ['a', 'b'], b: 'pika'

$ mypy pika.py
Success: no issues found in 1 source file

See transformed source

$ python3.8 -m future_typing pika.py
# -*- coding: utf-8 -*-
import typing as typing___
from typing import Literal


class C :
    @staticmethod
    def g (t :typing___.Tuple [int ,...])->typing___.Tuple [int ,...]:
        return t


def f (a :typing___.Union [typing___.List [typing___.Union [str ,int ]],typing___.Dict [str ,str ]],b :typing___.Union [Literal ['pika'],None ]=None )->typing___.Type [C ]:
    x :typing___.Set [typing___.Union [str ,int ]]=set (a )
    y :typing___.FrozenSet [str ]=frozenset (['y1','y2'])
    t :typing___.Tuple [int ,...]=(1 ,2 )
    print (f'it works! a: {a!r}, b: {b!r}')
    return C


f (['a','b',1 ],'pika')

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_typing-0.4.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

future_typing-0.4.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file future_typing-0.4.0.tar.gz.

File metadata

  • Download URL: future_typing-0.4.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.0rc1+

File hashes

Hashes for future_typing-0.4.0.tar.gz
Algorithm Hash digest
SHA256 eb321ffbfdc2d209eff308f06276f4d660ffb1a42ec0a8f818600d8b4d80db5a
MD5 604a423790a1406ac256229c9ca3e923
BLAKE2b-256 f9f576ab8021bab16c6f5ccd8aac6d8f860a7ca095ad1a36770d9b673e723fb8

See more details on using hashes here.

File details

Details for the file future_typing-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: future_typing-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.0rc1+

File hashes

Hashes for future_typing-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f0a1befa5dcc8f04db38bdc3a84286000f6ee293668e7a8b66b011f6add9662
MD5 1a523c43328328a5bbb538c41a6a697b
BLAKE2b-256 9425db260363223333e37681f6766a2c932b1aec4d2252b8c955a9c00ab49a5b

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