3. Changelog¶
3.1. Development version¶
3.2. Version 2.1¶
Wrapper.selfwill now always go back in the chain to the base of the last call, instead of onyl when the last callable returnedNone. This should fix the possible behaviour change when methods sometimes return None and sometimes a usefull value.Fixed inconsistencies on how
CallableWrapper.curry()deals with too many arguments. In Python this leads to aTypeError- and now it does here too.Fixed bug that
_._argsbehaved differently than documented. The documentation stated that_(lambda x, y=3: x).curry(_._args)(1, 2)._ == (1, 2)but it did instead returntuple(1)Add
__rmul__and friends support on_._eachto allow expressions like4 % _._eachto work.
3.3. Version 2.0¶
3.3.1. Breaking changes¶
IterableWrapper.iter()now returns unwrapped instances. This was changed for uniformity, as all other ways to iterate through a wrappedIterableWrapperreturned unwrapped instances.Removed
Wrapper.tee()andItertools.tee()as_(something).tee(a_function)is easily replicable by_(something).call(a_function).previousandIterableWrapper.tee()prevented me from providingitertools.tee.Wrapper.type()returns a wrapped type for consistency.Wrapper.{tuplify,listify,dictify,setify}have been removed, useWrapper.call(a_type)for a wrapped orWrapper.to(a_type)for an unwrapped result instead._.eachnow supports auto chaining of operations. That means you can type_.each.foo['bar'].baz('quoox')._to generate a function that applies all of these operations in order. This also means that all functions generated from_.eachneed to be unwrapped (._) before usage!_.each.callis removed, as_.each.method('arg')now works as expected, so_.each.callis not neccessary any more.
3.3.2. Notable Changes¶
CallableWrapper.curry()now supports converting positional arguments to keyword arguments.IterableWrapper.each()to apply a function to every element just for the side effect while chaining off of the original value.EachWrapper.in_(haystack)andEachWrapper.not_in(haystack)support to mimiklambda each: each in haystack.All the top level classes have been renamed to have a common -
Wrappersuffix for consistency and debuggability.Added new method
.to(a_type, *args, **kwargs)that callsa_type(self, **args, **kwars)but returns an unwrapped result, to more smothely terminate call chains in common scenarios.