Skip to content

Commit 25fd526

Browse files
committed
Replace changelog by release notes
1 parent b12785f commit 25fd526

18 files changed

+758
-740
lines changed

.vscode/tasks.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@
349349
"${workspaceFolder}/build/doc",
350350
"-b",
351351
"html",
352-
"-W",
352+
// "-W",
353353
],
354354
"options": {
355355
"cwd": "${workspaceFolder}",

CHANGELOG.md

Lines changed: 0 additions & 724 deletions
This file was deleted.

MANIFEST.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@ graft qtdesigner
33
graft src
44
graft colormaps
55
include *.desktop
6-
include CHANGELOG.md
76
include requirements.txt

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ It is part of the [PlotPyStack](https://github.com/PlotPyStack) project, aiming
2323

2424
<img src="https://raw.githubusercontent.com/PlotPyStack/plotpy/master/doc/images/panorama.png">
2525

26-
See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details on the library and [changelog](https://github.com/PlotPyStack/PlotPy/blob/master/CHANGELOG.md) for recent history of changes.
26+
See [documentation](https://plotpy.readthedocs.io/en/latest/) for more details on the library.
2727

2828
Copyrights and licensing:
2929

doc/changelog.rst

Lines changed: 0 additions & 4 deletions
This file was deleted.

doc/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,6 @@ Table of contents
5050
intro/index
5151
features/index
5252
dev/index
53-
changelog
53+
release_notes/index
5454

5555
* :ref:`genindex`

doc/release_notes/index.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Release notes
2+
=============
3+
4+
This section contains the release notes for all versions of :mod:`plotpy`, documenting
5+
new features, improvements, bug fixes, and breaking changes.
6+
7+
.. toctree::
8+
:maxdepth: 1
9+
:glob:
10+
:reversed:
11+
12+
release_*

doc/release_notes/release_2.00.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# Version 2.0 #
2+
3+
## PlotPy Version 2.0.3 (2023-12-22) ##
4+
5+
Bug fixes:
6+
7+
* [Issue #9](https://github.com/PlotPyStack/PlotPy/issues/9) - MacOS: `error: a space is required between consecutive right angle brackets (use '> >')`
8+
9+
## PlotPy Version 2.0.2 (2023-12-15) ##
10+
11+
Bug fixes:
12+
13+
* [Issue #3](https://github.com/PlotPyStack/PlotPy/issues/3) - `PlotWidget`: `ZeroDivisionError` on resize while ignoring constraints
14+
* [Issue #4](https://github.com/PlotPyStack/PlotPy/issues/4) - Average cross section: `RuntimeWarning: Mean of empty slice.`
15+
* [Issue #5](https://github.com/PlotPyStack/PlotPy/issues/5) - Contrast panel: levels histogram is sometimes not updated
16+
* [Issue #6](https://github.com/PlotPyStack/PlotPy/issues/6) - 1D Histogram items are not properly drawn
17+
* [Issue #7](https://github.com/PlotPyStack/PlotPy/issues/7) - Contrast panel: histogram may contains zeros periodically due to improper bin sizes
18+
* [Issue #8](https://github.com/PlotPyStack/PlotPy/issues/8) - Contrast panel: switch back to default tool after selecting min/max
19+
20+
## PlotPy Version 2.0.1 (2023-11-29) ##
21+
22+
Bug fixes:
23+
24+
* Fixed `plotpy.tools.AnnotatedEllipseTool`: `AttributeError` when finalizing the shape
25+
* `plotpy.widgets.select_with_shape_tool`: added missing `toolbar` and `options` parameters
26+
* `items.XRangeSelection` is now serializable, as expected
27+
28+
Documentation:
29+
30+
* `plotpy.plot.SyncPlotWindow`: added missing documentation
31+
* Added more information on PlotPyStack
32+
* New "Motivation" section explaining the reasons behind the creation of PlotPy
33+
34+
## PlotPy Version 2.0.0 (2023-10-25) ##
35+
36+
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).
37+
38+
PlotPy 2.0 is a major release that brings a lot of new features and bug fixes.
39+
40+
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):
41+
42+
* [guidata](https://pypi.org/project/guidata/), a Python library generating graphical user interfaces for easy dataset editing and display
43+
* [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
44+
45+
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.
46+
47+
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).
48+
49+
Supported versions of Python and Qt bindings have been updated:
50+
51+
* 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)
52+
* 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)
53+
54+
PlotPy 2.0 is a major release because it also brings a lot of new features:
55+
56+
* `plot.PlotWidget`, `plot.PlotDialog`, and `plot.PlotWindow`: API overhaul (simple, more consistent, more flexible, more extensible - see documentation for details)
57+
* `plot.SyncPlotWindow`: new class to show multiple plots in a single window, in a synchronized way (zoom, pan, etc.)
58+
* `widgets.selectdialog.SelectDialog`: a dialog box to select items using a shape tool (segment, rectangle or custom)
59+
* Image lookup table (LUT):
60+
* 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)
61+
* 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
62+
* Image pixels are now centered on their coordinates:
63+
* 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)`)
64+
* This convention is more consistent with the way images are displayed in other scientific image processing tools
65+
* 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)
66+
* New SVG-based shapes:
67+
* `items.RectangleSVGShape`: rectangle shape based on SVG data or file
68+
* `items.SquareSVGShape`: square shape based on SVG data or file
69+
* `items.CircleSVGShape`: circle shape based on SVG data or file
70+
* `builder.PlotBuilder`:
71+
* Renamed `PlotBuilder` (originally `guiqwt.builder.PlotItemBuilder`)
72+
* Builder instance is still available using `from plotpy.builder import make`
73+
* Plot widget creation is now supported:
74+
* `make.widget()` for `plot.PlotWidget`
75+
* `make.dialog()` for `plot.PlotDialog`
76+
* `make.window()` for `plot.PlotWindow`
77+
* Added support for more plot items:
78+
* `make.contours()` for generating a list of `items.ContourItem` objects
79+
* `make.annotated_point()` for `items.AnnotatedPoint`
80+
* `make.polygon()` for `items.PolygonShape`
81+
* `make.svg()` for `items.RectangleSVGShape`, `items.SquareSVGShape`, and `items.CircleSVGShape`
82+
* Added JSON serialization support for all plot items (curve, image, etc.)
83+
84+
* Brand new documentation, based on Sphinx with links to other projects API, examples and tutorials (e.g. on development related topics).
85+
* Black code formatting on all Python files
86+
* New automated test suite:
87+
* Automatic execution: `--unattended` command line option (Qt loop is bypassed)
88+
* Test suite based on `pytest`, supporting `pytest-cov` for coverage testing, `pytest-xvfb` for headless testing, and `pytest-qt` for Qt testing
89+
* Added support for Coverage: test coverage improved up to 70%
90+
* Added typing annotations on (almost) all Python files
91+
* Distribution: switched to `pyproject.toml` (still relying on `setuptools` and `setup.py` for building Cython/C++ extensions)
92+
* Added code quality configuration files:
93+
* `.pylintrc`: pylint configuration file
94+
* `.isort.cfg`: isort configuration file
95+
* `.coveragerc`: coverage configuration file
96+
* Added Visual Studio Code configuration files:
97+
* `.vscode/settings.json`: Python interpreter, code formatting, etc.
98+
* `.vscode/tasks.json`: build, test, etc.
99+
* `.vscode/launch.json`: run current file, run tests, etc.
100+
101+
PlotPy 2.0 also brings a lot of bug fixes and improvements:
102+
103+
* Handled all Cython/C++ extensions compilation warnings
104+
* Fixed all NumPy deprecation issues (e.g. `numpy.matrix`)
105+
* Fixed (annotated) circle/ellipse item creation/test
106+
* Fixed all documentation build warnings
107+
* Fixed regressions introduced by PlotPy V1 on top of guiqwt:
108+
* Global references for the Debian package management
109+
* Major aspect ratio issues:
110+
* When resizing the plot widget (images were downsized indefinitely)
111+
* When auto-scaling the plot widget (images were not displayed entirely)
112+
* `TrImageItem` rotation algorithm
113+
* Oblique cross-section test
114+
* About dialog, version informations
115+
* Ported all [guiqwt](https://pypi.org/project/guiqwt/) bug fixes since the merge (i.e. between 2016 and 2023):
116+
* Added support for Visual Studio 2015 and earlier
117+
* Speeding-up image alpha channel calculation
118+
* Optimized colormap icon caching
119+
* X-axis direction and auto-scale
120+
* Added load test (with a very large number of plot widgets)
121+
* Coordinates inversion in `EllipseShape`
122+
* ValueError with levels histogram
123+
* Various fixes regarding plot item creation, cross-section features, PyQt5 support, DICOM support, TIFF support, etc.
124+
* Etc.

doc/release_notes/release_2.01.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Version 2.1 #
2+
3+
## PlotPy Version 2.1.2 (2024-02-16) ##
4+
5+
New features:
6+
7+
* Added `Echelon` alpha function to the image parameters:
8+
* The `Echelon` alpha function is a step function, so that the alpha channel is 0 (full transparency) for the lowest value of the Lookup Table (LUT) and opaque (transparency level set by the `Global alpha` parameter) for the other values
9+
* This feature is added to the other existing alpha functions: `Constant`, `Linear`, `Sigmoid`, and `Hyperbolic tangent`
10+
11+
Bug fixes:
12+
13+
* Compatibility with PythonQwt 0.12.
14+
15+
## PlotPy Version 2.1.1 (2024-02-09) ##
16+
17+
Bug fixes:
18+
19+
* API breakage (unintentional) in V2.1.0:
20+
* In V2.1.0, `mathutils.colormap` module was renamed to `mathutils.colormaps`
21+
* Original `mathutils.colormap` module naming is restored in this release
22+
* Colormap selection from the toolbar was not triggering the `SIG_ITEMS_CHANGED` signal (every time an item parameter is changed, the `SIG_ITEMS_CHANGED` signal has to be emitted by the `BasePlot` instance to notify the application that the plot has been modified)
23+
24+
## PlotPy Version 2.1.0 (2024-02-08) ##
25+
26+
In this release, test coverage is 71%.
27+
28+
New features:
29+
30+
* Curve-related features:
31+
* New `tools.SelectPointsTool` to select graphically multiple points on a plot
32+
* New `tools.EditPointTool` to edit graphically the position of a point on a plot
33+
* New downsampling feature:
34+
* The user may enable it to reduce the number of points displayed on a curve (e.g. when the curve is too dense)
35+
* The downsampling factor is adjustable (default to 10, i.e. 1 point out of 10 is displayed)
36+
* The feature is disabled by default
37+
* Image-related features:
38+
* New "Colormap Manager":
39+
* Before this release, the colormap selection was limited to presets (e.g. "gray", "jet", etc.)
40+
* Now, the user can select a preset, edit it, or create a new one from scratch thanks to the new "Colormap Manager" dialog
41+
* New line cross section feature:
42+
* Before this release, the cross section feature was limited to either horizontal or vertical lines, or an average cross section withing a rectangle (aligned with the axes, or oblique)
43+
* Now, the user can draw a line cross section with the new "Line Cross Section" tool: the intensity profile associated to the drawn segment is displayed in a dedicated plot
44+
* Added support for gestures:
45+
* Zooming in/out with the a two-finger pinch gesture
46+
* Panning with a two-finger drag gesture
47+
48+
Documentation:
49+
50+
* Reorganized some sections
51+
* Added sections on new features
52+
53+
Bug fixes:
54+
55+
* Fixed critical bug in oblique cross section feature (regression introduced in 2.0.0)
56+
* Removed dependency to `pytest-qt` for the test suite (due to Qt6 compatibility issues)

doc/release_notes/release_2.02.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Version 2.2 #
2+
3+
## PlotPy Version 2.2.0 (2024-03-04) ##
4+
5+
In this release, test coverage is 75%.
6+
7+
New features:
8+
9+
* Added `SIG_ITEM_PARAMETERS_CHANGED` signal to `BasePlot` class:
10+
* This signal is emitted when the parameters of an item are changed using the parameters dialog, or a specific tool (e.g. the colormap selection tool, or the lock/unlock tool for image items)
11+
* This signal is emitted with the item as argument
12+
* It is often emitted before the `SIG_ITEMS_CHANGED` signal, which is global to all items, but not necessarily. For example, when the colormap of an image is changed, the `SIG_ITEM_PARAMETERS_CHANGED` signal is emitted for the image item, but the `SIG_ITEMS_CHANGED` signal is not emitted.
13+
* Added new colormap presets:
14+
* `viridis`, `plasma`, `inferno`, `magma`, `cividis`
15+
* `afmhot`
16+
* `coolwarm`, `bwr`, `seismic`
17+
* `gnuplot2`, `CMRmap`, `rainbow`, `turbo`
18+
* Fixed all qualitative colormaps:
19+
* All qualitative colormaps have been re-computed because they are not supposed to be interpolated, which was the case and made them unusable
20+
* The qualitative colormaps are now usable and look like the ones from Matplotlib
21+
* Colormap manager:
22+
* Added a button to remove a custom colormap
23+
* The preset colormaps *and* the currently selected colormap are read-only
24+
* Added automatic unit tests for interactive tools:
25+
* `AnnotatedCircleTool`, `AnnotatedEllipseTool`, `AnnotatedObliqueRectangleTool`, `AnnotatedPointTool`, `AnnotatedRectangleTool`, `AnnotatedSegmentTool`
26+
* `AverageCrossSectionTool`, `CrossSectionTool`, `ObliqueCrossSectionTool`, `LineCrossSectionTool`
27+
* `EditPointTool`, `SelectPointsTool`, `SelectPointTool`
28+
* `AspectRatioTool`, `ImageStatsTool`, `SnapshotTool`
29+
* `DisplayCoordsTool`, `RectZoomTool`
30+
* `CircleTool`, `EllipseTool`, `FreeFormTool`, `MultiLineTool`, `ObliqueRectangleTool`, `PointTool`, `RectangleTool`, `SegmentTool`
31+
* Internal package reorganization: moved icons to `plotpy/data/icons` folder

0 commit comments

Comments
 (0)