Change Log
==========

1.1.0: 2022/10/27
-----------------

This is the last version of `silx` supporting Python 3.6 and `PySide2`.
Next version will require Python >= 3.7

This is the first version of `silx` supporting `PyQt6` (for `Qt6`).
Please note that `PyQt6` >= v6.3.0 is required.

* `silx view`:

  * Improved wildcard support in filename and data path (PR #3663)
  * Enabled plot grid by default for curve plots (PR #3667)
  * Fixed refresh for content opened as `file.h5::/path` (PR #3665)

* `silx.gui`:

  * Added support of `PyQt6` >= 6.3.0 (PR #3655)
  * Fixed `matplotlib`>=3.6.0 and `PySide6` support (PR #3639)
  * Fixed `PySide6` >=6.2.2 support (PR #3581)
  * Fixed Python 3.10 with `PyQt5` support (PR #3591)
  * Fixed crashes on exit when deriving `QApplication` (PR #3588)
  * Deprecated `PySide2` support (PR #3648)
  * Fixed: raise exception early when using a version of `PyQt5` incompatible with Python 3.10 (PR #3694)

  * `silx.gui.data`:

    * Updated: Do not keep aspect ratio in `NXdata` image views when axes `@units` are different (PR #3660)
    * `silx.gui.data.ArrayTableWidget`: Updated to edit without clearing previous data (PR #3686)
    * `silx.gui.data.DataViewer`: Added `selectionChanged` signal (PR #3646)
    * `silx.gui.data.Hdf5TableView`: Fixed for virtual datasets in the same file (PR #3572)

  * `silx.gui.dialog.ColormapDialog`: Updated layout and presentation of the features (PR #3671, #3609)

  * `silx.gui.hdf5`: Fixed issue with unsupported hdf5 entity (e.g. datatype) (PR #3643)

  * `silx.gui.plot`:

    * `silx.gui.plot.items`:

      * Added `BandROI` item (PR #3680, #3702, #3707)
      * Updated to take errorbars into account for item bounds (PR #3647)
      * Fixed `ArcROI` display (PR #3617)
      * Fixed error logs for scatter triangle visualisation with aligned points (PR #3644)

    * `silx.gui.plot.MaskToolsWidget`: Changed mask load/save default directory (PR #3704)

    * `silx.gui.plot.PlotWidget`:

      * Fixed time axis with values outside of supported range ]0, 10000[ years (PR 3597)
      * Fixed matplotlib backend replot failure under specific conditions (PR #3590)

      * `silx.gui.PlotWidget`'s OpenGL backend:

        * Added support of LaTex-like math syntax to text display (PR #3600)
        * Updated text label background to be less transparent (PR #3593)
        * Fixed dashed curve rendering (PR #3596)
        * Fixed image rendering of arcsinh colormap for uint8 and uint16 data (PR #3604)
        * Fixed rendering on some GPU (PR #3695)
        * Fixed empty text support (PR #3701)
	* Fixed: Avoid rendering when OpenGL version/extension check fails (PR #3707)

    * `silx.gui.plot.PlotWindow`: Fixed management of DockWidgets when showing/hiding the `PlotWindow` (PR #3631)
    * `silx.gui.plot.PositionInfo`: Improved picking (PR #3640)
    * `silx.gui.plot.StackView`: Updated toolbar implementation (PR #3697)

    * `silx.gui.plot.stats`: Fixed warnings when all data is outside the selected stats region (PR #3659)
    * `silx.gui.plot.tools`:

      * Added snapping to profile curve (PR #3640)
      * Fixed handling of `disconnect` exception (PR #3692)
      * Fixed label formatting for 2D profile tool (PR #3698)
      * Fixed computation of the slice profile (PR #3708)

  * `silx.gui.utils.glutils.isOpenGLAvailable`: Added possibility to check `AA_ShareOpenGLContexts` (PR #3688)
  * `silx.gui.widgets.ElidedLabel`: Fixed API inherited from `QLabel` (PR #3650, #3707)

* `silx.io`:

  * `silx.io.dictdump`:

    * Added "info" logs when an entity is not copied to the output HDF5 file `dicttoh5` (PR #3664)
    * Added support of `pint` in `dicttoh5` and `dicttonx` (PR #3683)

  * `silx.io.nxdata`:

    * Updated `get_default` to be more permissive and follow `@default` recursively (PR #3662)
    * Updated error dataset retrieval (PR #3657, #3672)

  * `silx.io.specfile`:

    * Fixed buffer overflow for too long motor or label (PR #3622)
    * Fixed missing data if there is a trailing space in the mca array (PR #3612)

  * `silx.io.utils.retry`: Added retry for generator functions (PR #3679)

* `silx.math`:

  * `silx.math.histogram`:

    * Added support of `uint16` weights for LUT histogram (PR #3670)
    * Fixed `Histogramnd` computation on arrays with more than 2**31-1 samples (PR #3599)

  * `silx.math.fft`:

    * Added `export_wisdom()` and `import_wisdom()` (PR #3623)
    * Fixed normalization modes, notably account for regression in `pyfftw` normalization (PR #3625)
    * Fixed avoid creating OpenCL/Cuda contexts when not needed (PR #3587)

  * `silx.math.fit`: Updated documentation (PR #3582)

* `silx.opencl`: Updated OpenCL profiling, fixed memory leak (PR #3690)

* `silx.utils.ExternalResources`: Stored downloaded data checksum (PR #3580)

* Miscellaneous:

  * Added `SILX_INSTALL_REQUIRES_STRIP` build configuration environment variable (PR #3602)
  * Added optional use of `sphinx_autodoc_typehints` to generate the documentation (PR #3668)
  * Updated build and development tools to remove dependency to `distutils` and `numpy.distutils` (PR #3583, #3585, #3613, #3649, #3651, #3653, #3658, #3661, #3678)
  * Updated Windows installer (PR #3642)
  * Updated documentation (PR #3699, #3709)
  * Updated after 1.0.0 release (PR #3560, #3569)
  * Fixed tests and continuous integration (PR #3632, #3637, #3639, #3685)
  * Fixed Debian/Ubuntu packaging (PR #3693)
  * Cleaned-up Python 2 compatibility code (PR #3673)

1.0.0: 2021/12/06
-----------------

This is the first version of `silx` supporting `PySide6` (for `Qt6`) and using `pytest` to run the tests.

* `silx view`:

  * Added Windows installer generation (PR #3548)
  * Updated 'About' dialog (#3547, #3475)
  * Fixed: Keep curve legend selection with changing dimensions (PR #3529)
  * Fixed: Increase max number of opened file at start-up (PR #3545)

* `silx.gui`:

  * Added PySide6 support (PR #3486, #3528, #3479, #3542, #3549, #3478, #3481):
  * Removed support of PyQt4 / Pyside (PR #3423, #3424, #3480, #3482)
  * `silx.gui.colors`:

    * Fixed duplicated logs when colormap vmin/vmax are not valid (PR #3471)

  * `silx.gui.plot`:

    * `silx.gui.plot.actions`:

      * `silx.gui.plot.actions.fit`:

        * Updated behaviour of fitted item auto update (PR #3532)

      * `silx.gui.plot.actions.histogram`:

        * Enhanced: Allow user to change histogram nbins and range (PR #3514, #3514)
        * Updated `PixelIntensitiesHistoAction` to use `PlotWidget.selection` (PR #3408)
        * Fixed issue when the whole image is masked (PR #3544)
        * Fixed error on macOS 11 with 3D display in `silx view` (PR #3544)

      * `silx.gui.plot.CompareImages`:

        * Fixed `colormap`: avoid forcing vmin and vmax when not in 'HORIZONTAL_LINE' or 'VERTICAL_LINE' mode (PR #3510)
		
      * `silx.gui.plot.items`:
		
        * Added 'image_aggregated.ImageDataAggregated': item allowing to aggregate image data before display (PR #3503)
        * Fixed `ArcROI.setGeometry` (fix #3492)

      * `silx.gui.plot.ImageStack`:

        * Enhanced management of the `animation thread` (PR #3440, PR #3441)

      * `silx.gui.plot.ImageView`:

        * Added action to show/hide the side histogram (PR #3488)
        * Added 'resetzoom' parameter to 'ImageView.setImage' (PR #3488)
        * Added empty array support to 'ImageView.setImage' (PR #3530)
        * Added aggregation mode action (PR #3536)
        * Added support of RGB and RGBA images (PR #3487)
        * Updated 'imageview' example with a '--live' option (PR #3488)
        * Fixed profile window, added `setProfileWindowBehavior` method (PR #3457)
        * Fixed issue with profile window size (PR #3455)

      * `silx.gui.plot.PlotWidget`:

        * Fixed update of `Scatter` item binned statistics visualization (PR #3452)
        * Fixed OpenGL backend memory leak (PR #3453)
        * Enhanced: Optimized scatter when rendered as regular grid with the OpenGL backend (PR #3447)
        * Enhanced axis limits management by the OpenGL backend (PR #3504)
        * Enhanced control of repaint (PR #3449)
	* Enhanced text label background rendering with OpenGL backend (PR #3565)

      * `silx.gui.plot.PlotWindow`:

        * Fixed returned action from 'getKeepDataAspectRatioAction' (PR #3500)

    * `silx.gui.plot3d`:

      * Fixed picking on highdpi screen (PR #3550)
      * Fixed issue in parameter tree (PR #3550)

* `silx.io`:

  * Added read support for FIO files (PR #3539) thanks to tifuchs contribution
  * `silx.io.dictdump`:

    * Fixed missing conversion of the key (PR #3505) thanks to rnwatanabe contribution
    * Extract update modes list to a constant global variable (PR #3460) thanks to jpcbertoldo
	
  * `silx.io.convert`:
	
    * Enhanced `write_to_h5`: `infile` parameter can now also be a HDF5 file as input (PR #3511)
	
  * `silx.io.h5py_utils`:

    * Added support of `locking` argument from the h5py.File when possible (PR #3554)
    * Added log a critical message for unsupported versions of libhdf5 (PR #3533)

  * `silx.io.spech5`:
	
    * Enhanced: Improve robustness (PR #3507, #3463)
	
  * `silx.io.url`:

    * Fixed `is_absolute` in the case the `file_path()` returns None (PR #3437)

  * `silx.io.utils`:

    * Added 'silx.io.utils.visitall': provides a visitor of all items including links that works for both `commonh5` and `h5py` (PR #3511)

* `silx.math`:

  * `silx.math.colormap`:

    * Added `apply_colormap` function (PR #3525)
    * Enhanced `cmap` error messages (PR #3522)

* `silx.opencl`:

  * Added description of compute capabilities for Ampere generation GPU from Nvidia (PR #3535)
  * Added doubleword OpenCL library (PR #3466, PR #3472)

* Miscellaneous:

  * Enhanced: Setup the project to use `pytest` (PR #3431, #3516, #3526)
  * Enhanced: Minor test clean up (PR #3515, #3508)
  * Updated project structure: move `silx` sources in `src/silx` (PR #3412)
  * Fixed 'run_test.py --qt-binding' option (PR #3527)
  * Fixed support of numpy 1.21rc1 (PR ##3476)
  * Removed `six` dependency (PR #3483)


0.15.2: 2021/06/21
------------------

Minor release:

* `silx.io`:

  * `silx.io.spech5`: Enhanced robustness for missing positioner values (PR #3477)
  * `silx.io.url`: Fixed `DataUrl.is_absolute` (PR #3467)

* `silx.gui`:

  * Fixed naming of some loggers (PR #3477)
  * Fixed assert on `ImageStack` when length of urls > 0 (PR #3491)
  * `silx.gui.plot`: Fixed `ArcROI.setGeometry` (PR #3493)

* `silx.opencl`: Expose the double-word library and include it in tests (PR #3466)
* Misc: Fixed support of `numpy` 1.21rc1 (PR #3477)

0.15.1: 2021/05/17
------------------

Minor release:

* silx.gui.plot.PlotWidget: Fixed `PlotWidget` OpenGL backend memory leak (PR #3448)
* silx.gui.plot.ImageView:

  * Fixed profile window default behavior (PR #3458)
  * Added `setProfileWindowBehavior` method (PR #3458)

0.15.0: 2021/03/18
------------------

Main new features are the `silx.io.h5py_utils` module which provides `h5py` concurrency helpers and image mask support by `silx.gui.plot.PlotWidget`'s tools.

* `silx view`:

  * Fixed zoom reseting when scrolling a NXdata 3D stack (PR #3351)
  * Fixed support of very large 1D datasets in "Raw" table view (PR #3418)

* `silx.io`:

  * Added `h5py_utils` helper module for concurrent HDF5 reading and writing without SWMR (PR #3368, #3426)
  * Enhanced `dictdump` module functions regarding overwriting existing files (PR #3376)

* `silx.gui`:

  * Added scale to visible or selected area buttons options to `silx.gui.dialog.ColormapDialog` (PR #3365)
  * Fixed and enhanced`silx.gui.utils.glutils.isOpenGLAvailable` (PR #3356, #3385)
  * Fixed `silx.gui.widgets.FlowLayout` (PR #3389)
  * Enhanced `silx.gui.data.ArrayTableWidget`: Added support of array clipping if data is too large (PR #3419)

  * `silx.gui.plot`:

    * Added mask support to Image items and use it in plot tools (histogram, profile, colormap) (PR #3369, #3381)
    * Added `ImageStack` methods to configure automatic reset zoom (PR #3373)
    * Added some statistic indicators in `PixelIntensitiesHistoAction` action (PR #3391)
    * Enhanced `silx.gui.plot.ImageView` integration of ROI profiles in side plots (PR #3380)
    * Enhanced `PositionInfo`: snapping to histogram (PR #3405) and information labels layout (PR #3399)
    * Fixed `LegendSelector` blinking when updated (PR #3346)
    * Fixed profile tool issue when closing profile window after attaced PlotWidget (PR #3375)
    * Fixed histogram action (PR #3396)
    * Fixed support of histogram plot items in `stats` module (PR #3398, #3407)
    * Fixed `ColorBar` when deleting attached PlotWidget (PR #3403)

    * `silx.gui.plot.PlotWidget`:

      * Added `getValueData` method to image items (PR #3378)
      * Added `discardItem` method (PR #3400)
      * Added unified `selection()` handler compatible with active item management (PR #3401)
      * Fixed `addCurve` documentation (PR #3371)
      * Fixed complex image first displayed mode (PR #3364)
      * Fixed curve and scatter items support of complex data input (PR #3384)
      * Fixed histogram picking (PR #3405)
      * Fixed rendering (PR #3416)

  * `silx.gui.plot3d`:

    * Added `HeightMapData` and `HeightMapRGBA` items (PR #3386, #3397)
    * Fixed support for RGB colored points in internal scene graph (PR #3374)
    * Fixed `ImageRgba` alpha channel display (PR #3414)

* `silx.image`:

  * Added mask support to `bilinear` interpolator (PR #3286)

* `silx.opencl`:

  * Added print statics of OpenCL kernel execution time (PR #3395)

* Miscellaneous:

  * Removed debian 9 packaging (PR #3383)
  * Enhanced test functions: `silx.test.run_tests` (PR #3331), `silx.utils.testutils.TestLogging` (PR #3393)
  * Continuous integration: Added github actions and removed travis-ci (PR #3353, #3359), fixed (PR #3361, #3366)
  * Updated documentation (PR #3383, #3387, #3409, #3416, #3427)
  * Fixed debian packaging (PR #3362)
  * Fixed `silx test` application on Windows (PR #3411)

0.14.1: 2021/04/30
------------------

This is a bug-fix version of silx.

* silx.gui.plot: Fixed `PlotWidget` OpenGL backend memory leak (PR #3445)
* silx.gui.utils.glutils: Fixed `isOpenGLAvailable` (PR #3356)

0.14.0: 2020/12/11
------------------

This is the first version of `silx` supporting `h5py` >= v3.0.

This is the last version of `silx` officially supporting Python 3.5.

* `silx.gui`:

  * Added support for HDF5 external data (virtual and raw) (PR #3222)
  * Added lazy update handling of OpenGL textures (PR #3205)
  * Deprecated `silx.gui.plot.matplotlib` module (use `silx.gui.utils.matplotlib` instead) (PR #3158)
  * Improved memory allocation by using already defined `fontMetrics` instread of creating a new one (PR #3239)
  * Make `TextFormatter` compatible with `h5py`>=3 (PR #3253)
  * Fixed `matplotlib` 3.3.0rc1 deprecation warnings (PR #3145)

  * `silx.gui.colors.Colormap`:

    * Added `Colormap.get|setNaNColor` to change color used for NaN, fix different NaN displays for matplotlib/openGL backends (PR #3143)
    * Refactored PlotWidget OpenGL backend to enable extensions (PR #3147)
    * Fixed use of `QThreadPool.tryTake` to be Qt5.7 compliant (PR #3250)

  * `silx.gui.plot`:

    * Added the feature to compute statistics inside a specific region of interest (PR #3056)
    * Added an action to switch on/off OpenGL rendering on a plot (PR #3261)
    * Added test for ROI interaction mode (PR #3283)
    * Added saving of error bars when saving a plot (PR #3199)
    * Added `ImageStack.clear` (PR #3167)
    * Improved image profile tool to support `PlotWidget` item extension (PR #3150)
    * Improved `Stackview`: replaced `setColormap` `autoscale` argument by `scaleColormapRangeToStack` method (PR #3279)
    * Updated `3 stddev` autoscale algorithm, clamp it with the minmax data in order to improve the contrast (PR #3284)
    * Updated ROI module: splitted into 3 modules base/common/arc_roi (PR #3283)
    * Fixed `ColormapDialog` custom range input (PR #3153)
    * Fixed issue when changing ROI mode while a ROI is being created (PR #3186)
    * Fixed `RegionOfInterest` refresh when highlighted (PR #3197)
    * Fixed arc roi shape: make sure start and end points are part of the shape (PR #3257)
    * Fixed issue in `Colormap` `3 stdev` autoscale mode and avoided warnings (PR #3295)

    * Major improvements of `PlotWidget`:

      * Added `get|setAxesMargins` methods to control margin ratios around plot area (PR #3196)
      * Added `PlotWidget.[get|set]Backend` enabling switching backend (PR #3255)
      * Added multi interaction mode for ROIs (can be switched with a single click on an handle, or the context menu) (PR #3260)
      * Added polar interaction mode for arc ROI (PR #3260)
      * Added `PlotWidget.sigDefaultContextMenu` to allow to feed the default context menu (PR #3260)
      * Added context menu to the selected ROI to remove it (PR #3260)
      * Added pan interaction to ROI authoring (`select-draw`) interaction mode (PR #3291)
      * Added support of right axis label with OpenGL backend (PR #3293)
      * Added item visible bounds feature to PlotWidget items (PR #3223)
      * Added a `DataItem` base class for items having a "data extent" in the plot (PR #3212)
      * Added support for float16 texture in OpenGL backend (PR #3194)
      * Improved support of high-DPI screen in OpenGL backend (PR #3203)
      * Updated: Use points rather than pixels for marker size and line width with OpenGL backend (PR #3203)
      * Updated: Expose `PlotWidget` colors as Qt properties (PR #3269)
      * Fixed time serie axis for range < 2.5 microseconds (PR #3195)
      * Fixed initial size of OpenGL backend (PR #3209)
      * Fixed `PlotWidget` image items displayed below the grid by default (PR #3235)
      * Fixed OpenGL backend image display with sqrt colormap normalization (PR #3248)
      * Fixed support of shapes with multiple polygons in the OpenGL backend (PR #3259)
      * Fixes duplicated callback on ROIs (there was one for each ROI managed created on the plot) (PR #3260)
      * Fixed RegionOfInterest `contains` methods (PR #3336)

  * `silx.gui.colors.plot3d`:

    * Improved scene rendering (PR #3149)
    * Fixed handling of transparency of cut plane (PR #3204)

* `silx.image`:

  * Fixed slow `image.tomography.get_next_power()` (PR #3168)

* `silx.io`:

  * Added support for HDF5 link preservation in `dictdump` (PR #3224)
  * Added support for numpy arrays of `numbers` (PR #3251)
  * Make `h5todict` resilient to issues in the HDF5 file (PR #3162)

* `silx.math`:

  * Improved colormap performances for small datasets (PR #3282)

* `silx.opencl`:

  * Added textures availability check (PR #3273)
  * Added a warning when there is an issue in the Ocl destruction (PR #3280)
  * Fixed Sift test on modern GPU (PR #3262)

* Miscellaneous:

  * Added HDF5 strings: handle `h5py` 2.x and 3.x (PR #3240)
  * Fixed `cython` 3 compatibility and deprecation warning (PR #3164, #3189)


0.13.2: 2020/09/15
------------------

Minor release:

* silx view application: Prevent collapsing browsing panel, Added `-f` command line option (PR #3176)

* `silx.gui`:

  * `silx.gui.data`: Fixed `DataViews.titleForSelection` method (PR #3171).
  * `silx.gui.plot.items`: Added `DATA_BOUNDS` visualization parameter for `Scatter` item histogram bounds (PR #3180)
  * `silx.gui.plot.PlotWidget`: Fixed support of curves with infinite data (PR #3175)
  * `silx.gui.utils.glutils`: Fixed `isOpenGLAvailable` function (PR #3184)

* Documentation:

  * Update silx view command line options documentation (PR #3173)
  * Update version number and changelog (PR #3190)


0.13.1: 2020/07/22
------------------

Bug fix release:

* `silx.gui.plot.dialog`: Fixed `ColormapDialog` custom range input (PR #3155)
* Build: Fixed cython 3 compatibility (PR #3163).
* Documentation: Update version number and changelog (PR #3156)


0.13.0: 2020/06/23
------------------

This version drops the support of Python 2.7 and Python <= 3.4.

* silx view application:

  * Added support of compound data (PR #2948)
  * Added `Close All` menu (PR #2963)
  * Added default title to plots (PR #2979, #2999)
  * Added a button to enable/disable file content sorting (PR #3132)
  * Added support of a `SILX_style` HDF5 attribute to provide axes and colormap scale (PR #3092)
  * Improved `HDF5TableView` information table to make text selectable and ease copy (PR #2903)
  * Fixes (PR #2881, #2902, #3083)

* `silx.gui`:

  * `silx.gui.colors.Colormap`:

    * Added mean+/-3std autoscale mode (PR #2877, #2900)
    * Added sqrt, arcsinh and gamma correction colormap normalizations (PR #3010, #3054, #3057, #3066, #3070, #3133)
    * Limit number of threads used for computing the colormap (PR #3073)
    * Reordered colormaps (PR #3137)

  * `silx.gui.dialog.ColormapDialog`: Improved widget (PR #2874, #2915, #2924, #2954, #3136)
  * `silx.gui.plot`:

    * Major rework/extension of the regions of interest (ROI) (PR #3007, #3008, #3018, #3020, #3022, #3026, #3029, #3044, #3045, #3055, #3059, #3074, #3076, #3078, #3079, #3081, #3131)
    * Major rework/extension of the profile tools (PR #2933, #2980, #2988, #3004, #3011, #3037, #3048, #3058, #3084, #3088, #3095, #3097)
    * Added `silx.gui.plot.ImageStack` widget (PR #2480)
    * Added support of scatter in `PixelIntensitiesHistoAction` (PR #3089, #3107)
    * Added auto update of `FitAction` fitted data and range (PR #2960, #2961, #2969, #2981)
    * Improved mask tools (PR #2986)
    * Fixed `PlotWindow` (PR #2965) and `MaskToolsWidget` (PR #3125)

    * `silx.gui.plot.PlotWidget`:

      * Changed behaviour of `PlotWidget.addItem` and `PlotWidget.removeItem` to handle object items (previous behavior deprecated, not removed) and added `PlotWidget.addShape` method to add `Shape` items (PR #2873, #2904, #2919, #2925, #3120)
      * Added support of uint16 RGBA images (PR #2889)
      * Improved interaction (PR #2909, #3014, #3033)
      * Fixed `PlotWidget` (PR #2884, #2901, #2970, #3002)
      * Fixed and cleaned-up backends (PR #2887, #2910, #2913, #2957, #2964, #2984, #2991, #3023, #3064, #3135)

    * `silx.gui.plot.items`:

      * Added `sigDragStarted` and `sigDragFinished` signals to marker items and `sigEditingStarted` and `sigEditingFinished` signals to region of interest items (PR #2754)
      * Added `XAxisExtent` and `YAxisExtent` items in `silx.gui.plot.items` to control the plot data extent (PR #2932)
      * Added `ImageStack` item (PR #2994)
      * Added `Scatter` item histogram visualization mode (PR #2912, #2923)
      * Added `isDragged` method to marker items (PR #3000)
      * Improved performance of colormapped items by caching data min/max (PR #2876, #2886)
      * Improved `Scatter` item regular grid (PR #2918) and irregular grid (PR #3108) visualizations

  * `silx.gui.qt`:

    * Changed behavior of `QObject` multiple-inheritance (PR #3052)
    * Limit `silxGlobalThreadPool` function to use 4 threads maximum (PR #3072)

  * `silx.gui.utils.glutils`: Added `isOpenGLAvailable` to check the availability of OpenGL (PR #2878)
  * `silx.gui.widgets`:

    * Added `ElidedLabel` widget (PR #3110, #3111)
    * Fixed `LegendIconWidget` (PR #3112)

* `silx.io`:

  * Added support of signal dataset name-based errors to NXdata (PR #2976)
  * Added `dicttonx` function and support of HDF5 attibutes in `dicttoh5` function (PR #3013, #3017, #3031, #3093)
  * Fixed `url.DataUrl.path` (PR #2973)

* `silx.opencl`:

  * Fixed issue with Python 3.8 (PR #3036)
  * Disable textures for Nvidia Fermi GPUs for `convolution` (PR #3101)

* Miscellaneous:

  * Requires fabio >= 0.9 (PR #2937)
  * Fixed compatibility with h5py<v2.9 (PR #3024), cython 3 (PR #3034)
  * Avoid deprecation warnings (PR #3104) from Python 3.7 (PR #3012), Python 3.8 (PR #2891, #2934, #2989, #2993, #3127), h5py (PR #2854, #2893), matplotlib (PR #2890), fabio (PR #2930) and numpy (PR #3129)
  * Use `numpy.errstate` to ignore warnings rather than the `warnings` module (PR #2920)

* Build, documentation and tests:

  * Dropped Python2 support (PR #3119, #3140) and removed Python 2 tests and packaging (PR #2838, #2917)
  * Added debian 11/Ubuntu 20.04 packaging (PR #2875)
  * Improved test environment (PR #2870, #2949, #2995, #3009, #3061, #3086, #3087, #3122), documentation (PR #2872, #2894, #2937, #2987, #3042, #3053, #3068, #3091, #3103, #3115) and sample code (PR #2978, #3130, #3138)
  * Fixed Windows "fat binary" build (PR #2971)


0.12.0: 2020/01/09
------------------

Python 2.7 is no longer officially supported (even if tests pass and most of the library should work).

* silx view application:

  * Added: keep the same axes selection when changing dataset except for the stack view (PR #2701, #2780)
  * Added a Description column in the browsing tree to display NeXus title or name (PR #2804)
  * Added support of URL as filename (PR #2750)
  * Behavior changed: no longer lock HDF5 files by default, can be changed with `--hdf5-file-locking` option (PR #2861)

* `silx.gui`:

  * `silx.gui.plot`:

    * Added scatter plot regular and irregular grid visualization mode (PR #2810, #2815, #2820, #2824, #2831)
    * Added `baseline` argument to `PlotWidget` `addCurve` and `addHistogram` methods (PR #2715)
    * Added right axis support to `PlotWidget` marker items (PR #2744)
    * Added `BoundingRect` `PlotWidget` item (PR #2823)
    * Added more markers to `PlotWidget` items using symbols (PR #2792)
    * Improved and fixed `PlotWidget` and backends rendering and picking to guarantee rendering order of items (PR #2602, #2694, #2726, #2728, #2730, #2731, #2732, #2734, #2746, #2800, #2822, #2829, #2851, #2853)
    * Improved `RegionOfInterest`: Added `sigItemChanged` signal, renamed `get|setLabel` to `get|setName` (PR #2684, #2729, #2794, #2803, #2860)
    * Improved `StackView`: Allow to save dataset to HDF5 (PR #2813)

  * `silx.gui.plot3d`:

    * Added colormapped isosurface display to `ComplexField3D` (PR #2675)

  * Miscellaneous:

    * Added `cividis` colormap (PR #2763)
    * Added `silx.gui.widgets.ColormapNameComboBox` widget (PR #2814)
    * Added `silx.gui.widgets.LegendIconWidget` widget (PR #2783)
    * Added `silx.gui.utils.blockSignals` context manager (PR #2697, #2702)
    * Added `silx.gui.utils.qtutils.getQEventName` function (PR #2725)
    * Added `silx.gui.colors.asQColor` function (PR #2753)
    * Minor fixes (PR #2662, #2667, #2674, #2719, #2724, #2747, #2757, #2760, #2766, #2789, #2798, #2799, #2805, #2811, #2832, #2834, #2839, #2849, #2852, #2857, #2864, #2867)

* `silx.opencl`:

  * Added `silx.opencl.sparse.CSR` with support of different data types (PR #2671)
  * Improved support of different platforms like PoCL (PR #2669, #2698, #2806)
  * Moved non-OpenCL related utilities to `silx.opencl.utils` module (PR #2782)
  * Fixed `silx.opencl.sinofilter.SinoFilter` to avoid importing scikit-cuda (PR #2721)
  * Fixed kernel garbage collection (PR #2708)
  * Fixed `silx.opencl.convolution.Convolution` (PR #2781)

* `silx.math`/`silx.image`:

  * Added trilinear interpolator: `silx.math.interpolate.interp3d` (PR #2678)
  * Added `silx.image.utils.gaussian_kernel` function (PR #2782)
  * Improved `silx.image.shapes.Polygon` argument check (PR #2761)
  * Fixed and improved `silx.math.fft` with FFTW backend (PR #2751)
  * Fixed support of not finite data in fit manager (PR #2868)

* `silx.io`:

  * Added `asarray=True` argument to `silx.io.dictdump.h5todict` function (PR #2692, #2767)
  * Improved `silx.io.utils.DataUrl` (PR #2790)
  * Increased max number of motors in `specfile` (PR #2817)
  * Fixed data conversion when reading images with `fabio` (PR #2735)

* Build, documentation and tests:

  * Added `Cython` as a build dependency (PR #2795, #2807, #2808)
  * Added Debian 10 packaging (PR #2670, #2672, #2666, #2686, #2706)
  * Improved documentation (PR #2673, #2680, #2679, #2772, #2759, #2779, #2801, #2802, #2833, #2857, #2869)
  * Improved testing tools (PR #2704, #2796, #2818)
  * Improved `bootstrap.py` script (PR #2727, #2733)


0.11.0: 2019/07/03
------------------

 * Graphical user interface:

   * Plot:

     * Add sample code on how to update a plot3d widget from a thread
     * ScatterPlot: add the possibility to plot as a surface using Delaunay triangulation
     * ScatterView: add a tool button to change scatter visualization mode (ex. Solid)
     * (OpenGL backend) Fix memory leak when creating/deleting widgets in a loop


   * Plot3D:

     * Add an action to toggle plot3d's `PositionInfoWidget` picking.
     * Add a 3D complex field visualization: Complex3DField (also available from silx view)
     * Add a PositionInfoWidget and a tool button to toggle the picking mode to SceneWindow
     * Add the possibility to render the scene with linear fog.

   * `silx.gui.widgets`:

     * Fix ImageFileDialog selection for a cube with shape like `1,y,x`.

 * Miscellaneous:

    * Requires numpy version >= 1.12
    * HDF5 creator script
    * Support of Python 3.4 is dropped. Please upgrade to at least Python 3.5.
    * This is the last version to officially support Python 2.7.
    * The source code is Python 3.8 ready.
    * Improve PySide2 support. PyQt4 and PySide are deprecated.



0.10.0: 2019/02/19
------------------

 * Graphical user interface:

   * Plot:

    * Add support of foreground color
    * Fix plot background colors
    * Add tool to mask ellipse
    * StatsWidget:

     * Add support for plot3D widgets
     * Add a PyMca like widget

    * `Colormap`: Phase colormap is now editable
    * `ImageView`: Add ColorBarWidget
    * `PrintPreview`:

     * Add API to define 'comment' and 'title'
     * Fix resizing in PyQt5

    * Selection: Allow style definition
    * `ColormapDialog`: display 'values' plot in log if colormap uses log
    * Synchronize ColorBar with plot background colors
    * `CurvesROIWidget`: ROI is now an object.

   * Plot3D:

    * `SceneWidget`: add ColormapMesh item
    * Add compatibility with the StatsWidget to display statistic on 3D volumes.
    * Add `ScalarFieldView.get|setOuterScale`
    * Fix label update in param tree
    * Add `ColormapMesh` item to the `SceneWidget`

   * HDF5 tree:

    * Allow URI drop
    * Robustness of hdf5 tree with corrupted files

   * `silx.gui.widgets`:

    * Add URL selection table

 * Input/output:

   * Support compressed Fabio extensions
   * Add a function to create external dataset for .vol file

 * `silx view`:

    * Support 2D view for 3D NXData
    * Add a NXdata for complex images
    * Add a 3d scalar field view to the NXdata views zoo
    * Improve shortcuts, view loading
    * Improve silx view loading, shortcuts and sliders ergonomy
    * Support default attribute pointing to an NXdata at any group level

 * `silx convert`

    * Allow to use a filter id for compression

 * Math:

    * fft: multibackend fft

 * OpenCL:

    * Compute statistics on a numpy.ndarray
    * Backprojection:

     * Add sinogram filters (SinoFilter)
     * Input and/or output can be device arrays.

 * Miscellaneous:

    * End of PySide support (use PyQt5)
    * Last version supporting numpy 1.8.0. Next version will drop support for numpy < 1.12
    * Python 2.7 support will be dropped before end 2019. From version 0.11, a deprecation warning will be issued.
    * Remove some old deprecated methods/arguments
    * Set Cython language_level to 3


0.9.0: 2018/10/23
-----------------

 * Graphical user interface:

   * `silx.gui.widgets`:

     * Adds `RangeSlider` widget, a slider with 2 thumbs
     * Adds `CurveLegendsWidget` widget to display PlotWidget curve legends
       (as an alternative to `LegendSelector` widget)
     * Adds `FlowLayout` QWidget layout

   * Plot:

     * Adds `CompareImages` widget providing tools to compare 2 images
     * `ScatterView`: Adds alpha channel support
     * `MaskToolsWidget`: Adds load/save masks from/to HDF5 files

     * `PlotWidget`:

       * Adds `getItems` method, `sigItemAdded` and `sigItemAboutToBeRemoved` signals
       * Adds more options for active curve highlighting (see `get|setActiveCurveStyle` method)
       * Deprecates `get|setActiveCurveColor` methods
       * Adds `get|setActiveCurveSelectionMode` methods to change the behavior of active curve selection
       * Adds configurable line style and width to line markers
       * Fixes texture cache size in OpenGL backend

   * Plot3D:

     * Adds `SceneWidget.pickItems` method to retrieve the item and data at a given mouse position
     * Adds `PositionInfoWidget` widget to display data value at a given mouse position

   * `silx.gui.utils`:

     * Adds `image` module for QImage/numpy array conversion functions
     * Adds `testutils` helper module for writing Qt tests
       (previously available internally as `silx.gui.test.utils`)

   * Adds `silx.gui.qt.inspect` module to inspect Qt objects

 * Math:

   * Updates median filter with support for Not-a-Number and a 'constant' padding mode

 * `silx view`:

    * Fixes file synchronization
    * Adds a refresh button to synchronize file content

 * Dependencies:

   * Deprecates support of PySide Qt4 binding
     (We intend to drop official support of PySide in silx 0.10.0)
   * Deprecates support of PyQt4
   * Adds `h5py` and `fabio` as strong dependencies

 * Miscellaneous:

   * Adds `silx.examples` package to ship the example with the library

0.8.0: 2018/07/04
-----------------

 * Graphical user interface:

   * Plot:

     * Adds support of x-axis date/time ticks for time series display (see `silx.gui.plot.items.XAxis.setTickMode`)
     * Adds support of interactive authoring of regions of interest (see `silx.gui.plot.items.roi` and `silx.gui.plot.tools.roi`)
     * Adds `StatsWidget` widget for displaying statistics on data displayed in a `PlotWidget`
     * Adds `ScatterView` widget for displaying scatter plot with tools such as line profile and mask
     * Overcomes the limitation to float32 precision with the OpenGL backend
     * Splits plot toolbar is several reusable thematic toolbars

   * Plot3D: Adds `SceneWidget` items to display many cubes, cylinders or hexagonal prisms at once
   * Adds `silx.gui.utils` package with `submitToQtMainThread` for asynchronous execution of Qt-related functions
   * Adds Qt signals to `Hdf5TreeView` to manage HDF5 file life-cycle
   * Adds `GroupDialog` dialog to select a group in a HDF5 file
   * Improves colormap computation with a Cython/OpenMP implementation

   * Main API changes:

     * `Colormap` is now part of `silx.gui.colors`
     * `ColormapDialog` is now part of `silx.gui.dialogs`
     * `MaskToolsWidget.getSelectionMask` method now returns `None` if no image is selected
     * Clean-up `FrameBrowser` API

 * Image

   * Adds an optimized marching squares algorithm to compute many iso contours from the same image

 * Input/output:

   * Improves handling of empty Spec scans
   * Add an API to `NXdata` parser to get messages about malformed input data

 * `silx.sx`

   * Allows to use `silx.sx` in script as in Python interpreter
   * `sx.imshow` supports custom y-axis orientation using argument `origin=upper|lower`
   * Adds `sx.enable_gui()` to enable silx widgets in IPython notebooks

 * `silx convert`

   * Improves conversion from EDF file series to HDF5

 * `silx view`

   * Adds user preferences to restore colormap, plot backend, y-axis of plot image,...
   * Adds `--fresh` option to clean up user preferences at startup
   * Adds a widget to create custom viewable `NXdata` by combining different datasets
   * Supports `CTRL+C` shortcut in the terminal to close the application
   * Adds buttons to collapse/expand tree items
   * NXdata view now uses the `ScatterView` widget for scatters

 * Miscellaneous

   * Drops official support of Debian 7
   * Drops versions of IPython console widget before the `qtconsole` package
   * Fixes EDF file size written by `EdfFile` module with Python 3

0.7.0: 2018/02/27
-----------------

 * Input/output:

   * Priovides `silx.io.url.DataUrl` to parse supported links identifying
     group or dataset from files.
   * `silx.io.open` now supports h5pyd and silx custom URLs.
   * `silx.io.get_data` is provided to allow to reach a numpy array from silx.

 * OpenCL:

   * Provides an API to share memory between OpenCL tasks within the same device.
   * Provides CBF compression and decompression.
   * Simple processing on images (normalization, histogram).
   * Sift upgrade using memory sharing.

 * `silx.sx`:

   * Added `contour3d` function for displaying 3D isosurfaces.
   * Added `points3d` function for displaying  2D/3D scatter plots.
   * Added `ginput` function for interactive input of points on 1D/2D plots.

 * Graphic user interface:

   * Provides a file dialog to pick a dataset or a group from HDF5 files.
   * Provides a file dialog to pick an image from HDF5 files or multiframes formats.
   * The colormap dialog can now be used as non-modal.
   * `PlotWidget` can save the displayed data as a new `NXentry` of a HDF5 file.
   * `PlotWidget` exports displayed data as spec files using more digits.
   * Added new OpenGL-based 3D visualization widgets:

     * Supports 3D scalar field view 2D/3D scatter plots and images.
     * Provides an object oriented API similar to that of the 1D/2D plot.
     * Features a tree of parameters to edit visualized item's properties
       (e.g., transforms, colormap...)
     * Provides interactive panning of cut and clip planes.

   * Updates of `ScalarFieldView` widget:

     * Added support for a 3x3 transform matrix (to support non orthogonal axes)
     * Added support of an alternative interaction when `ctrl` is pressed
       (e.g., rotate by default and pan when ctrl/command key is pressed).
     * Added 2 sliders to control light direction in associated parameter tree view.

 * `silx view`:

   * Uses a single colormap to show any datasets.
   * The colormap dialog can stay opened while browsing the data.
   * The application is associated with some file types to be used to load files
     on Debian.
   * Provides a square amplitude display mode to visualize complex images.
   * Browsing an `NXentry` can display a default `NXdata`.
   * Added explanation when an `NXdata` is not displayable.
   * `NXdata` visualization can now show multiple curves (see `@auxiliary_signals`).
   * Supports older `NXdata` specification.

 * `silx convert`:

   * Added handling of file series as a single multiframe
   * Default behavior changes to avoid to add an extra group at the root,
     unless explicitly requested (see `--add-root-group`).
   * Writer uses now utf-8 text as default (NeXus specification).
   * EDF files containing MCA data are now interpreted as spectrum.

 * Miscellaneous:

   * Added `silx.utils.testutils` to share useful unittest functions with other
     projects.
   * Python 2 on Mac OS X is no longer tested.
   * Experimental support to PySide2.
   * If fabio is used, a version >= 0.6 is mandatory.

0.6.0: 2017/10/02
-----------------

 * OpenCl. Tomography. Implement a filtered back projection.
 * Add a *PrintPreview* widget and a *PrintPreviewToolButton* for *PlotWidget*.
 * Plot:

   * Add a context menu on right click.
   * Add a *ComplexImageView* widget.
   * Merged abstract *Plot* class with *PlotWidget* class.
   * Make colormap an object with signals (*sigChanged*)
   * Add a colorbar widget *silx.gui.plot.ColorBar*.
   * Make axis an object, allow axis synchronization between plots,
     allow adding constraints on axes limits.
   * Refactor plot actions, new sub-package *silx.gui.plot.actions*.
   * Add signals on *PlotWidget* items notifying updates.
   * Mask. Support loading of TIFF images.

 * Plot3d:

   * Rework toolbar and interaction to use only the left mouse button.
   * Support any colormap.

 * Hdf5TreeView:

   * Add an API to select a single tree node item (*setSelectedH5Node*)
   * Better support and display of types.
   * New column for displaying the kind of links.
   * Broken nodes are now selectable.

 * StackView. Add a *setTitleCallback* method.
 * Median filter. Add new modes (*reflect, mirror, shrink*) in addition to *nearest*.

 * IO:

   * Rename module *spectoh5* to *convert*. Add support for conversion of *fabio* formats.
   * Support NPZ format.
   * Support opening an URI (*silx.io.open(filename::path)*).
   * *Group* methods *.keys*, *.value* and *.items* now return lists in Python 2
     and iterators in Python 3.

 * Image. Add tomography utils: *phantomgenerator* to produce Shepp-Logan phantom, function to compute center of rotation (*calc_center_corr*, *calc_center_centroid*) and rescale the intensity of an image (*rescale_intensity*).

 * Commands:

   * *silx view*:

     * Add command line option *--use-opengl-plot*.
     * Add command line option *--debug*, to print dataset reading errors.
     * Support opening URI (*silx view filename::path*).

   * *silx convert*. New command line application to convert supported data files to HDF5.

 * Enable usage of *silx.resources* for other projects.
 * The *silx* license is now fully MIT.


0.5.0: 2017/05/12
-----------------

 * Adds OpenGL backend to 1D and 2D graphics
 * Adds Object Oriented plot API with Curve, Histogram, Image, ImageRgba and Scatter items.
 * Implements generic launcher (``silx view``)
 * NXdataViewer. Module providing NeXus NXdata support
 * Math/OpenCL. Implementation of median filter.
 * Plot. Implementation of ColorBar widget.
 * Plot. Visualization of complex data type.
 * Plot. Implementation of Scatter Plot Item supporting colormaps and masks.
 * Plot. StackView now supports axes calibration.
 * I/O. Supports SPEC files not having #F or #S as first line character.
 * I/O. Correctly exposes UB matrix when found in file.
 * ROIs. Simplification of API: setRois, getRois, calculateRois.
 * ROIs. Correction of calculation bug when the X-axis values were not ordered.
 * Sift. Moves package from ``silx.image`` to ``silx.opencl``.


0.4.0: 2017/02/01
-----------------

 * Adds plot3D package (include visualization of 3-dimensional scalar fields)
 * Adds data viewer (it can handle n-dimensional data)
 * Adds StackView (ex. Visualization of stack of images)
 * Adds depth profile calculation (ex. extract profile of a stack of images)
 * Adds periodic table widget
 * Adds ArrayTableWidget
 * Adds pixel intensity histogram action
 * Adds histogram parameter to addCurve
 * Refactoring. Create silx.gui.data (include widgets for data)
 * Refactoring. Rename utils.load as silx.io.open
 * Changes active curve behavior in Plot. No default active curve is set by default
 * Fit Action. Add polynomial functions and background customization
 * PlotWindow. Provide API to access toolbar actions
 * Handle SPEC, HDF5 and image formats through an unified API
 * hdf5widget example. Inspect and visualize any datasets
 * Improves mask tool
 * Deprecates PlotWindow dock widgets attributes in favor of getter methods


0.3.0: 2016/10/12
-----------------

 * Adds OpenCL management
 * Adds isosurface marching cubes
 * Adds sift algorithm for image alignement
 * Adds octaveh5 module to insure communication between octave and python using HDF5 file
 * Adds silx.utils module containing weakref and html-escape
 * Adds silx.sx for flat import (helper for interactive shell)
 * Adds HDF5 load API (supporting Spec files) to silx.io.utils module
 * Adds SpecFile support for multiple MCA headers
 * Adds HDF5 TreeView
 * Adds FitManager to silx.math.fit and FitWidget to silx.gui.fit
 * Adds ThreadPoolPushButton to silx.gui.widgets
 * Adds getDataRange function to plot widget
 * Adds loadUi, Slot and Property to qt.py
 * Adds SVG icons and support
 * Adds examples for plot actions, HDF5 widget, helper widgets, converter from Spec to HDF5
 * Adds tutorials for plot actions, spech5, spectoh5, sift and fitmanager
 * Improves right axis support for plot widget
 * Improves mask tool
 * Refactors widgets constructor: first argument is now the parent widget
 * Changes plot documentation and add missing module to the documentation


0.2.0: 2016/07/12
-----------------

 * Adds bilinear interpolator and line-profile for images to silx.image
 * Adds Levenberg-Marquardt least-square fitting algorithm to silx.math.fit
 * Histogramnd changed to become a class rather than a function, API and return values changed
 * Adds HistogramndLut, using a lookup table to bin data onto a regular grid for several sets of
   data sharing the same coordinates
 * Adds legend widget and bottom toolbar to PlotWindow
 * Adds a line-profile toolbar to PlotWindow
 * Adds ImageView widget with side histograms and profile toolbar
 * Adds IPython console widget, to be started from PlotWindow toolbar
 * Adds Plot1D widget for curves and Plot2D widget for images
 * Adds ROI widget for curves in PlotWindow
 * Adds a mask widget and toolbar to plot (2D)
 * Renames silx.io.dicttoh5 to silx.io.dictdump
 * Adds configuration dictionary dumping/loading to/from JSON and INI files in silx.io.configdict
 * Adds specfile wrapper API compatible with legacy wrapper: silx.io.specfilewrapper
 * Transposes scan data in specfile module to have detector as first index
 * Set up nigthly build for sources package, debian packages (http://www.silx.org/pub/debian/)
   and documentation (http://www.silx.org/doc/)


0.1.0: 2016/04/14
-----------------

 * Adds project build, documentation and test structure
 * Adds continuous integration set-up for Travis-CI and Appveyor
 * Adds Debian packaging support
 * Adds SPEC file reader, SPEC file conversion to HDF5 in silx.io
 * Adds histogramnd function in silx.math
 * Adds 1D, 2D plot widget with a toolbar, refactored from PyMca PlotWindow in silx.gui.plot
