pyabstractdatatype

Abstract Data Types for Python


Keywords
adt, data, structure
License
MIT
Install
pip install pyabstractdatatype==0.0.2

Documentation

PyAbstractDataType

A simple library that adds ADTs to Python.

Source Code

Documentation

Basic usage:

from adt import adt

@adt
class MyADT:
    Variant1: (int, int)
    Variant2: (int)
    Variant3: (str, str, list[float])

Supports match statement!

obj1 = MyADT.Variant1(2, 2)
obj2 = MyADT.Variant3("hi", "foo", [2.3, 5.6, 3.1415])

objs = obj1, obj2

for obj in objs:
    match obj1:
        case MyADT.Variant1(a, b):
            print(f"Found you! {a}, {b}")
        case MyADT.Variant2(x):
            print(":(")
        case _:
            raise ValueError("wtf")

Output:

Found you! 2, 2
Traceback (most recent call last):
...
ValueError: wtf

Examples

See example.py.