Skip to main content

A typesafe list with more method chaining!

Project description

Slist

A spruced up version of the built-in python list.

More post-fixed methods for lovely chaining!

Leverage the latest mypy features to spot errors during coding.

All these methods return a new list. They do not mutate the original list.

pypi python Build Status

pip install slist

Quick Start

With mypy installed, easily spot errors when you call the wrong methods on your sequence.

from slist import Slist

many_strings = Slist(["Lucy, Damion, Jon"])  # Slist[str]
many_strings.sum()  # Mypy errors with 'Invalid self argument'. You can't sum a sequence of strings!

many_nums = Slist([1, 1.2])
assert many_nums.sum() == 2.2  # ok!

class CannotSortMe:
    def __init__(self, value: int):
        self.value: int = value

stuff = Slist([CannotSortMe(value=1), CannotSortMe(value=1)])
stuff.sort_by(lambda x: x)  # Mypy errors with 'Cannot be "CannotSortMe"'. There isn't a way to sort by the class itself
stuff.sort_by(lambda x: x.value)  # ok! You can sort by the value

Slist([{"i am a dict": "value"}]).distinct_by(
    lambda x: x
)  # Mypy errors with 'Cannot be Dict[str, str]. You can't hash a dict itself

Slist provides methods that you can chain easily for easier data processing.

from slist import Slist

test = Slist([-1, 0, 1]).map(
    lambda x: x if x >= 0 else None
).flatten_option()  # Mypy infers slist[int] correctly

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

slist-0.1.1.tar.gz (9.0 kB view hashes)

Uploaded Source

Built Distribution

slist-0.1.1-py3-none-any.whl (7.5 kB view hashes)

Uploaded Python 3

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