Skip to content

Commit 86551b6

Browse files
committed
V2.0: updated CHANGELOG
1 parent ec0565a commit 86551b6

File tree

2 files changed

+112
-28
lines changed

2 files changed

+112
-28
lines changed

CHANGELOG.md

Lines changed: 111 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,122 @@
11
# PlotPy Releases #
22

3-
## Version 1.99.0 (experimental) ##
3+
## Version 2.0.0 ##
44

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

7-
New major release:
8+
PlotPy 2.0 is a major release that brings a lot of new features and bug fixes.
89

9-
* New BSD 3-Clause License
10-
* Black code formatting on all Python files
11-
* New automated test suite:
12-
* Added support for an "unattended" execution mode (Qt loop is bypassed)
13-
* Added support for pytest fixtures
14-
* Added support for coverage testing: 71% coverage to date
15-
* Documentation was entirely rewritten using Sphinx
16-
* Reorganized modules: see documentation for details (section "Development")
17-
* Removed "Sift" demo as there is now a far better real-world example with the
18-
[DataLab](https://codra-ingenierie-informatique.github.io/DataLab/) project
19-
* Integrated more than 30 bug fixes thanks to the merge with the [guiqwt](https://github.com/PlotPyStack/guiqwt) project
20-
* Added dozen of new features thanks to the merge with the [guiqwt]()
21-
* Added other new features:
22-
* ``widgets.selectdialog.SelectDialog``: a dialog box to select items using a shape tool (segment, rectangle or custom)
10+
When initiated in 2016, PlotPy 1.0 was the result of the merge of two projects (as well
11+
as some other changes, e.g. a redesign of the API):
12+
13+
* [guidata](https://pypi.org/project/guidata/), a Python library generating graphical
14+
user interfaces for easy dataset editing and display
15+
* [guiqwt](https://pypi.org/project/guiqwt/), a Python library providing efficient 2D
16+
data-plotting features (curve/image visualization and related tools) for interactive
17+
computing and signal/image processing application development
18+
19+
With PlotPy 2.0, the [guidata](https://pypi.org/project/guidata/) code base has been
20+
reextracted: PlotPy now relies on [guidata](https://pypi.org/project/guidata/) as a
21+
dependency, like before the merge.
2322

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

26-
Changes:
26+
Supported versions of Python and Qt bindings have been updated:
2727

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

34-
## Version 1.0.5 ##
33+
PlotPy 2.0 is a major release because it also brings a lot of new features:
34+
35+
* ``plot.PlotWidget``, ``plot.PlotDialog``, and ``plot.PlotWindow``: API overhaul
36+
(simple, more consistent, more flexible, more extensible - see documentation
37+
for details)
38+
* ``plot.SyncPlotWindow``: new class to show multiple plots in a single window,
39+
in a synchronized way (zoom, pan, etc.)
40+
* ``widgets.selectdialog.SelectDialog``: a dialog box to select items using a
41+
shape tool (segment, rectangle or custom)
42+
* Image lookup table (LUT):
43+
* Initially, the LUT alpha channel was either constant (input parameter
44+
`alpha` was a float between 0 and 1) or linearly dependent on the image
45+
pixel values (when the `alpha_mask` parameter was enabled)
46+
* Now, the LUT may be either constant (same as before) or dependent on
47+
the image pixel values but not only linearly: the LUT alpha channel may
48+
follow a linear, a sigmoid or an hyperbolic tangent function (see the new
49+
`alpha_function` parameter). The old `alpha_mask` parameter was removed
50+
* Image pixels are now centered on their coordinates:
51+
* This means that the pixel at row `i` and column `j` is centered on the point
52+
`(j, i)` (before, the top-left corner of the pixel at row `i` and column `j`
53+
was centered on the point `(j, i)`)
54+
* This convention is more consistent with the way images are displayed in other
55+
scientific image processing tools
56+
* This is one of the benefits of porting back [guiqwt](https://pypi.org/project/guiqwt/)
57+
changes since the merge (i.e. between 2016 and 2023)
58+
* New SVG-based shapes:
59+
* ``items.RectangleSVGShape``: rectangle shape based on SVG data or file
60+
* ``items.SquareSVGShape``: square shape based on SVG data or file
61+
* ``items.CircleSVGShape``: circle shape based on SVG data or file
62+
* ``builder.PlotBuilder``:
63+
* Renamed ``PlotBuilder`` (originally ``guiqwt.builder.PlotItemBuilder``)
64+
* Builder instance is still available using ``from plotpy.builder import make``
65+
* Plot widget creation is now supported:
66+
* ``make.widget()`` for ``plot.PlotWidget``
67+
* ``make.dialog()`` for ``plot.PlotDialog``
68+
* ``make.window()`` for ``plot.PlotWindow``
69+
* Added support for more plot items:
70+
* ``make.contours()`` for generating a list of ``items.ContourItem`` objects
71+
* ``make.annotated_point()`` for ``items.AnnotatedPoint``
72+
* ``make.polygon()`` for ``items.PolygonShape``
73+
* ``make.svg()`` for ``items.RectangleSVGShape``, ``items.SquareSVGShape``,
74+
and ``items.CircleSVGShape``
75+
* Added JSON serialization support for all plot items (curve, image, etc.)
76+
77+
* Brand new documentation, based on Sphinx with links to other projects API, examples
78+
and tutorials (e.g. on development related topics).
79+
* Black code formatting on all Python files
80+
* New automated test suite:
81+
* Automatic execution: ``--unattended`` command line option (Qt loop is bypassed)
82+
* Test suite based on ``pytest``, supporting ``pytest-cov`` for coverage testing,
83+
``pytest-xvfb`` for headless testing, and ``pytest-qt`` for Qt testing
84+
* Added support for Coverage: test coverage improved up to 70%
85+
* Added typing annotations on (almost) all Python files
86+
* Distribution: switched to ``pyproject.toml`` (still relying on ``setuptools`` and
87+
``setup.py`` for building Cython/C++ extensions)
88+
* Added code quality configuration files:
89+
* ``.pylintrc``: pylint configuration file
90+
* ``.isort.cfg``: isort configuration file
91+
* ``.coveragerc``: coverage configuration file
92+
* Added Visual Studio Code configuration files:
93+
* ``.vscode/settings.json``: Python interpreter, code formatting, etc.
94+
* ``.vscode/tasks.json``: build, test, etc.
95+
* ``.vscode/launch.json``: run current file, run tests, etc.
3596

36-
Changes:
97+
PlotPy 2.0 also brings a lot of bug fixes and improvements:
3798

38-
* packaging.py renamed into packaging_helpers.py in order to be compatible with Sphinx
99+
* Handled all Cython/C++ extensions compilation warnings
100+
* Fixed all NumPy deprecation issues (e.g. ``numpy.matrix``)
101+
* Fixed (annotated) circle/ellipse item creation/test
102+
* Fixed all documentation build warnings
103+
* Fixed regressions introduced by PlotPy V1 on top of guiqwt:
104+
* Global references for the Debian package management
105+
* Major aspect ratio issues:
106+
* When resizing the plot widget (images were downsized indefinitely)
107+
* When auto-scaling the plot widget (images were not displayed entirely)
108+
* ``TrImageItem`` rotation algorithm
109+
* Oblique cross-section test
110+
* About dialog, version informations
111+
* Ported all [guiqwt](https://pypi.org/project/guiqwt/) bug fixes since the merge
112+
(i.e. between 2016 and 2023):
113+
* Added support for Visual Studio 2015 and earlier
114+
* Speeding-up image alpha channel calculation
115+
* Optimized colormap icon caching
116+
* X-axis direction and auto-scale
117+
* Added load test (with a very large number of plot widgets)
118+
* Coordinates inversion in ``EllipseShape``
119+
* ValueError with levels histogram
120+
* Various fixes regarding plot item creation, cross-section features,
121+
PyQt5 support, DICOM support, TIFF support, etc.
122+
* Etc.

plotpy/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
.. _GitHub: https://github.com/PierreRaybaut/plotpy
2121
"""
2222

23-
__version__ = "1.99.0"
23+
__version__ = "2.0.0"
2424
__VERSION__ = tuple([int(number) for number in __version__.split(".")])
2525

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

0 commit comments

Comments
 (0)