<div dir="ltr"><div><div><div><div>Hi All,<br><br></div>It is my pleasure to release NumPy 1.10.0. Files may be found at <a href="http://sourceforge.net/projects/numpy/files/NumPy/1.10.0/">Sourceforge</a> and <a href="https://pypi.python.org/pypi?%3Aaction=pkg_edit&name=numpy">pypi</a>. This release is the result of 789 non-merge commits made by 160 developers over a period of a year and supports Python 2.6 - 2.7 and 3.2 - 3.5.</div><br><span style="font-family:monospace,monospace">NumPy 1.10.0 Release Notes<br>**************************<br><br>This release supports Python 2.6 - 2.7 and 3.2 - 3.5.<br><br><br>Highlights<br>==========<br>* numpy.distutils now supports parallel compilation via the --parallel/-j<br>  argument passed to setup.py build<br>* numpy.distutils now supports additional customization via site.cfg to<br>  control compilation parameters, i.e. runtime libraries, extra<br>  linking/compilation flags.<br>* Addition of *np.linalg.multi_dot*: compute the dot product of two or more<br>  arrays in a single function call, while automatically selecting the fastest<br>  evaluation order.<br>* The new function `np.stack` provides a general interface for joining a<br>  sequence of arrays along a new axis, complementing `np.concatenate` for<br>  joining along an existing axis.<br>* Addition of `nanprod` to the set of nanfunctions.<br>* Support for the '@' operator in Python 3.5.<br><br>Dropped Support:<br><br>* The _dotblas module has been removed. CBLAS Support is now in<br>  Multiarray.<br>* The testcalcs.py file has been removed.<br>* The polytemplate.py file has been removed.<br>* npy_PyFile_Dup and npy_PyFile_DupClose have been removed from<br>  npy_3kcompat.h.<br>* splitcmdline has been removed from numpy/distutils/exec_command.py.<br>* try_run and get_output have been removed from<br>  numpy/distutils/command/config.py<br>* The a._format attribute is no longer supported for array printing.<br>* Keywords ``skiprows`` and ``missing`` removed from np.genfromtxt.<br>* Keyword ``old_behavior`` removed from np.correlate.<br><br>Future Changes:<br><br>* In array comparisons like ``arr1 == arr2``, many corner cases<br>  involving strings or structured dtypes that used to return scalars<br>  now issue ``FutureWarning`` or ``DeprecationWarning``, and in the<br>  future will be change to either perform elementwise comparisons or<br>  raise an error.<br>* The SafeEval class will be removed.<br>* The alterdot and restoredot functions will be removed.<br><br>See below for more details on these changes.<br><br>Compatibility notes<br>===================<br><br>numpy version string<br>~~~~~~~~~~~~~~~~~~~~<br>The numpy version string for development builds has been changed from<br>``x.y.z.dev-githash`` to ``x.y.z.dev0+githash`` (note the +) in order to comply<br>with PEP 440.<br><br>relaxed stride checking<br>~~~~~~~~~~~~~~~~~~~~~~~<br>NPY_RELAXED_STRIDE_CHECKING is now true by default.<br><br>Concatenation of 1d arrays along any but ``axis=0`` raises ``IndexError``<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Using axis != 0 has raised a DeprecationWarning since NumPy 1.7, it now<br>raises an error.<br><br>*np.ravel*, *np.diagonal* and *np.diag* now preserve subtypes<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>There was inconsistent behavior between *x.ravel()* and *np.ravel(x)*, as<br>well as between *x.diagonal()* and *np.diagonal(x)*, with the methods<br>preserving subtypes while the functions did not. This has been fixed and<br>the functions now behave like the methods, preserving subtypes except in<br>the case of matrices.  Matrices are special cased for backward<br>compatibility and still return 1-D arrays as before. If you need to<br>preserve the matrix subtype, use the methods instead of the functions.<br><br>*rollaxis* and *swapaxes* always return a view<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Previously, a view was returned except when no change was made in the order<br>of the axes, in which case the input array was returned.  A view is now<br>returned in all cases.<br><br>*nonzero* now returns base ndarrays<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Previously, an inconsistency existed between 1-D inputs (returning a<br>base ndarray) and higher dimensional ones (which preserved subclasses).<br>Behavior has been unified, and the return will now be a base ndarray.<br>Subclasses can still override this behavior by providing their own<br>*nonzero* method.<br><br>C API<br>~~~~~<br>The changes to *swapaxes* also apply to the *PyArray_SwapAxes* C function,<br>which now returns a view in all cases.<br><br>The changes to *nonzero* also apply to the *PyArray_Nonzero* C function,<br>which now returns a base ndarray in all cases.<br><br>The dtype structure (PyArray_Descr) has a new member at the end to cache<br>its hash value.  This shouldn't affect any well-written applications.<br><br>The change to the concatenation function DeprecationWarning also affects<br>PyArray_ConcatenateArrays,<br><br>recarray field return types<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Previously the returned types for recarray fields accessed by attribute and by<br>index were inconsistent, and fields of string type were returned as chararrays.<br>Now, fields accessed by either attribute or indexing will return an ndarray for<br>fields of non-structured type, and a recarray for fields of structured type.<br>Notably, this affect recarrays containing strings with whitespace, as trailing<br>whitespace is trimmed from chararrays but kept in ndarrays of string type.<br>Also, the dtype.type of nested structured fields is now inherited.<br><br>recarray views<br>~~~~~~~~~~~~~~<br>Viewing an ndarray as a recarray now automatically converts the dtype to<br>np.record. See new record array documentation. Additionally, viewing a recarray<br>with a non-structured dtype no longer converts the result's type to ndarray -<br>the result will remain a recarray.<br><br>'out' keyword argument of ufuncs now accepts tuples of arrays<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>When using the 'out' keyword argument of a ufunc, a tuple of arrays, one per<br>ufunc output, can be provided. For ufuncs with a single output a single array<br>is also a valid 'out' keyword argument. Previously a single array could be<br>provided in the 'out' keyword argument, and it would be used as the first<br>output for ufuncs with multiple outputs, is deprecated, and will result in a<br>`DeprecationWarning` now and an error in the future.<br><br>byte-array indices now raises an IndexError<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Indexing an ndarray using a byte-string in Python 3 now raises an IndexError<br>instead of a ValueError.<br><br>Masked arrays containing objects with arrays<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>For such (rare) masked arrays, getting a single masked item no longer returns a<br>corrupted masked array, but a fully masked version of the item.<br><br>Median warns and returns nan when invalid values are encountered<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Similar to mean, median and percentile now emits a Runtime warning and<br>returns `NaN` in slices where a `NaN` is present.<br>To compute the median or percentile while ignoring invalid values use the<br>new `nanmedian` or `nanpercentile` functions.<br><br>Functions available from numpy.ma.testutils have changed<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>All functions from numpy.testing were once available from<br>numpy.ma.testutils but not all of them were redefined to work with masked<br>arrays. Most of those functions have now been removed from<br>numpy.ma.testutils with a small subset retained in order to preserve<br>backward compatibility. In the long run this should help avoid mistaken use<br>of the wrong functions, but it may cause import problems for some.<br><br><br>New Features<br>============<br><br>Reading extra flags from site.cfg<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Previously customization of compilation of dependency libraries and numpy<br>itself was only accomblishable via code changes in the distutils package.<br>Now numpy.distutils reads in the following extra flags from each group of the<br>*site.cfg*:<br><br>* ``runtime_library_dirs/rpath``, sets runtime library directories to override<br>    ``LD_LIBRARY_PATH``<br>* ``extra_compile_args``, add extra flags to the compilation of sources<br>* ``extra_link_args``, add extra flags when linking libraries<br><br>This should, at least partially, complete user customization.<br><br>*np.cbrt* to compute cube root for real floats<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>*np.cbrt* wraps the C99 cube root function *cbrt*.<br>Compared to *np.power(x, 1./3.)* it is well defined for negative real floats<br>and a bit faster.<br><br>numpy.distutils now allows parallel compilation<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>By passing *--parallel=n* or *-j n* to *setup.py build* the compilation of<br>extensions is now performed in *n* parallel processes.<br>The parallelization is limited to files within one extension so projects using<br>Cython will not profit because it builds extensions from single files.<br><br>*genfromtxt* has a new ``max_rows`` argument<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>A ``max_rows`` argument has been added to *genfromtxt* to limit the<br>number of rows read in a single call. Using this functionality, it is<br>possible to read in multiple arrays stored in a single file by making<br>repeated calls to the function.<br><br>New function *np.broadcast_to* for invoking array broadcasting<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>*np.broadcast_to* manually broadcasts an array to a given shape according to<br>numpy's broadcasting rules. The functionality is similar to broadcast_arrays,<br>which in fact has been rewritten to use broadcast_to internally, but only a<br>single array is necessary.<br><br>New context manager *clear_and_catch_warnings* for testing warnings<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>When Python emits a warning, it records that this warning has been emitted in<br>the module that caused the warning, in a module attribute<br>``__warningregistry__``.  Once this has happened, it is not possible to emit<br>the warning again, unless you clear the relevant entry in<br>``__warningregistry__``.  This makes is hard and fragile to test warnings,<br>because if your test comes after another that has already caused the warning,<br>you will not be able to emit the warning or test it. The context manager<br>``clear_and_catch_warnings`` clears warnings from the module registry on entry<br>and resets them on exit, meaning that warnings can be re-raised.<br><br>*cov* has new ``fweights`` and ``aweights`` arguments<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>The ``fweights`` and ``aweights`` arguments add new functionality to<br>covariance calculations by applying two types of weighting to observation<br>vectors. An array of ``fweights`` indicates the number of repeats of each<br>observation vector, and an array of ``aweights`` provides their relative<br>importance or probability.<br><br>Support for the '@' operator in Python 3.5+<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Python 3.5 adds support for a matrix multiplication operator '@' proposed<br>in PEP465. Preliminary support for that has been implemented, and an<br>equivalent function ``matmul`` has also been added for testing purposes and<br>use in earlier Python versions. The function is preliminary and the order<br>and number of its optional arguments can be expected to change.<br><br>New argument ``norm`` to fft functions<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>The default normalization has the direct transforms unscaled and the inverse<br>transforms are scaled by :math:`1/n`. It is possible to obtain unitary<br>transforms by setting the keyword argument ``norm`` to ``"ortho"`` (default is<br>`None`) so that both direct and inverse transforms will be scaled by<br>:math:`1/\\sqrt{n}`.<br><br><br>Improvements<br>============<br><br>*np.digitize* using binary search<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>*np.digitize* is now implemented in terms of *np.searchsorted*. This means<br>that a binary search is used to bin the values, which scales much better<br>for larger number of bins than the previous linear search. It also removes<br>the requirement for the input array to be 1-dimensional.<br><br>*np.poly* now casts integer inputs to float<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>*np.poly* will now cast 1-dimensional input arrays of integer type to double<br>precision floating point, to prevent integer overflow when computing the monic<br>polynomial. It is still possible to obtain higher precision results by<br>passing in an array of object type, filled e.g. with Python ints.<br><br>*np.interp* can now be used with periodic functions<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>*np.interp* now has a new parameter *period* that supplies the period of the<br>input data *xp*. In such case, the input data is properly normalized to the<br>given period and one end point is added to each extremity of *xp* in order to<br>close the previous and the next period cycles, resulting in the correct<br>interpolation behavior.<br><br>*np.pad* supports more input types for ``pad_width`` and ``constant_values``<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>``constant_values`` parameters now accepts NumPy arrays and float values.<br>NumPy arrays are supported as input for ``pad_width``, and an exception is<br>raised if its values are not of integral type.<br><br>*np.argmax* and *np.argmin* now support an ``out`` argument<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>The ``out`` parameter was added to *np.argmax* and *np.argmin* for consistency<br>with *ndarray.argmax* and *ndarray.argmin*. The new parameter behaves exactly<br>as it does in those methods.<br><br>More system C99 complex functions detected and used<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>All of the functions ``in complex.h`` are now detected. There are new<br>fallback implementations of the following functions.<br><br>* npy_ctan,<br>* npy_cacos, npy_casin, npy_catan<br>* npy_ccosh, npy_csinh, npy_ctanh,<br>* npy_cacosh, npy_casinh, npy_catanh<br><br>As a result of these improvements, there will be some small changes in<br>returned values, especially for corner cases.<br><br>*np.loadtxt* support for the strings produced by the ``float.hex`` method<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>The strings produced by ``float.hex`` look like ``0x1.921fb54442d18p+1``,<br>so this is not the hex used to represent unsigned integer types.<br><br>*np.isclose* properly handles minimal values of integer dtypes<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>In order to properly handle minimal values of integer types, *np.isclose* will<br>now cast to the float dtype during comparisons. This aligns its behavior with<br>what was provided by *np.allclose*.<br><br>*np.allclose* uses *np.isclose* internally.<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>*np.allclose* now uses *np.isclose* internally and inherits the ability to<br>compare NaNs as equal by setting ``equal_nan=True``. Subclasses, such as<br>*np.ma.MaskedArray*, are also preserved now.<br><br>*np.genfromtxt* now handles large integers correctly<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>*np.genfromtxt* now correctly handles integers larger than ``2**31-1`` on<br>32-bit systems and larger than ``2**63-1`` on 64-bit systems (it previously<br>crashed with an ``OverflowError`` in these cases). Integers larger than<br>``2**63-1`` are converted to floating-point values.<br><br>*np.load*, *np.save* have pickle backward compatibility flags<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br><br>The functions *np.load* and *np.save* have additional keyword<br>arguments for controlling backward compatibility of pickled Python<br>objects. This enables Numpy on Python 3 to load npy files containing<br>object arrays that were generated on Python 2.<br><br>MaskedArray support for more complicated base classes<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Built-in assumptions that the baseclass behaved like a plain array are being<br>removed. In particular, setting and getting elements and ranges will respect<br>baseclass overrides of ``__setitem__`` and ``__getitem__``, and arithmetic<br>will respect overrides of ``__add__``, ``__sub__``, etc.<br><br>Changes<br>=======<br><br>dotblas functionality moved to multiarray<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>The cblas versions of dot, inner, and vdot have been integrated into<br>the multiarray module. In particular, vdot is now a multiarray function,<br>which it was not before.<br><br>stricter check of gufunc signature compliance<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Inputs to generalized universal functions are now more strictly checked<br>against the function's signature: all core dimensions are now required to<br>be present in input arrays; core dimensions with the same label must have<br>the exact same size; and output core dimension's must be specified, either<br>by a same label input core dimension or by a passed-in output array.<br><br>views returned from *np.einsum* are writeable<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Views returned by *np.einsum* will now be writeable whenever the input<br>array is writeable.<br><br>*np.argmin* skips NaT values<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br><br>*np.argmin* now skips NaT values in datetime64 and timedelta64 arrays,<br>making it consistent with *np.min*, *np.argmax* and *np.max*.<br><br><br>Deprecations<br>============<br><br>Array comparisons involving strings or structured dtypes<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br><br>Normally, comparison operations on arrays perform elementwise<br>comparisons and return arrays of booleans. But in some corner cases,<br>especially involving strings are structured dtypes, NumPy has<br>historically returned a scalar instead. For example::<br><br>  ### Current behaviour<br><br>  np.arange(2) == "foo"<br>  # -> False<br><br>  np.arange(2) < "foo"<br>  # -> True on Python 2, error on Python 3<br><br>  np.ones(2, dtype="i4,i4") == np.ones(2, dtype="i4,i4,i4")<br>  # -> False<br><br>Continuing work started in 1.9, in 1.10 these comparisons will now<br>raise ``FutureWarning`` or ``DeprecationWarning``, and in the future<br>they will be modified to behave more consistently with other<br>comparison operations, e.g.::<br><br>  ### Future behaviour<br><br>  np.arange(2) == "foo"<br>  # -> array([False, False])<br><br>  np.arange(2) < "foo"<br>  # -> error, strings and numbers are not orderable<br><br>  np.ones(2, dtype="i4,i4") == np.ones(2, dtype="i4,i4,i4")<br>  # -> [False, False]<br><br>SafeEval<br>~~~~~~~~<br>The SafeEval class in numpy/lib/utils.py is deprecated and will be removed<br>in the next release.<br><br>alterdot, restoredot<br>~~~~~~~~~~~~~~~~~~~~<br>The alterdot and restoredot functions no longer do anything, and are<br>deprecated.<br><br>pkgload, PackageLoader<br>~~~~~~~~~~~~~~~~~~~~~~<br>These ways of loading packages are now deprecated.<br><br>bias, ddof arguments to corrcoef<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br><br>The values for the ``bias`` and ``ddof`` arguments to the ``corrcoef``<br>function canceled in the division implied by the correlation coefficient and<br>so had no effect on the returned values.<br><br>We now deprecate these arguments to ``corrcoef`` and the masked array version<br>``ma.corrcoef``.<br><br>Because we are deprecating the ``bias`` argument to ``ma.corrcoef``, we also<br>deprecate the use of the ``allow_masked`` argument as a positional argument,<br>as its position will change with the removal of ``bias``.  ``allow_masked``<br>will in due course become a keyword-only argument.<br><br>dtype string representation changes<br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Since 1.6, creating a dtype object from its string representation, e.g.<br>``'f4'``, would issue a deprecation warning if the size did not correspond<br>to an existing type, and default to creating a dtype of the default size<br>for the type. Starting with this release, this will now raise a ``TypeError``.<br><br>The only exception is object dtypes, where both ``'O4'`` and ``'O8'`` will<br>still issue a deprecation warning. This platform-dependent representation<br>will raise an error in the next release.<br><br>In preparation for this upcoming change, the string representation of an<br>object dtype, i.e. ``np.dtype(object).str``, no longer includes the item<br>size, i.e. will return ``'|O'`` instead of ``'|O4'`` or ``'|O8'`` as<br>before.</span><br><br><br>Authors<br>=======<br><br>This release contains work by the following people who contributed at least<br>one patch to this release. The names are in alphabetical order by first name.<br>Names followed by a "+" contributed a patch for the first time.<br><br>Abdul Muneer+<br>Adam Williams+<br>Alan Briolat+<br>Alex Griffing<br>Alex Willmer+<br>Alexander Belopolsky<br>Alistair Muldal+<br>Allan Haldane+<br>Amir Sarabadani+<br>Andrea Bedini+<br>Andrew Dawson+<br>Andrew Nelson+<br>Antoine Pitrou+<br>Anton Ovchinnikov+<br>Antony Lee+<br>Behzad Nouri+<br>Bertrand+<br>Blake Griffith<br>Bob Poekert+<br>Brian Kearns+<br>CJ Carey<br>Carl Kleffner+<br>Chander G+<br>Charles Harris<br>Chris Hogan+<br>Chris Kerr<br>Chris Lamb+<br>Chris Laumann+<br>Christian Brodbeck+<br>Christian Brueffer<br>Christoph Gohlke<br>Cimarron Mittelsteadt<br>Daniel da Silva<br>Darsh P. Ranjan+<br>David Cournapeau<br>David M Fobes+<br>David Powell+<br>Didrik Pinte+<br>Dimas Abreu Dutra<br>Dmitry Zagorny+<br>Eric Firing<br>Eric Hunsberger+<br>Eric Martin+<br>Eric Moore<br>Eric O. LEBIGOT (EOL)+<br>Erik M. Bray<br>Ernest N. Mamikonyan+<br>Fei Liu+<br>François Magimel+<br>Gabor Kovacs+<br>Gabriel-p+<br>Garrett-R+<br>George Castillo+<br>Gerrit Holl+<br>Gert-Ludwig Ingold+<br>Glen Mabey+<br>Graham Christensen+<br>Greg Thomsen+<br>Gregory R. Lee+<br>Helder Cesar+<br>Helder Oliveira+<br>Henning Dickten+<br>Ian Henriksen+<br>Jaime Fernandez<br>James Camel+<br>James Salter+<br>Jan Schlüter+<br>Jarl Haggerty+<br>Jay Bourque<br>Joel Nothman+<br>John Kirkham+<br>John Tyree+<br>Joris Van den Bossche+<br>Joseph Martinot-Lagarde<br>Josh Warner (Mac)<br>Juan Luis Cano Rodríguez<br>Julian Taylor<br>Kreiswolke+<br>Lars Buitinck<br>Leonardo Donelli+<br>Lev Abalkin<br>Lev Levitsky+<br>Malik Woods+<br>Maniteja Nandana+<br>Marshall Farrier+<br>Marten van Kerkwijk<br>Martin Spacek<br>Martin Thoma+<br>Masud Rahman+<br>Matt Newville+<br>Mattheus Ueckermann+<br>Matthew Brett<br>Matthew Craig+<br>Michael Currie+<br>Michael Droettboom<br>Michele Vallisneri+<br>Mortada Mehyar+<br>Nate Jensen+<br>Nathaniel J. Smith<br>Nick Papior Andersen+<br>Nick Papior+<br>Nils Werner<br>Oliver Eberle+<br>Patrick Peglar+<br>Paul Jacobson<br>Pauli Virtanen<br>Peter Iannucci+<br>Ralf Gommers<br>Richard Barnes+<br>Ritta Narita+<br>Robert Johansson+<br>Robert LU+<br>Robert McGibbon+<br>Ryan Blakemore+<br>Ryan Nelson+<br>Sandro Tosi<br>Saullo Giovani+<br>Sebastian Berg<br>Sebastien Gouezel+<br>Simon Gibbons+<br>Simon Guillot+<br>Stefan Eng+<br>Stefan Otte+<br>Stefan van der Walt<br>Stephan Hoyer+<br>Stuart Berg+<br>Sturla Molden+<br>Thomas A Caswell+<br>Thomas Robitaille<br>Tim D. Smith+<br>Tom Krauss+<br>Tom Poole+<br>Toon Verstraelen+<br>Ulrich Seidl<br>Valentin Haenel<br>Vraj Mohan+<br>Warren Weckesser<br>Wendell Smith+<br>Yaroslav Halchenko<br>Yotam Doron<br>Yousef Hamza+<br>Yuval Langer+<br>Yuxiang Wang+<br>Zbigniew Jędrzejewski-Szmek+<br>cel+<br>chebee7i+<br>empeeu+<br>endolith<br>hannaro+<br>immerrr<br>jmrosen155+<br>jnothman<br>kanhua+<br>mbyt+<br>mlai+<br>styr+<br>tdihp+<br>wim glenn+<br>yolanda15+<br>Åsmund Hjulstad+<br><br><br></div>Enjjoy,<br><br></div>Chuck<br></div>