Skip to content

Commit

Permalink
V2.0: updated CHANGELOG
Browse files Browse the repository at this point in the history
  • Loading branch information
PierreRaybaut committed Oct 11, 2023
1 parent ec0565a commit 86551b6
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 28 deletions.
138 changes: 111 additions & 27 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,122 @@
# PlotPy Releases #

## Version 1.99.0 (experimental) ##
## Version 2.0.0 ##

This version is a preliminary release of the 2.0 series.
This version is the first release of the 2.0 series, which is distributed under the
[BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause).

New major release:
PlotPy 2.0 is a major release that brings a lot of new features and bug fixes.

* New BSD 3-Clause License
* Black code formatting on all Python files
* New automated test suite:
* Added support for an "unattended" execution mode (Qt loop is bypassed)
* Added support for pytest fixtures
* Added support for coverage testing: 71% coverage to date
* Documentation was entirely rewritten using Sphinx
* Reorganized modules: see documentation for details (section "Development")
* Removed "Sift" demo as there is now a far better real-world example with the
[DataLab](https://codra-ingenierie-informatique.github.io/DataLab/) project
* Integrated more than 30 bug fixes thanks to the merge with the [guiqwt](https://github.com/PlotPyStack/guiqwt) project
* Added dozen of new features thanks to the merge with the [guiqwt]()
* Added other new features:
* ``widgets.selectdialog.SelectDialog``: a dialog box to select items using a shape tool (segment, rectangle or custom)
When initiated in 2016, PlotPy 1.0 was the result of the merge of two projects (as well
as some other changes, e.g. a redesign of the API):

* [guidata](https://pypi.org/project/guidata/), a Python library generating graphical
user interfaces for easy dataset editing and display
* [guiqwt](https://pypi.org/project/guiqwt/), a Python library providing efficient 2D
data-plotting features (curve/image visualization and related tools) for interactive
computing and signal/image processing application development

With PlotPy 2.0, the [guidata](https://pypi.org/project/guidata/) code base has been
reextracted: PlotPy now relies on [guidata](https://pypi.org/project/guidata/) as a
dependency, like before the merge.

## Version 1.2.1 ##
PlotPy 2.0 also integrates all the bug fixes (>30) and new features that were added to
[guiqwt](https://pypi.org/project/guiqwt/) since the merge (i.e. between 2016 and 2023).

Changes:
Supported versions of Python and Qt bindings have been updated:

* Stabilized version based on PythonQwt
* packaging_helpers.py included into plotpy.core.utils
* some GUI bug fixed
* mscv option added into packaging_helpers.py
* tests improved
* Python: 3.8, 3.9, and 3.10 (3.11 should work too, but will be officially supported
when dropping support for Python 3.8, to keep a 3-year support period)
* Qt bindings: PyQt5 (even if PyQt6 and PySide6 are not officially supported, efforts
have been made and will continue to be made to support them)

## Version 1.0.5 ##
PlotPy 2.0 is a major release because it also brings a lot of new features:

* ``plot.PlotWidget``, ``plot.PlotDialog``, and ``plot.PlotWindow``: API overhaul
(simple, more consistent, more flexible, more extensible - see documentation
for details)
* ``plot.SyncPlotWindow``: new class to show multiple plots in a single window,
in a synchronized way (zoom, pan, etc.)
* ``widgets.selectdialog.SelectDialog``: a dialog box to select items using a
shape tool (segment, rectangle or custom)
* Image lookup table (LUT):
* Initially, the LUT alpha channel was either constant (input parameter
`alpha` was a float between 0 and 1) or linearly dependent on the image
pixel values (when the `alpha_mask` parameter was enabled)
* Now, the LUT may be either constant (same as before) or dependent on
the image pixel values but not only linearly: the LUT alpha channel may
follow a linear, a sigmoid or an hyperbolic tangent function (see the new
`alpha_function` parameter). The old `alpha_mask` parameter was removed
* Image pixels are now centered on their coordinates:
* This means that the pixel at row `i` and column `j` is centered on the point
`(j, i)` (before, the top-left corner of the pixel at row `i` and column `j`
was centered on the point `(j, i)`)
* This convention is more consistent with the way images are displayed in other
scientific image processing tools
* This is one of the benefits of porting back [guiqwt](https://pypi.org/project/guiqwt/)
changes since the merge (i.e. between 2016 and 2023)
* New SVG-based shapes:
* ``items.RectangleSVGShape``: rectangle shape based on SVG data or file
* ``items.SquareSVGShape``: square shape based on SVG data or file
* ``items.CircleSVGShape``: circle shape based on SVG data or file
* ``builder.PlotBuilder``:
* Renamed ``PlotBuilder`` (originally ``guiqwt.builder.PlotItemBuilder``)
* Builder instance is still available using ``from plotpy.builder import make``
* Plot widget creation is now supported:
* ``make.widget()`` for ``plot.PlotWidget``
* ``make.dialog()`` for ``plot.PlotDialog``
* ``make.window()`` for ``plot.PlotWindow``
* Added support for more plot items:
* ``make.contours()`` for generating a list of ``items.ContourItem`` objects
* ``make.annotated_point()`` for ``items.AnnotatedPoint``
* ``make.polygon()`` for ``items.PolygonShape``
* ``make.svg()`` for ``items.RectangleSVGShape``, ``items.SquareSVGShape``,
and ``items.CircleSVGShape``
* Added JSON serialization support for all plot items (curve, image, etc.)

* Brand new documentation, based on Sphinx with links to other projects API, examples
and tutorials (e.g. on development related topics).
* Black code formatting on all Python files
* New automated test suite:
* Automatic execution: ``--unattended`` command line option (Qt loop is bypassed)
* Test suite based on ``pytest``, supporting ``pytest-cov`` for coverage testing,
``pytest-xvfb`` for headless testing, and ``pytest-qt`` for Qt testing
* Added support for Coverage: test coverage improved up to 70%
* Added typing annotations on (almost) all Python files
* Distribution: switched to ``pyproject.toml`` (still relying on ``setuptools`` and
``setup.py`` for building Cython/C++ extensions)
* Added code quality configuration files:
* ``.pylintrc``: pylint configuration file
* ``.isort.cfg``: isort configuration file
* ``.coveragerc``: coverage configuration file
* Added Visual Studio Code configuration files:
* ``.vscode/settings.json``: Python interpreter, code formatting, etc.
* ``.vscode/tasks.json``: build, test, etc.
* ``.vscode/launch.json``: run current file, run tests, etc.

Changes:
PlotPy 2.0 also brings a lot of bug fixes and improvements:

* packaging.py renamed into packaging_helpers.py in order to be compatible with Sphinx
* Handled all Cython/C++ extensions compilation warnings
* Fixed all NumPy deprecation issues (e.g. ``numpy.matrix``)
* Fixed (annotated) circle/ellipse item creation/test
* Fixed all documentation build warnings
* Fixed regressions introduced by PlotPy V1 on top of guiqwt:
* Global references for the Debian package management
* Major aspect ratio issues:
* When resizing the plot widget (images were downsized indefinitely)
* When auto-scaling the plot widget (images were not displayed entirely)
* ``TrImageItem`` rotation algorithm
* Oblique cross-section test
* About dialog, version informations
* Ported all [guiqwt](https://pypi.org/project/guiqwt/) bug fixes since the merge
(i.e. between 2016 and 2023):
* Added support for Visual Studio 2015 and earlier
* Speeding-up image alpha channel calculation
* Optimized colormap icon caching
* X-axis direction and auto-scale
* Added load test (with a very large number of plot widgets)
* Coordinates inversion in ``EllipseShape``
* ValueError with levels histogram
* Various fixes regarding plot item creation, cross-section features,
PyQt5 support, DICOM support, TIFF support, etc.
* Etc.
2 changes: 1 addition & 1 deletion plotpy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
.. _GitHub: https://github.com/PierreRaybaut/plotpy
"""

__version__ = "1.99.0"
__version__ = "2.0.0"
__VERSION__ = tuple([int(number) for number in __version__.split(".")])

# --- Important note: DATAPATH and LOCALEPATH are used by guidata.configtools
Expand Down

0 comments on commit 86551b6

Please sign in to comment.