pyqtgraph-0.14.0
What's Changed
Highlights
- implement cuda OpenGL interops by @pijyoi in #3379
- PColorMeshItem: implement opengl rendering by @pijyoi in #3090
- Port PlotCurveItem experimental opengl codepath to shaders by @pijyoi in #3055
- Remove MetaArray, MultiPlotItem and MultiPlotWidget by @j9ac9k in #3051
- Add Boxplot feature by @noonchen in #2562
- Unvendor very old colorama by @j9ac9k in #3064
- implement fill for connect="finite" by @pijyoi in #3071
- Add legend double-click and legend sample click signals. by @kevinanewman in #3111
- pcmi: add support for OpenGL ES 3.0 by @pijyoi in #3094
- Bump min numpy to 1.25+ by @j9ac9k in #3241
- Create FUNDING.yml by @j9ac9k in #3034
API/Behavior Changes and Additions
- GLMeshItem: allow ubyte color buffers by @pijyoi in #3231
- Allow OpenGL without enableExperimental by @pijyoi in #3277
- Do away with Parameter deprecation by @j9ac9k in #3286
- Transform3D.map should return the type of obj passed in by @outofculture in #3050
- Remove MetaArray, MultiPlotItem and MultiPlotWidget by @j9ac9k in #3051
- Remove canvas module by @j9ac9k in #3056
- implement fill for connect="finite" by @pijyoi in #3071
- Raise ParseError on duplicate keys in configfile by @outofculture in #3121
- Add legend double-click and legend sample click signals. by @kevinanewman in #3111
- Parameter Tree: ListParameter: Add deprecation warning when values is present. by @Tillsten in #3160
- allow conditional siPrefixing of axis labels by @outofculture in #3136
- PlotItem.autoBtnClicked to emit PlotItem.sigRangeChangedManually by @tikuma-lsuhsc in #3049
- add setSymbol method by @kevinanewman in #3180
- Option to execute repl commands in a non-GUI thread by @outofculture in #3130
- AxisItem: Allow hiding minor ticks by @2xB in #3318
- allow returned camera params to be set back by @pijyoi in #3408
- Plot option to subtract mean value from all samples by @wetzeld in #3240
- Locale aware spinbox by @oyvindlr in #3414
- Parameter: define create as a classmethod by @seb5g in #3403
- Add overlay grid option to GLSurfacePlotItem by @swvanbuuren in #3349
- Alignment option for GLTextItem by @swvanbuuren in #3314
Bug Fixes
- Correctly handle SI-prefixes for nonlinear units by @oyvindlr in #3394
- fix aspect-locked zoom with mouse-drag while right-button pressed by @pijyoi in #3354
- fix: isnan is not available in OpenGL 2.1 nor OpenGL ES 2.0 by @pijyoi in #3248
- fix: GL_POINT_SPRITE was not enabled for NoProfile by @pijyoi in #3236
- Fix LinearRegionItem mouseDragEvent by @dingo9 in #3168
- render comparison: resize before show by @pijyoi in #3415
- fix: GLLinePlotItem uploading vbo perpetually by @pijyoi in #3297
- Various OpenGL fixes by @pijyoi in #3260
- Support downsampling of image data with NaNs by @nup002 in #3061
- Catch SystemError During Signal.disconnect() by @j9ac9k in #3021
- RawImageGLWidget: update uploaded state on cleanup by @pijyoi in #3043
- enable blending to take into account alpha transparency by @pijyoi in #3045
- Fixes: Error when using FFT on data with one point by @Silas-K in #3070
- Fix ViewBox wheel event propagation by @tikuma-lsuhsc in #3052
- bugfix: PlotCurveItem OpenGL didn't invalidate render_cache on cleanup by @pijyoi in #3089
- Format DateAxisItem ticks in different timezones correctly by @Gatsik in #3083
- fix ComboBox.items() by @MrHenning in #3113
- connect darkMode slots only once by @pijyoi in #3145
- Minor fixes for a memory debugging tool by @campagnola in #3158
- ParseError line numbers should account for empty lines by @outofculture in #3131
- workaround PySide QByteArray leak on conda builds by @pijyoi in #3268
- Fix ConsoleWidget ReplWidget.write() always scrolling to bottom (
scrollToBottomnot working) by @jack-mil in #3140 - initialize the pressPos attribute with default value to prevent error by @seb5g in #3177
- Apoptose dock area when temporary window is closed by @UsYer in #3134
- Fix bug in PlotItem.setAxisItem when called befor scene is set by @tblum in #3182
- Emit sigRegionChanged only once for LinearRegionItem by @jdranczewski in #3291
- Removes GraphicsScene.mouseMoveEvent duplicate events by @boringbyte in #3189
- Fix 'GridItem.generatePicture' for cases of invalid size by @bbc131 in #3284
- Fix scaling with locked aspect by @a17sol in #3100
- Update removeItem() by @psyuktha in #3167
- GLLinePlotItem: restore changes to state by @pijyoi in #3223
- PlotDataItem setData() listOfDicts fix? by @kevinanewman in #3190
- To align mark and the label vertically in a Legend by @jiban in #3206
- Fix bug causing DateTimeAxis to not display tick labels #3185 by @tblum in #3187
- Update syntax.py to correctly colorize commented code by @kevinanewman in #3339
- Fix bug preventing console showing more than one uncaught exception by @campagnola in #3309
- fixed the issue where x and y column would be added regardless of the columnMode while exporting to csv by @virgile-hernicot in #3215
- GraphicsLayout: Fix removeItem() regression by @dnadlinger in #3226
- fix GLIsosurface overflow warning on numpy 2 by @pijyoi in #3235
- Fix parameter item compare unpack order by @j9ac9k in #3264
- Fix recarray support in PlotDataItem by @ixjlyons in #3278
- Two minor corrections in flowchart and debug by @campagnola in #3399
- Fix exception when AxisItem is initialized with text argument (fixes #3410) by @simonkeys in #3412
- ensure comparison returns bool instead of np.bool in TableWidget by @pijyoi in #3333
- fix: blockSignal=True in Parameter.setValue() by @cogsy23 in #3305
Performance Improvements
- invalidate nan locations when downsampling image by @pijyoi in #3368
- ImageItem: implement persistent default autolevels by @pijyoi in #2883
- finer grained VBO upload by @pijyoi in #3298
- Skip nan values in mesh by @sldesnoo-Delft in #3114
- Fixed bug that significantly degraded zooming performance for line plots by @oyvindlr in #3330
- use native c++ construction of QPixmap from QImage by @pijyoi in #3208
- implement cuda OpenGL interops by @pijyoi in #3379
- Port PlotCurveItem experimental opengl codepath to shaders by @pijyoi in #3055
- PlotCurveItem: implement OpenGL curve fill by @pijyoi in #3068
- PColorMeshItem: implement opengl rendering by @pijyoi in #3090
- pcmi: add support for OpenGL ES 3.0 by @pijyoi in #3094
- De-ancient-ify OpenGL shaders by @pijyoi in #3109
- prevent grid lines from getting mouse events by @pijyoi in #3152
- Make PlotCurveItem and PColorMeshItem work in Core Profile by @pijyoi in #3257
- Lazy evaluation of mkColor error string by @jdranczewski in #3292
- Make shaders in shaders.py run on macOS OpenGL 4.1 Core by @pijyoi in #3256
- ViewBox: Only update auto-range before painting. by @agausmann in #2947
- create a default VAO if using Core profile by @pijyoi in #3246
- GLVolumeItem: calculate camera pos using ModelView matrix by @pijyoi in #3262
- don't relink shader program where it is not needed by @pijyoi in #3295
- Adding support for connect PlotItem connect vector during view clipping and downsampling by @tblum in #3161
Testing
- test image formats outside of ImageItem by @pijyoi in #3014
- Remove now unneeded test skip conditions, use packaging library for version comparison. by @j9ac9k in #3042
- Add coverage reporting by @j9ac9k in #3054
- Use packaging library for version comparison by @j9ac9k in #3127
Documentation
- Add Qtimer, multi threading and multiprocessing to docs by @kadheer in #3087
- Substantially upgrade ImageItem docs by @j9ac9k in #3028
- Overhaul PlotDataItem documentation by @j9ac9k in #3039
- Documentation text review for PlotDataItem by @NilsNemitz in #3057
- Convert PlotItem and AxisItem to use numpydoc Docstring Style by @j9ac9k in #3261
- Do upgrade to CONTRIBUTING.md, it's been a while by @j9ac9k in #3058
- Bump sphinx-design from 0.5.0 to 0.6.0 in /doc by @dependabot[bot] in #3032
- Bump sphinx-design from 0.6.0 to 0.6.1 in /doc by @dependabot[bot] in #3119
- Update to pydata-sphinx-theme 0.15.4 by @j9ac9k in #3079
- Bump pydata-sphinx-theme from 0.15.4 to 0.16.0 in /doc by @dependabot[bot] in #3175
- Upgrade to PyData-Sphinx-Theme 0.16.1 by @j9ac9k in #3258
- Bump sphinx from 7.3.7 to 7.4.6 in /doc by @dependabot[bot] in #3104
- Bump sphinx from 7.4.6 to 7.4.7 in /doc by @dependabot[bot] in #3106
- Bump sphinxcontrib-images from 0.9.4 to 1.0.1 in /doc by @dependabot[bot] in #3325
Misc
- replace stencil test with scissor test by @pijyoi in #3395
- ColorMapMenu: add new matplotlib colormaps by @pijyoi in #3304
- Use filtfilt for bidirectional filtering in Flowchart by @MxFxM in #3237
- Added type annotations to GraphicsWidget by @RushabhMehta2005 in #3178
- adapt to changes in QPainterPathPrivate in Qt 6.10 by @pijyoi in #3370
- Update Flowchart.py by @ghylander in #3060
- Update ASV config to use paramers by @j9ac9k in #2776
- Fix libegl1 not found by @j9ac9k in #3228
- Fix Comment Error in examples/dockarea.py by @ChenQiang-AISS in #3216
- pcmi opengl: discard nan fragments by @pijyoi in #3170
- Annotate slots with
QtCore.Slotby @bersbersbers in #3123 - Annotate ViewBox slots by @moritz-h in #3380
- GraphicsItem: don't override Qt methods by @pijyoi in #3359
- pyside6: don't take QByteArray memoryview too by @pijyoi in #3270
- Probe QByteArray leak at runtime by @pijyoi in #3274
- REPL fonts should be consistently monospaced by @kevinanewman in #3183
- refactor getting of OpenGLFunctions by @pijyoi in #3095
- Create FUNDING.yml by @j9ac9k in #3034
- remove numba for rescaleData by @pijyoi in #3025
- RawImageGLWidget: implement using QOpenGLTextureBlitter by @pijyoi in #3031
- Unvendor very old colorama by @j9ac9k in #3064
- don't draw non-finite pairs by @pijyoi in #3082
- fix: minor improvements to the visibility of the colormap button by @wakonig in #3179
- assume matplotlib supports Qt6 by @pijyoi in #3205
- Use Monospace font in Console Widget CmdInput by @jack-mil in #3137
- fix variable name typo by @pijyoi in #3338
- CI Updates by @j9ac9k in #3016
New Contributors
- @ghylander made their first contribution in #3060
- @soulsyrup made their first contribution in #3067
- @Silas-K made their first contribution in #3070
- @tikuma-lsuhsc made their first contribution in #3052
- @Gatsik made their first contribution in #3083
- @kadheer made their first contribution in #3087
- @nup002 made their first contribution in #3061
- @MrHenning made their first contribution in #3113
- @Tillsten made their first contribution in #3160
- @jack-mil made their first contribution in #3140
- @sldesnoo-Delft made their first contribution in #3114
- @a17sol made their first contribution in #3100
- @psyuktha made their first contribution in #3167
- @RushabhMehta2005 made their first contribution in #3178
- @wakonig made their first contribution in #3179
- @seb5g made their first contribution in #3177
- @ChenQiang-AISS made their first contribution in #3216
- @jiban made their first contribution in #3206
- @tblum made their first contribution in #3182
- @MxFxM made their first contribution in #3237
- @boringbyte made their first contribution in #3189
- @wetzeld made their first contribution in #3240
- @virgile-hernicot made their first contribution in #3215
- @agausmann made their first contribution in #2947
- @jdranczewski made their first contribution in #3292
- @oyvindlr made their first contribution in #3330
- @simonkeys made their first contribution in #3412
- @wyzula-jan made their first contribution in #3409
- @moritz-h made their first contribution in #3380
- @cogsy23 made their first contribution in #3305
Full Changelog: pyqtgraph-0.13.7...pyqtgraph-0.14.0