=======
Changes
=======

Release 0.2.0
=============

* Fixed problems with deepcopying lazy arrays.
* Optimization - uses `x.min()` rather than `min(x)` where possible.
* Some fixes for when using boolean addressing.
* Setting shape on an larray now also sets it on all larrays within the operations list.
* Added `__eq__` method to larray.
* Replaced some assertions with more specific Exceptions.
* Added support for 'vectorized iterables', i.e. objects with a `next(n)` method so that you can return multiple values at once.
* Fixed some bugs when creating a lazy array from an existing lazy array.
* Added `dtype` attribute to `larray` class.


Release 0.2.1
=============

* Previous release didn't work with Python 3.


Release 0.2.2
=============

* Fixed behaviour of larray(VectorizedIterable) to match that of numpy array when indexing a single item.
* Pulled out `partial_shape()` and `full_address()` methods of `larray` as standalone functions.
* Better support for lists as masks.
* `larray`s are now callable, provided their `base_value` is callable and the argument is another `larray`.


Release 0.2.3
=============

* Support `numpy.int64` as indices.
* Better support for boolean indices.
* Handle the case of constant `larray`s of size 1.


Release 0.2.4
=============

* Fixed bugs related to indexing multiple axes at the same time (`#3`_, `#4`_)


Release 0.2.5
=============

* Fixed a bug where the base value was homogeneous but one or more operations involved inhomogeneous arrays.


Release 0.2.6
=============

* Fixed a bug with callable lazyarrays.

Release 0.2.7
=============

* When deepcopying, VectorizedIterable objects as base_value are no longer copied, rather we keep a reference to the original.

Release 0.2.8
=============

* Slices which go past the array limits are now correctly handled. (`#5`_)

Release 0.2.9
=============

* Support base values of type `numpy.float` (which have an empty `shape` attribute)

Release 0.2.10
==============

* We don't create a new instance if the base value is already of the required dtype

Release 0.3.0
=============

* Support SciPy sparse matrices as base values
* Support any object that implements a method `lazily_evaluate` as a base value
* Allow more flexibility in checking 'equality' of types, e.g. accept an array of dtype `numpy.float32` when the specified dtype is `float`

Release 0.3.1
=============

* Fix a packaging issue, update project homepage.

Release 0.3.2
=============

* Ensure SciPy is optional

Release 0.3.3
=============

* Do not raise a "shape mismatch" `ValueError` if the value shape is empty.

Release 0.3.4
=============

* Add support for Brian quantities, and perhaps NumPy scalars in general
* Updated to test with more recent versions of Python, NumPy and SciPy
* Can now compare equality of lazyarrays to numbers and arrays

Release 0.4.0
=============

* Drop support for Python 2.7
* Added a more general way to specify that an array-like object should be treated as a scalar by lazyarray (for arrays of arrays, etc.)

Release 0.5.0
=============

* Add partial support for NumPy ufuncs that require two arguments, e.g. "power".
  The second argument must be a scalar, array-valued second args are not yet supported.

Release 0.5.1
=============

* Fix problem where SciPy was required, not optional

Release 0.5.2
=============

* Add support for Python 3.10, remove testing for Python 3.4 and NumPy 1.12
* Switch from nose to pytest for running tests


.. _`#3`: https://bitbucket.org/apdavison/lazyarray/issue/3/
.. _`#4`: https://bitbucket.org/apdavison/lazyarray/issue/4/
.. _`#5`: https://bitbucket.org/apdavison/lazyarray/issue/5/
