ndarray-npy 0.10.0

.npy and .npz file format support for ndarray
Documentation
# 0.10.0

## Breaking Changes

* Updated to `ndarray` 0.17.1.
* Updated to `zip` 6.
* Updated minimum Rust version to 1.84.
* Changed the `array` parameter of `NpzWriter::add_array` from
  `&ArrayBase<S, D>` to `T: WriteNpyExt + ?Sized` to support the new
  `ArrayRef` type in `ndarray` 0.17.1.

## New Features

* Added new `create_new_npy` convenience function which uses
  `File::create_new`. (In contrast, the existing `write_npy` function
  uses `File::create`.)
* Added `NpzWriter::add_array_with_options`, which overrides the
  options for that specific array.
* Publicly exposed the `npy` module to provide access to
  header-related functionality in the `npy::header` module. In most
  cases, users do not need this functionality, but some users have
  requested access to it for specific use cases.
* Implemented `WriteNpyExt` for the new `ArrayRef` type in `ndarray`
  0.17.1.
* Removed the implicit `Sized` bound from `write_npy` to support the
  new `ArrayRef` type in `ndarray` 0.17.1.

# 0.9.1

* Removed broken links from docs.

# 0.9.0

## Breaking Changes

* Updated to `ndarray` 0.16.
* Updated to `zip` 2.
* Updated minimum Rust version to 1.64.
* Removed `unsafe` from `WritableElement` trait declaration.
* Altered the behavior regarding `.npy` extensions of the file names within
  `.npz` archives to match NumPy's behavior, by @jturner314. See
  [#76]https://github.com/jturner314/ndarray-npy/pull/76. Specifically,
  - `NpzWriter::add_array()` now appends `.npy` to the name.
  - `NpzReader::names()` now strips a single `.npy` (if present) from the end
    of each name.
  - `NpzReader::by_name()` now tries `{name}.npy` if `{name}` is not present in
    the archive.

## New Features

* Added `NpzWriter::new_with_options()`, which allows for different compression
  options, etc., when writing `.npz` files. By @DCNick3. See
  [#66]https://github.com/jturner314/ndarray-npy/pull/66 for the motivation.

# 0.8.1

* Added support for complex floating point element types with the new
  `num-complex-0_4` feature.

# 0.8.0

* Updated to `ndarray` 0.15.
* Updated to `py_literal` 0.4.
* Updated to Rust 1.49.

# 0.7.2

* Added a `.finish()` method to `NpzWriter`. All users of `NpzWriter` should
  call this method, after the write of the last array, in order to properly
  handle errors. (Without calling `.finish()`, dropping will automatically
  attempt to finish the file, but errors will be silently ignored.)
* Changed the `write_npy` convenience function and the `NpzWriter::add_array`
  method to buffer writes using `BufWriter`. This significantly improves write
  performance for arrays which are not in standard or Fortran layout. The docs
  of `WriteNpyExt::write_npy` have also been updated to recommend that users
  wrap the writer in a `BufWriter`. Thanks to [@bluss] for reporting the
  unbuffered writes issue and reviewing the PR.
* Changed `WriteNpyExt::write_npy` to always call `.flush()` before returning.
  This is convenient when the writer passed to `WriteNpyExt::write_npy` is
  wrapped in a `BufWriter`.

# 0.7.1

* Added support for viewing byte slices as `.npy` files, primarily for use with
  memory-mapped files. See the `ViewNpyExt` and `ViewMutNpyExt` extension
  traits. By [@n3vu0r] and [@jturner314].
* Added support for creating files larger than available memory with
  `write_zeroed_npy`.
* Improved handling of overflow in the number of bytes to read as specified by
  the shape and element type in the `.npy` file header. Before, if the number
  of bytes of data was more than `isize::MAX`, the implementation would attempt
  to create the array anyway and panic. Now, it detects this case before
  attempting to create the array and returns
  `Err(ReadNpyError::LengthOverflow)` instead.

# 0.7.0

* Updated to `ndarray` 0.14.
* Updated to Rust 1.42.

# 0.6.0

* Changed `write_npy` to take the array by reference instead of by value, by
  [@KarelPeeters].

# 0.5.0

* Updated to `ndarray` 0.13.
* Updated to Rust 1.38.
* Added `read_npy` and `write_npy` convenience functions.
* Added support for `npy` format version 3.0.
* Renamed `ReadableElement::read_vec` to `::read_to_end_exact_vec`.
* Refactored the error types and variants, including removing the associated
  `Error` type from `Readable/WritableElement` and updating to the new style of
  `std::error::Error` implementation.
* Updated the padding calculation to make the total header length be divisible
  by 64 instead of just 16 when writing files. (See
  [numpy/numpy#9025]https://github.com/numpy/numpy/pull/9025.)
* Fixed determination of file format version when the addition of padding
  changes the required version when writing the file.
* Fixed miscellaneous bugs related to overflow and error handling.

# 0.4.0

* Added support for reading/writing arrays of `bool`, by [@tobni] and
  [@jturner314].
* Updated to `zip` 0.5.
* Updated to Rust 1.32.
* Renamed the `compressed_npz_default` feature to `compressed_npz` because the
  `zip` crate no longer allows the user to select the compression backend.

# 0.3.0

* Updated to `ndarray` 0.12.
* Updated to `num-traits` 0.2 (replacing dependency on `num`).
* Updated to `py_literal` 0.2.

# 0.2.0

* Updated to `zip` 0.4.
* Made the compression backend for compressed `.npz` files user-selectable.
* Reworked how feature selection works. This should only affect you if you use
  `default-features = false, features = ["compressed_npz"]`.

# 0.1.1

* Improved crate documentation (no functional changes).

# 0.1.0

* Initial release.

[@bluss]: https://github.com/bluss/
[@jturner314]: https://github.com/jturner314/
[@KarelPeeters]: https://github.com/KarelPeeters/
[@n3vu0r]: https://github.com/n3vu0r/
[@tobni]: https://github.com/tobni/