Skip to content

Releases: PlotPyStack/PythonQwt

v0.16.1

15 Jun 15:01
Immutable release. Only release title and notes can be modified.
v0.16.1
64a9401

Choose a tag to compare

Version 0.16.1

Bug fixes

  • Fixed Issue #107: corrected a Windows crash/access violation that could occur in long-running sessions creating and rendering large amounts of data, due to GDI handle exhaustion caused by object lifetime and cache growth
  • Preserved the rendering performance improvements introduced in 0.16.0 while restoring safer Qt object ownership for internal text/scale-draw private data and adding defensive limits to font-metrics caches

v0.16.0

03 May 11:00
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Performance

  • Major performance optimizations addressing Issue #93 (rendering performance degradation with Qt 6, also benefitting Qt 5):
    • QwtText: removed unnecessary QObject inheritance and added a font key cache to avoid expensive QFont hashing on every text rendering operation
    • QwtText: cached Qt alignment and text format flags as plain integers to bypass PyQt6 enum overhead in hot paths
    • QwtText: enabled font key caching fast path for Qt 6, kept disabled for Qt 5 to preserve consistent text rendering
    • QwtGraphic and QwtPainterCommand: cached Qt flags as integers to reduce per-command overhead, especially under PyQt6
    • QwtScaleDraw, QwtScaleEngine, QwtScaleMap and QwtScaleDiv: micro-optimizations on the tick computation and coordinate transform code paths
  • Added benchmarking and visual regression scripts under scripts/ (bench_qt.ps1, bench_plotpy_loadtest.py, profile_loadtest.py, lineprofile_loadtest.py, capture_screenshots.py, diff_screenshots.py) to measure and validate rendering performance and correctness

Bug fixes

  • Merged PR #105: fixed legend icon being rendered incorrectly - thanks to @Adrian-B-Moreira
  • Fixed QPaintDevice warnings on DevicePixelRatio and DevicePixelRatioScaled metrics in QwtNullPaintDevice
  • Fixed integer division in QwtScaleEngine so that medium ticks are actually produced (previously, the medium tick step was truncated to zero in some configurations)
  • Fixed QwtScaleMap rectangle transform and degenerate scale handling (when source or destination interval has zero width)

Other changes

  • Internal refactor: removed unnecessary QObject inheritance from QwtText (QwtText instances are no longer QObject subclasses; this is an internal change with no impact on the public plotting API, but downstream code relying on Qt signals/slots on QwtText instances should be adapted)
  • Development workflow: replaced legacy .bat scripts with a unified scripts/run_with_env.py environment loader, refactored VS Code tasks, added coverage tasks and CI gating of PyPI deployment on the test suite passing
  • Documentation: updated README, Sphinx documentation, dependencies and added AI coding agent instructions

v0.15.0

24 Oct 14:11
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Version 0.15.0

  • Added support for QwtDateTimeScaleDraw and QwtDateTimeScaleEngine for datetime axis support (see QwtDateTimeScaleDraw and QwtDateTimeScaleEngine classes in the qwt module)
  • Improved font rendering for rotated text in QwtPlainTextEngine.draw method: disabled font hinting to avoid character misalignment in rotated text

v0.14.6

14 Sep 12:15

Choose a tag to compare

Version 0.14.6

  • Fixed Issue #100 - TypeError in QwtSymbol.drawSymbol method due to outdated renderSymbols call
  • Fixed Issue #101 - RuntimeWarning: overflow encountered in cast when plotting numpy.float32 curve data
  • Merged PR #103: [FIX] wrong handling of border.rectList with PySide6 backend - thanks to @martinschwinzerl

v0.14.5

12 Apr 08:39

Choose a tag to compare

Version 0.14.5

  • Merged PR #98: Fix legend still being visible after removed
  • Merged PR #99: Fix QRectF to QRect cast in QwtPainterClass.drawBackground

v0.14.4

22 Jan 13:56

Choose a tag to compare

Version 0.14.4

  • Fixed canvas rectangle type in drawItems method call in QwtPlot.drawCanvas (was causing a hard crash when printing to PDF a canvas with upstream PlotPy project)

v0.14.3

12 Jan 13:47

Choose a tag to compare

Version 0.14.3

  • Fixed Issue #94 - Different logarithmic scale behavior when compared to Qwt
  • Merged PR #91: Fix: legend now showing up when enabled later - thanks to @nicoddemus
  • Removed QwtPlotItem.setIcon and QwtPlotItem.icon methods (introduced in 0.9.0 but not used in PythonQwt)

v0.14.2

10 Dec 16:57

Choose a tag to compare

Version 0.14.2

  • Merged PR #89: fixed call to ScaleEngine.autoScale in QwtPlot.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

07 Nov 11:02

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

Choose a tag to compare

Dropped support for Python 3.8