Typish: Extended Type Functionality

1.9.3 · active · verified Sat Apr 11

Typish is a Python library that extends Python's native `typing` module, offering advanced functionality for thorough type checks, instance checks considering generics, and typesafe duck-typing. It provides utilities for introspection of type hints, such as retrieving origins and arguments of generic types, and determining optionality. Currently at version 1.9.3, it maintains a regular release cadence with a focus on bug fixes and compatibility improvements across Python versions.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates `typish.instance_of` for type-safe checks with generics, `typish.get_origin` for inspecting generic types, and `typish.is_optional_type` for identifying optional type hints. It also shows `typish.Literal` for broad compatibility of literal types.

from typing import Iterable
from typish import instance_of

# Basic instance check with generics
result_iterable = instance_of([1, 2, 3], Iterable[int])
print(f"Is [1, 2, 3] an Iterable[int]? {result_iterable}")

from typish import get_origin
from typing import List, Dict

# Get the origin of a generic type
origin_list = get_origin(List[str])
origin_dict = get_origin(Dict[str, int])
print(f"Origin of List[str]: {origin_list}")
print(f"Origin of Dict[str, int]: {origin_dict}")

from typish import is_optional_type, Literal
from typing import Optional, Union

# Check for optional types
is_opt_str = is_optional_type(Optional[str])
is_union_none = is_optional_type(Union[int, None])
print(f"Is Optional[str] optional? {is_opt_str}")
print(f"Is Union[int, None] optional? {is_union_none}")

# Using typish.Literal for older Python compatibility (if needed)
from typish import Literal
def process_status(status: Literal['success', 'failure']):
    return f"Processing status: {status}"

print(process_status('success'))

view raw JSON →