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 future_typing.py 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.3.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

future_typing-0.3.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: future_typing-0.3.0.tar.gz
  • Upload date:
  • Size: 5.5 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.3.0.tar.gz
Algorithm Hash digest
SHA256 8943e24350d984143bde03fc705d3b9b9642748f7496ddef305ca5b84c7f52db
MD5 ef71ca7c15fd5a270a6afaef9ae08c3b
BLAKE2b-256 da53ec66b0325205c962693f5be8c43062c72efa56f08075a7d3354b788b9cff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: future_typing-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 5.4 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 98a0fbc41f03f04a6a95453db759161fa68cb91af102e414564283196f6497d3
MD5 ffb16f0093194599e0d3b6cfea08e35e
BLAKE2b-256 a7d3ae17c15036c46e42ca1d1b02730d41f78c8f5ce81e0aafeccc9a026d5c68

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