Releases: PlotPyStack/PythonQwt
Releases · PlotPyStack/PythonQwt
v0.14.2
Version 0.14.2
- Merged PR #89: fixed call to
ScaleEngine.autoScale
inQwtPlot.updateAxes
(returned values were not used) - thanks to @nicoddemus - Merged PR #90: updated
QwtLinearScaleEngine.autoScale
method implementation to the latest Qwt version - thanks to @nicoddemus
v0.14.1
Version 0.14.1
- Handled
RuntimeError
when runningtest_eventfilter.py
on Ubuntu 22.04 (Python 3.12, PyQt5) - Fixed
ResourceWarning: unclosed file
intest_cpudemo.py
(purely test issue) - Fixed segmentation fault in
test_multidemo.py
(purely test issue, related to test utility moduleqwt.tests.utils
) - Update GitHub actions to use the latest versions of actions/checkout, actions/setup-python, ...
v0.14.0
Dropped support for Python 3.8
v0.12.7
- Fixed random crashes (segfaults) on Linux related to conflicts between Qt and Python reference counting mechanisms:
- This issue was only happening on Linux, and only with Python 3.12, probably due to changes in Python garbage collector behavior introduced in Python 3.12. Moreover, it was only triggered with an extensive test suite, such as the one provided by the
PlotPy
project. - The solution was to derive all private classes containing Qt objects from
QObject
instead ofobject
, in order to let Qt manage the reference counting of its objects. - This change was applied to the following classes:
QwtLinearColorMap_PrivateData
QwtColumnSymbol_PrivateData
QwtDynGridLayout_PrivateData
QwtGraphic_PrivateData
QwtLegendLabel_PrivateData
QwtNullPaintDevice_PrivateData
QwtPlotCanvas_PrivateData
QwtPlotDirectPainter_PrivateData
QwtPlotGrid_PrivateData
QwtPlotLayout_PrivateData
QwtPlotMarker_PrivateData
QwtPlotRenderer_PrivateData
QwtPlot_PrivateData
QwtAbstractScaleDraw_PrivateData
QwtScaleDraw_PrivateData
QwtScaleWidget_PrivateData
QwtSymbol_PrivateData
QwtText_PrivateData
- This issue was only happening on Linux, and only with Python 3.12, probably due to changes in Python garbage collector behavior introduced in Python 3.12. Moreover, it was only triggered with an extensive test suite, such as the one provided by the
- Removed deprecated code regarding PyQt4 compatibility
v0.12.6
Version 0.12.6
-
Fixed random crashes (segfaults) on Linux related to Qt objects stored in cache data
structures (QwtText
andQwtSymbol
) -
Test suite can simply be run with
pytest
and specific configuration (conftest.py
)
will be taken into account (previously, the test suite has to be run with
pytest qwt
in order to be successfully configured)
v0.12.5
Version 0.12.5
- Add support for NumPy 2.0:
- Use
numpy.asarray
instead ofnumpy.array(..., copy=False)
- Update requirements to remove the NumPy version upper bound constraint
- Use
Version 0.12.4
- Fixed segmentation fault issue reported in the
PlotPy
project:- See PlotPy's Issue #13 for the
original issue. - The issue was caused by the
QwtSymbol
class constructor, and more specifically
by its private data object, which instanciated an emptyQtPainterPath
object,
causing a segmentation fault on Linux, Python 3.12 and PyQt5.
- See PlotPy's Issue #13 for the
Version 0.12.3
- Fixed
Fatal Python error
issue reported in thePlotPy
project:- See PlotPy's Issue #11 for the
original issue, even if the problem is not directly pointed out in the issue
comments. - The issue was caused by the
QwtAbstractScaleDraw
cache mechanism, which was
keeping references toQSizeF
objects that were deleted by the garbage collector
at some point. This was causing a segmentation fault, but only on Linux, and
only when executing thePlotPy
test suite in a specific order. - Thanks to @yuzibo for helping to reproduce the issue and providing a test case,
that is thePlotPy
Debian package build process.
- See PlotPy's Issue #11 for the
Version 0.12.2
For this release, test coverage is 72%.
- Preparing for NumPy V2 compatibility: this is a work in progress, as NumPy V2 is not
yet released. In the meantime, requirements have been updated to exclude NumPy V2. - Fix
QwtPlot.axisInterval
(was raisingAttributeError
) - Removed unnecessary dependencies (pytest-qt, pytest-cov)
- Moved
conftest.py
to project root - Project code formatting: using
ruff
instead ofblack
andisort
Version 0.12.1
- Fixed
ColorStops.stops
method (was returning a copy of the list of stops instead
of the list itself)
Version 0.12.0
- 30% performance improvement (measured by
qwt.tests.test_loadtest
) by optimizing
theQwtAbstractScaleDraw.tickLabel
method:- Suppressed an unnecessary call to
QFont.textSize
(which can be quite slow) - Cached the text size with the label
QwtText
object
- Suppressed an unnecessary call to
- Added support for margins in
QwtPlot
(see Issue #82):- Default margins are set to 0.05 (5% of the plot area) at each side of the plot
- Margins are adjustable for each plot axis using
QwtPlot.setAxisMargin
(and
QwtPlot.axisMargin
to get the current value)
- Added an additional margin to the left of ticks labels: this margin is set to one
character width, to avoid the labels to be truncated while keeping a tight layout - Slighly improved the new flat style (see V0.7.0) by selecting default fonts
- API breaking change:
QwtLinearColorMap.colorStops
now returns a list ofColorStop
objects instead of the list of stop values
v0.12.4
Version 0.12.4
- Fixed segmentation fault issue reported in the
PlotPy
project:- See PlotPy's Issue #13 for the
original issue. - The issue was caused by the
QwtSymbol
class constructor, and more specifically
by its private data object, which instanciated an emptyQtPainterPath
object,
causing a segmentation fault on Linux, Python 3.12 and PyQt5.
- See PlotPy's Issue #13 for the
Version 0.12.3
- Fixed
Fatal Python error
issue reported in thePlotPy
project:- See PlotPy's Issue #11 for the
original issue, even if the problem is not directly pointed out in the issue
comments. - The issue was caused by the
QwtAbstractScaleDraw
cache mechanism, which was
keeping references toQSizeF
objects that were deleted by the garbage collector
at some point. This was causing a segmentation fault, but only on Linux, and
only when executing thePlotPy
test suite in a specific order. - Thanks to @yuzibo for helping to reproduce the issue and providing a test case,
that is thePlotPy
Debian package build process.
- See PlotPy's Issue #11 for the
Version 0.12.2
For this release, test coverage is 72%.
- Preparing for NumPy V2 compatibility: this is a work in progress, as NumPy V2 is not
yet released. In the meantime, requirements have been updated to exclude NumPy V2. - Fix
QwtPlot.axisInterval
(was raisingAttributeError
) - Removed unnecessary dependencies (pytest-qt, pytest-cov)
- Moved
conftest.py
to project root - Project code formatting: using
ruff
instead ofblack
andisort
Version 0.12.1
- Fixed
ColorStops.stops
method (was returning a copy of the list of stops instead
of the list itself)
Version 0.12.0
- 30% performance improvement (measured by
qwt.tests.test_loadtest
) by optimizing
theQwtAbstractScaleDraw.tickLabel
method:- Suppressed an unnecessary call to
QFont.textSize
(which can be quite slow) - Cached the text size with the label
QwtText
object
- Suppressed an unnecessary call to
- Added support for margins in
QwtPlot
(see Issue #82):- Default margins are set to 0.05 (5% of the plot area) at each side of the plot
- Margins are adjustable for each plot axis using
QwtPlot.setAxisMargin
(and
QwtPlot.axisMargin
to get the current value)
- Added an additional margin to the left of ticks labels: this margin is set to one
character width, to avoid the labels to be truncated while keeping a tight layout - Slighly improved the new flat style (see V0.7.0) by selecting default fonts
- API breaking change:
QwtLinearColorMap.colorStops
now returns a list ofColorStop
objects instead of the list of stop values
v0.12.3
Version 0.12.3
- Fixed
Fatal Python error
issue reported in thePlotPy
project:- See PlotPy's Issue #11 for the
original issue, even if the problem is not directly pointed out in the issue
comments. - The issue was caused by the
QwtAbstractScaleDraw
cache mechanism, which was
keeping references toQSizeF
objects that were deleted by the garbage collector
at some point. This was causing a segmentation fault, but only on Linux, and
only when executing thePlotPy
test suite in a specific order. - Thanks to @yuzibo for helping to reproduce the issue and providing a test case,
that is thePlotPy
Debian package build process.
- See PlotPy's Issue #11 for the
Version 0.12.2
For this release, test coverage is 72%.
- Preparing for NumPy V2 compatibility: this is a work in progress, as NumPy V2 is not
yet released. In the meantime, requirements have been updated to exclude NumPy V2. - Fix
QwtPlot.axisInterval
(was raisingAttributeError
) - Removed unnecessary dependencies (pytest-qt, pytest-cov)
- Moved
conftest.py
to project root - Project code formatting: using
ruff
instead ofblack
andisort
Version 0.12.1
- Fixed
ColorStops.stops
method (was returning a copy of the list of stops instead
of the list itself)
Version 0.12.0
- 30% performance improvement (measured by
qwt.tests.test_loadtest
) by optimizing
theQwtAbstractScaleDraw.tickLabel
method:- Suppressed an unnecessary call to
QFont.textSize
(which can be quite slow) - Cached the text size with the label
QwtText
object
- Suppressed an unnecessary call to
- Added support for margins in
QwtPlot
(see Issue #82):- Default margins are set to 0.05 (5% of the plot area) at each side of the plot
- Margins are adjustable for each plot axis using
QwtPlot.setAxisMargin
(and
QwtPlot.axisMargin
to get the current value)
- Added an additional margin to the left of ticks labels: this margin is set to one
character width, to avoid the labels to be truncated while keeping a tight layout - Slighly improved the new flat style (see V0.7.0) by selecting default fonts
- API breaking change:
QwtLinearColorMap.colorStops
now returns a list ofColorStop
objects instead of the list of stop values
v0.12.2
Version 0.12.2
For this release, test coverage is 72%.
- Preparing for NumPy V2 compatibility: this is a work in progress, as NumPy V2 is not
yet released. In the meantime, requirements have been updated to exclude NumPy V2. - Fix
QwtPlot.axisInterval
(was raisingAttributeError
) - Removed unnecessary dependencies (pytest-qt, pytest-cov)
- Moved
conftest.py
to project root - Project code formatting: using
ruff
instead ofblack
andisort
v0.12.1
Version 0.12.1
- Fixed
ColorStops.stops
method (was returning a copy of the list of stops instead of the list itself)