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.
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
Release history Release notifications | RSS feed
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)
Built Distribution
slist-0.1.1-py3-none-any.whl
(7.5 kB
view hashes)