Skip to main content

Trouting (short for Type Routing) is a simple class decorator that allows to define multiple interfaces for a method that behave differently depending on input types.

Project description

Trouting

Trouting (short for Type Routing) is a simple class decorator that allows to define multiple interfaces for a method that behave differently depending on input types.

To install for PyPI trouting, run:

pip install trouting

The logo of trouting was generated using Stable Diffusion with prompt "A Kandinsky painting titled The Trout Who Routes" and slightly edited by the author.

Example

Imagine you want to define a class whose method behaves differently depending on whether the input is a string or an integer. You can do this with trouting as follows:

from typing import Any, Union
from trouting import trouting

class MyClass:
    @trouting
    def add_one(self, a: Any) -> Any:
        # fallback method
        raise TypeError(f"Type {type(a)} not supported")

    @add_one.add_interface(a=(int, float))
    def add_one_int(self, a: Union[int, float]) -> float:
        # a is an int or float
        return float(a + 1)

    @add_one.add_interface(a=str)
    def add_one_str(self, a: str) -> str:
        # a is a str
        return a + "1"

Now, when using MyClass, the method add_one will behave differently depending on the input type:

my_class = MyClass()
my_class.add_one(1) # returns 2.0
my_class.add_one("1") # returns "11"
my_class.add_one([1]) # raises TypeError

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

trouting-0.3.3.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

trouting-0.3.3-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file trouting-0.3.3.tar.gz.

File metadata

  • Download URL: trouting-0.3.3.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.13

File hashes

Hashes for trouting-0.3.3.tar.gz
Algorithm Hash digest
SHA256 5e428647948025241223fc24ffbf3a0f29d8b50bd458855a266c811aa49a1c7f
MD5 65fea3c445c06bda1b1c99f26fae5ca5
BLAKE2b-256 373972b80a5ccf0b83892cc1ac124a521186207a8334c161e93140654c6252c6

See more details on using hashes here.

File details

Details for the file trouting-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: trouting-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.13

File hashes

Hashes for trouting-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8d23849c3b96ad889d0e3c1d60d5d510e195ad2463650cef3ca41ab0c651e106
MD5 f4dec946abf7b6a2af505592dcf06f1d
BLAKE2b-256 67be9f2e75b5a227dc0b3a20c49a0cecfc9628fc0d315656e80a2bc7380f5527

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