Changelog for “iteration_utilities”¶
Version 0.12.1 (2024-03-03)¶
Source distribution now includes all files needed to run the tests from the tarball
Version 0.12.0 (2023-10-13)¶
Improve performance of
ipartition
by evaluating the predicate only once per item.Add benchmarks comparing some functions with other libraries.
Python 3.12 compatibility
Dropped Python 3.5 and 3.6 compatibility
The top level
__version__
property was removed.importlib.metadata.version
from the Python standard library should be used if you need the version ofiteration_utilities
.
Version 0.11.0 (2020-11-19)¶
The functions implemented in C now parse boolean arguments based on their truth value instead of their integer value. This should be unnoticeable in typical usage.
Added
always_iterable
which wraps non-iterable inputs with an iterable.Added
empty
as singleton representing an empty iterable.The type of
Placeholder
which was previously accessible asPlaceholderType
private.Added Python 3.9 support.
Version 0.10.1 (2019-11-20)¶
Fixed reference counting bugs in
merge
,minmax
, andsideeffects
.
Version 0.10.0 (2019-11-16)¶
Exception message for
one
if the iterable contains more than one element does show the first two elements.Fixed a bug in
grouper
that lead to a fatal exception.
Version 0.9.0 (2019-11-02)¶
This library does not support Python 2.7 anymore. Attempting to install
iteration_utilities
on Python <= 3.4 should not work anymore.
Add the statistics functions introduced in Python 3.6 and 3.8 as methods on the
Iterable
class. This includes:fmean
(Python >= 3.8)geometric_mean
(Python >= 3.8)harmonic_mean
(Python >= 3.6)multimode
(Python >= 3.8)quantiles
(Python >= 3.8)
Add a new recipe from the
itertools
documentation:nth_combination
.
Version 0.8.0 (2019-10-27)¶
Support for Python 3.3 and 3.4 was dropped. But it now supports Python 3.7 and 3.8. This will be the last release supporting Python 2.
Iterable.islice
will raise a more appropriateTypeError
when called without arguments.partial
only allows plainstr
as keyword-names in CPython 3.8.Some constants have been available in the module namespace that were intended to be private. These have been removed. This includes
EQ_PY2
,GE_PY3
and similar constants.Added support for PyPy (3.5 and 3.6).
Use experimental vectorcall protocol (PEP 590) in a few places.
Contributors:
Solomon Ucko (@sollyucko)
Version 0.7.0 (2018-01-28)¶
Add
__sizeof__
method forpartial
to return a more accurate size for the instance.Fixed a problem when creating
merge
instances depending on the compiler.
Version 0.6.1 (2017-04-15)¶
The
__next__
ornext
method of the processed iterator is not cached in theiteration_utilities
iterators anymore. This correctly handles the (rare) case that this method is reassigned or deleted.
Version 0.6.0 (2017-04-08)¶
Renamed
func
parameter name ofpartition
topred
.Renamed
function
parameter name oftabulate
tofunc
.The
key
attribute ofItemIdxKey
throws anAttributeError
if it is not set and an attempt is made to get or delete it.Added several attributes to classes.
Fixed a Bug in
deepflatten
whenisinstance
fails for the classes given astypes
orignore
parameter.Changed internal package structure (shouldn’t affect end-users that imported everything from
iteration_utilities
directly).improved performance of
all_isinstance
andany_isinstance
.improved performance of
replicate
.replicate
now throws an exception if thetimes
argument is smaller or equal to 1.corrected handling of exceptions and overflow in
__length_hint__
methods.
Version 0.5.2 (2017-03-30)¶
fix release (again).
Version 0.5.1 (2017-03-30)¶
fixed major mistake that made 0.5.0 unusable. (
%R
formatter isn’t allowed inPyErr_Format
).
Version 0.5.0 (2017-03-30)¶
minor speedup for
next(merge)
.removed unused
key
parameter fromcombinations_from_relations
.replaced
Iterable.as_string
parameterseperaror
(sic!) byseperator
.included signature for
__reduce__
,__setstate__
and__length_hint__
methods.fixed
Seen.contains_add
method signature.fixed potential segfault in
ItemIdxKey.__repr__
.removed unnecessary
__setstate__
method forItemIdxKey
.various
__setstate__
and__reduce__
methods were changed so they can’t used to cause segmentation faults,SystemError
or blatantly wrong behaviour. However, serializing or copying such an instance can significantly slower as a result of this change. Unpickling these instances from previous versions could be impossible andcopy.copy
is not supported (and probably won’t be ever becauseitertools.tee
interacts with__copy__
methods). Affected iterators:chained
,deepflatten
,duplicates
,grouper
,intersperse
,merge
,roundrobin
,sideeffects
,split
,successive
,unique_everseen
,unique_justseen
.added
__repr__
method forchained
,complement
,constant
,flip
,nth
andpacked
.fixed a bug with
partial
when the function kept the arguments and a call only provided exactly the number of arguments as there are placeholders in the partial.Applying
flip
on anotherflip
instance now simply returns the original function.chained
now unwraps (if possible) otherchained
instances when creating a new instance. This is only done if this won’t change the current behaviour.
Version 0.4.0 (2017-03-20)¶
Seen
andItemIdxKey
can detect recursive objects in theirrepr
.The representation for
Seen
andItemIdxKey
now uses the classname even for subclasses.added
partial
callback class, which is essentiallyfunctools.partial
but also allows positional placeholders.several functions now interpret
None
as if that argument for the function wasn’t given:key
argument forminmax
,merge
,argmin
andargmax
.reduce
argument forgroupedby
.all arguments for
Seen.__new__
.
Version 0.3.0 (2017-03-09)¶
implemented
__length_hint__
method forclamp
. However sensible results (!= 0) are only possible ifremove=False
or bothlow
andhigh
were not set.fixed
SystemError
in several functions when accessing the next item of the iterable resulted in an Exception different fromStopIteration
.added
starfilter
iterator.added
packed
callback class.fixed a segfault in
complement.__call__
method when the function raised an Exception.fixed a segfault in
partition
whenbool(item)
raised an Exception.included a missing
ValueError
insplit
when two of thekeep*
parameters are True. The case where all three were given already raised the correct exception.clamp
now interpretslow=None
orhigh=None
as if the corresponding value wasn’t given. Before it tried to compare the items withNone
.
Version 0.2.1 (2017-03-01)¶
fixed segfault in
nth
whenretpred=True
.
Version 0.2.0 (2017-02-27)¶
added
remove
parameter toclamp
.made
deepflatten
string-aware. For other recursive-iterable classes aRecursionException
(orRuntimeException
on python < 3.5) is raised instead of freezing.
Version 0.1.0 (2017-01-25)¶
initial release