v2.5.1
ℹ️ Release V2.5.0 was a fugitive release that was replaced by V2.5.1 due to packaging issues.
In this release, test coverage is 79%.
💥 New features / Enhancements:
-
Alternative dictionary argument for plot options:
- This new feature was introduced in the context of the cyclic import bug fix, to avoid importing the
plotpy.plotmodule just to get thePlotOptionsorBasePlotOptionsclasses - All classes (and a few functions) that used to take an
optionsargument as aBasePlotOptionsorPlotOptionsinstance now also accept a dictionary argument with the same keys as theBasePlotOptionsorPlotOptionsclass attributes, and the same values as the corresponding attributes - This concerns the following classes and functions:
plotpy.plot.BasePlotplotpy.plot.PlotWidgetplotpy.plot.PlotDialogplotpy.plot.PlotWindowplotpy.plot.SubPlotWidgetplotpy.plot.SyncPlotWindowplotpy.tools.RotateCropToolplotpy.widgets.fit.FitDialogplotpy.widgets.fliprotate.FlipRotateDialogplotpy.widgets.rotatecrop.RotateCropDialogplotpy.widgets.selectdialog.SelectDialogplotpy.widgets.selectdialog.select_with_shape_tool
- This new feature was introduced in the context of the cyclic import bug fix, to avoid importing the
-
Added "Lock LUT range" option for image items:
- This new option is disabled by default, which matches the previous behavior: when updating an image item data, the LUT range is automatically adjusted to the new data range (if not passed as an argument to the
BaseImageItem.set_datamethod) - When enabled, the LUT range is locked and the LUT range is not adjusted when updating the image item data
- The option is available in image parameters dialog
- A new tool
LockLUTRangeToolhas been implemented to toggle the option from the plot context menu: the tool is not registered by default in the plot widget, but can be added by the host application if needed - See test script
tests.features.test_image_data_updatefor an example of usage of the new option and tool
- This new option is disabled by default, which matches the previous behavior: when updating an image item data, the LUT range is automatically adjusted to the new data range (if not passed as an argument to the
-
Added missing
set_stylemethod toXRangeSelectionclass: this method is used to set the style of the range selection item from configuration options
🛠️ Bug fixes:
- Issue #19 - Fix
distutilsdeprecation in setup.py: replaceddistutils.corebysetuptoolsin the setup.py script to avoid the deprecation warning when building the package with Python 3.10 and 3.11, and to ensure compatibility with earlier Python versions (PlotPy is already compatible with the most recent Python versions: this only concerns the build system) - Fix cyclic import in
plotpy.toolsmodule:- Some tools in
plotpy.toolssubpackage were importing theplotpy.plotmodule, which was importing theplotpy.toolsmodule, causing a cyclic import issue - This is now fixed by introducing new constants for axis IDs in the
plotpy.constantsmodule, and using them everywhere in the code, thus avoiding to import theplotpy.plotmodule just to get the axis IDs
- Some tools in
- Fix empty label in X/Y cross section plots:
- This is a regression introduced in V2.1.0
- When showing the X/Y cross section plots (using the plot context menu), an empty label was displayed at the center of each of those plots
- The label now shows "Enable a marker" as previously
- Fix historic unexpected behavior of interactive tools:
- When triggering an interactive tool (e.g. by clicking on the corresponding toolbar button), the tool
activatemethod was called twice, which was not expected, but was not causing any issue given the current implementation - However, when defining custom interactive tools, this behavior could lead to unexpected results (i.e. really executing activation actions twice)
- This is now fixed: the
activatemethod is called only once when triggering an interactive tool
- When triggering an interactive tool (e.g. by clicking on the corresponding toolbar button), the tool