Write short and fully-typed lambdas where you need them.
- Allows to write
lambdas as_ - Fully typed with annotations and checked with
mypy, PEP561 compatible - Has a bunch of helpers for better composition
- Easy to start: has lots of docs, tests, and tutorials
pip install lambdasYou also need to configure mypy correctly and install our plugin:
# In setup.cfg or mypy.ini:
[mypy]
plugins =
lambdas.contrib.mypy.lambdas_pluginWe recommend to use the same mypy settings we use.
Imagine that you need to sort an array of dictionaries like so:
>>> scores = [
... {'name': 'Nikita', 'score': 2},
... {'name': 'Oleg', 'score': 1},
... {'name': 'Pavel', 'score': 4},
... ]
>>> print(sorted(scores, key=lambda item: item['score']))
[{'name': 'Oleg', 'score': 1}, {'name': 'Nikita', 'score': 2}, {'name': 'Pavel', 'score': 4}]And it works perfectly fine. Except, that you have to do a lot of typing for such a simple operation.
That's where lambdas helper steps in:
>>> from lambdas import _
>>> scores = [
... {'name': 'Nikita', 'score': 2},
... {'name': 'Oleg', 'score': 1},
... {'name': 'Pavel', 'score': 4},
... ]
>>> print(sorted(scores, key=_['score']))
[{'name': 'Oleg', 'score': 1}, {'name': 'Nikita', 'score': 2}, {'name': 'Pavel', 'score': 4}]It might really save you a lot of effort,
when you use a lot of lambda functions.
Like when using returns library.
We can easily create math expressions:
>>> from lambdas import _
>>> math_expression = _ * 2 + 1
>>> print(math_expression(10))
21
>>> complex_math_expression = 50 / (_ ** 2) * 2
>>> print(complex_math_expression(5))
100.0Work in progress:
_.method()is not supported yet for the same reasonTypedDicts are not tested with__getitem____getitem__does not work with list and tuples (collections), only dicts (mappings)
For now you will have to use regular lamdbas in these cases.
