Plotpy

Latest version: v2.7.0

Safety actively analyzes 688554 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 9

3.0.0

Possible API compatibility issues:

* Added support for PyQt5 (removed old-style signals)
* Replaced `PyQwt` dependency by the new `python-qwt` package (pure Python reimplementation of the Qwt6 C++ library)
* Removed "curvetype" feature (Yfx, Xfy) which is no longer supported in Qwt6
* Removed curve "fitted" option which is not supported in `qwt`.

Bug fixes:

* scaler.cpp: fixed destination rectangle ValueError test (was continuing execution instead of returning immediately)
* Fixed Issue 4: mingw-w64's _isnan function crash
* Fixed Issue 38: error when quitting "transform.py" on Python 3
* Fixed Issue 19: added all qthelpers.create_action kwargs to plot.PlotManager method
* Fixed Issue 21: Baseplot captured mouseDoubleClickEvent for whole plot area instead of just the axis area
* Fixed Issue 22: added support for int64/uint64 images
* Fixed Issue 24: Item list widget was loosing names of curves
* Fixed Issue 33: update color map axis when active image item has changed
* Fixed Issue 32: show cross sections only for *visible* image items
* Fixed Issue 34: editing any axis (mouse double-click) made the color axis vanish
* Fixed Issue 34: editing color axis parameters should not allowed (not supported) --> the user may change those parameters through the image item properties dialog box
* Fixed Issue 31: added option to sync cross section scales to main plot
* Fixed Issue 30: make.xyimage now accepts lists or tuples for `x` and `y` arguments
* Fixed Issue 26: ImageItem.get_lut_range_max() throwed ValueError
* Fixed Issue 27: X-cross section was not working when image Y-axis was not reversed
* assemble_imageitems: assemble images taking into account the Z-order
* Cross sections: adding image intersections instead of picking one layer only
* Fixed Issue 42: update tools status after registering all curve/image tools
* Fixed Issue 16: ImagePlot/rectangular zoom was ignoring aspect ratio
* Fixed Issue 43: install_requires Pillow instead of PIL
* Fixed Issue 46 (`guiqwt.io.imread`): fixed support for PNG images with transparency palette (Pillow)
* Images with integers: avoid overflows when computing LUT
* Fixed Issue 50: 16-bit images were saved (io.imwrite) using the wrong PIL mode

2.7.0

Supported versions of Python have been updated (drop support for Python 3.8, add support for Python 3.13):

* PlotPy < 2.7.0: Python 3.8, 3.9, 3.10, 3.11 and 3.12
* PlotPy >= 2.7.0: Python 3.9, 3.10, 3.11, 3.12 and 3.13

Other dependencies have been updated:

* Updated versions to those available at the time of the release of the oldest supported Python version (3.9)
* Exception: Cython 3.0 is required for Python 3.13

đŸ’Ĩ New features / Enhancements:

* Added `AnnotatedPolygon` annotation to items
* Added `make.annotated_polygon` function to `plotpy.builder` module
* Customization of annotation information:
* Added `info_callback` argument to all annotation class constructors
* Added `set_info_callback` method to all annotation classes
* The `info_callback` is a function that takes the annotation object and returns a string with the information to display
* Default `info_callback` is redirected to the `get_infos` method of the annotation object (this makes the feature backward compatible)

🛠ī¸ Bug fixes:

* Fixed `pydicom` support: use `dcmread` instead of `read_file` to read DICOM files

2.6.3

đŸ§¯ In this release, test coverage is 79%.

🛠ī¸ Bug fixes:

