Skip to content

Releases: PlotPyStack/PythonQwt

v0.14.1

07 Nov 11:02
Compare
Choose a tag to compare

Version 0.14.1

  • Handled RuntimeError when running test_eventfilter.py on Ubuntu 22.04 (Python 3.12, PyQt5)
  • Fixed ResourceWarning: unclosed file in test_cpudemo.py (purely test issue)
  • Fixed segmentation fault in test_multidemo.py (purely test issue, related to test utility module qwt.tests.utils)
  • Update GitHub actions to use the latest versions of actions/checkout, actions/setup-python, ...

v0.14.0

06 Nov 12:09
Compare
Choose a tag to compare

Dropped support for Python 3.8

v0.12.7

01 Aug 10:13
Compare
Choose a tag to compare
  • 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 of object, 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
  • Removed deprecated code regarding PyQt4 compatibility

v0.12.6

06 Jul 12:12
Compare
Choose a tag to compare

Version 0.12.6

  • Fixed random crashes (segfaults) on Linux related to Qt objects stored in cache data
    structures (QwtText and QwtSymbol)

  • 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

20 Jun 16:20
Compare
Choose a tag to compare

Version 0.12.5

  • Add support for NumPy 2.0:
    • Use numpy.asarray instead of numpy.array(..., copy=False)
    • Update requirements to remove the NumPy version upper bound constraint

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 empty QtPainterPath object,
      causing a segmentation fault on Linux, Python 3.12 and PyQt5.

Version 0.12.3

  • Fixed Fatal Python error issue reported in the PlotPy 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 to QSizeF 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 the PlotPy test suite in a specific order.
    • Thanks to @yuzibo for helping to reproduce the issue and providing a test case,
      that is the PlotPy Debian package build process.

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 raising AttributeError)
  • Removed unnecessary dependencies (pytest-qt, pytest-cov)
  • Moved conftest.py to project root
  • Project code formatting: using ruff instead of black and isort

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
    the QwtAbstractScaleDraw.tickLabel method:
    • Suppressed an unnecessary call to QFont.textSize (which can be quite slow)
    • Cached the text size with the label QwtText object
  • 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 of ColorStop
    objects instead of the list of stop values

v0.12.4

19 Jun 16:28
Compare
Choose a tag to compare

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 empty QtPainterPath object,
      causing a segmentation fault on Linux, Python 3.12 and PyQt5.

Version 0.12.3

  • Fixed Fatal Python error issue reported in the PlotPy 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 to QSizeF 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 the PlotPy test suite in a specific order.
    • Thanks to @yuzibo for helping to reproduce the issue and providing a test case,
      that is the PlotPy Debian package build process.

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 raising AttributeError)
  • Removed unnecessary dependencies (pytest-qt, pytest-cov)
  • Moved conftest.py to project root
  • Project code formatting: using ruff instead of black and isort

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
    the QwtAbstractScaleDraw.tickLabel method:
    • Suppressed an unnecessary call to QFont.textSize (which can be quite slow)
    • Cached the text size with the label QwtText object
  • 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 of ColorStop
    objects instead of the list of stop values

v0.12.3

19 Jun 12:56
Compare
Choose a tag to compare

Version 0.12.3

  • Fixed Fatal Python error issue reported in the PlotPy 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 to QSizeF 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 the PlotPy test suite in a specific order.
    • Thanks to @yuzibo for helping to reproduce the issue and providing a test case,
      that is the PlotPy Debian package build process.

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 raising AttributeError)
  • Removed unnecessary dependencies (pytest-qt, pytest-cov)
  • Moved conftest.py to project root
  • Project code formatting: using ruff instead of black and isort

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
    the QwtAbstractScaleDraw.tickLabel method:
    • Suppressed an unnecessary call to QFont.textSize (which can be quite slow)
    • Cached the text size with the label QwtText object
  • 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 of ColorStop
    objects instead of the list of stop values

v0.12.2

13 Jun 08:41
Compare
Choose a tag to compare

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 raising AttributeError)
  • Removed unnecessary dependencies (pytest-qt, pytest-cov)
  • Moved conftest.py to project root
  • Project code formatting: using ruff instead of black and isort

v0.12.1

29 Feb 16:44
Compare
Choose a tag to compare

Version 0.12.1

  • Fixed ColorStops.stops method (was returning a copy of the list of stops instead of the list itself)

v0.12.0

16 Feb 10:26
Compare
Choose a tag to compare

Version 0.12.0

  • 30% performance improvement (measured by qwt.tests.test_loadtest) by optimizing
    the QwtAbstractScaleDraw.tickLabel method:
    • Suppressed an unnecessary call to QFont.textSize (which can be quite slow)
    • Cached the text size with the label QwtText object
  • 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 of ColorStop
    objects instead of the list of stop values