* [Issue 25](https://github.com/PlotPyStack/PlotPy/issues/25) - `OverflowError` with Contrast Adjustment panel for constant images
* When updating image parameters (`ImageParam`) from the associated item object:
* If `xmin`, `xmax`, `ymin`, `ymax` attributes are not yet set (i.e. `None`), do not update them with the image data bounds
* Previous behavior was to update them with the image data bounds, which was leading to breaking the automatic bounds update when the image data is updated
* [Issue 24](https://github.com/PlotPyStack/PlotPy/issues/24) - Colormap: side effect on image axes when changing the colormap
* [Issue 23](https://github.com/PlotPyStack/PlotPy/issues/23) - Windows: Image `_scaler` engine performance regression
* PySide6 compatibility issues:
* Fixed deprecated call to `QMouseEvent` in `tests/unit/utils.py`
* Added workaround for `QPolygonF` shape point slicing
* [Issue 21](https://github.com/PlotPyStack/PlotPy/issues/21) - PySide6 on Linux: segfault in test_colormap_editor.py
* Fixed `sliderMoved` signal connection in `ColorMapEditor`
* Fixed `AssertionError` in test_rect_zoom.py (Linux, Python 3.12, PyQt6)
* Fixed typing issues in `plotpy.events` module:
* Event objects were not properly typed (`QtCore.QEvent` instead of `QtGui.QMouseEvent`)
* Event position arguments were not properly typed (`QtCore.QPoint` instead of `QtCore.QPointF`)
* Fix NumPy `FutureWarning: Format strings passed to MaskedConstant are ignored [...]` when displaying masked pixel coordinates

2.6.2

đŸ’Ĩ New features / Enhancements:

* Added Wheel packages for all major platforms on PyPI:
* Windows (32/64bits), MacOS, Linux
* Python 3.8 to 3.12

🛠ī¸ Bug fixes:

* Fixed color theme support (dark/light mode), leveraging the new `guidata` V3.6 feature

2.6.1

ℹī¸ Release V2.6.0 was a fugitive release that was replaced by V2.6.1 due to a critical bug in the segment line cross section computation for masked images.

đŸ’Ĩ New features / Enhancements:

* Added support for color theme change at execution (relies on guidata V3.6)
* Changed strategy for default plot widget size:
* No default size is applied to the plot widget anymore (before, the default size was 800x600 pixels)
* Added parameter `size` to `PlotDialog`, `PlotWindow` classes, and `make.dialog`, `make.window` functions to set the initial size of the plot widget

🛠ī¸ Bug fixes:

* Fixed segment line cross section computation for masked images:
* Avoided warning message when encountering masked values in the image data
* Replacing masked values by NaNs when computing the segment line cross section (as before, but explicitely, to avoid the warning message)

2.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.plot` module just to get the `PlotOptions` or `BasePlotOptions` classes
* All classes (and a few functions) that used to take an `options` argument as a `BasePlotOptions` or `PlotOptions` instance now also accept a dictionary argument with the same keys as the `BasePlotOptions` or `PlotOptions` class attributes, and the same values as the corresponding attributes
* This concerns the following classes and functions:
* `plotpy.plot.BasePlot`
* `plotpy.plot.PlotWidget`
* `plotpy.plot.PlotDialog`
* `plotpy.plot.PlotWindow`
* `plotpy.plot.SubPlotWidget`
* `plotpy.plot.SyncPlotWindow`
* `plotpy.tools.RotateCropTool`
* `plotpy.widgets.fit.FitDialog`
* `plotpy.widgets.fliprotate.FlipRotateDialog`
* `plotpy.widgets.rotatecrop.RotateCropDialog`
* `plotpy.widgets.selectdialog.SelectDialog`
* `plotpy.widgets.selectdialog.select_with_shape_tool`

* 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_data` method)
* 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 `LockLUTRangeTool` has 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_update` for an example of usage of the new option and tool

* Added missing `set_style` method to `XRangeSelection` class: this method is used to set the style of the range selection item from configuration options

🛠ī¸ Bug fixes:

* [Issue 19](https://github.com/PlotPyStack/PlotPy/issues/19) - Fix `distutils` deprecation in setup.py: replaced `distutils.core` by `setuptools` in 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.tools` module:
* Some tools in `plotpy.tools` subpackage were importing the `plotpy.plot` module, which was importing the `plotpy.tools` module, causing a cyclic import issue
* This is now fixed by introducing new constants for axis IDs in the `plotpy.constants` module, and using them everywhere in the code, thus avoiding to import the `plotpy.plot` module just to get the axis IDs
* 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 `activate` method 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 `activate` method is called only once when triggering an interactive tool

Page 5 of 9

Š 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.