pyqtgraph-0.11.1

  New Features:
    - #800 Legend for bar graphs
    - #1244 Arrow scatter symbols
    - #161 Allow hiding individulal points in scatter plot
    - #395 LegendItem display options
    - #1310 Added `Pa` to Units
    - #1310 `debug.ThreadTrace` add support for thread names
    - #117 Flow Chart Nodes now resized based on number of inputs/outputs
    - #1154 `DateAxisItem`
    - #1285 Improve control over ROI/handle pens
    - #1273 `PColorMeshItem`
    - #1397 `LegendItem` enable customization of label text size
    - #1422 Permit entry of non-finite values into float `SpinBox`
    - #1442 `TickSliderItem.allowRemote` property added
    - #1441 `Tick.removeAllowed` is now a regular property and used with `TickSliderItem`
    - #1388 Emit a signal when `GraphicsScene` `addItem` or `removeItem` methods called

  Performance enhancement:
    - #1240/#345 GLImageItem clear need update flag
    - #977 Faster computation option for pseudoscatter
    - #1297 Improve ArrowItem performance
    - #1296 Update `h5py` deps in metaarray
    - #1295 Improve TextItem performance
    - #1283 Performance improvements to arrayToQPath
    - #816 Avoid constructing shadow pens when no shadow pen is set
    - #1311 HistogramLUTItem detect trivial gradients
    - #1312 avoid extra work when setLabelAngle would have no effect
    - #1391 cache viewRect of `GraphicsItem` to reduce CPU load
    - #150 Slight speedup to ViewBox panning
    - #1420 Many ScatterPlot Improvements

  API/Behavior Change:
    - #496 Always antialias lines between gradient and region in HistogramLUTItem
    - #385 Add headWidth parameter to arrows
    - #551 fps variable on ImageView
    - #1251 Allow explict utcOffset timezone in DateAxisItem
    - #1310 Add `SignalProxy.block` for temporary disabling of signal forwarding
    - #1310 `InfiniteLine.setPos` add support for array argument
    - #1310 Rate-limit Qt event processing in ProgressDialog if it is modal
    - #1289 Disable autoSIPrefix for DateAxisItem by default
    - #1274 Add tickAlpha to AxisItem Style Options
    - #402 Added `clear()` method to `GLViewWidget`
    - #1264 Added exception to checkOpenGLVersion to highlight OpenGL ES incompatability
    - #1257 Make painter tick font dependent for AxisItem
    - #1256 Added `setState`, `setState` and `saveState` to `ROI`
    - #1324 Pass through kwargs from MultiPlotItem.plot to PlotItem.plot
    - #1387 ScatterPlotItem: Make + and x symbols thicker
    - #1362 Make flowchart.Terminal sortable
    - #1360 Add "left" and "right" step Modes to PlotCurveItem and PlotDataItem
    - #1414 Emit event with mouse clicks for some items
    - #1413 `InfiniteLine.viewTransformChanged` now calls superclass-method
    - #1411 Hide `WidgetParameterItem.defaultBtn` if param has no default
    - #1410 add fontSize kwarg to `Dock`
    - #159 Add wrapping option to `SpinBox`
    - #330 Set parameter default button `autoDefault` value to `False`
    - #157 Provide `WidgetGroupInterface` to `GradientWidget`
    - #151 Optional provide custom `PlotItem` to `PlotWidget`
    - #1140 Dynamic range limiting in `PlotDataItem`
    - #1383 GraphicsView set a transparent background palette
    - #1428 Add default color for `ColorMap` type in `ColorMapWidget`

  Bug Fixes:
    - #1239 Avoid adding PlotItem twice
    - #508 siScale precision
    - #503 Fix butg in RawImageWidget which resulted in mirrored image
    - #1242,#1267 Add the mouse event to the sigClicked signal in PlotCurveItem
    - #1247 Restore the now-deprecated PlotWindow and ImageWindow classes
    - #1249 Remove ScatterPlotItem's SpotItems during addItem call
    - #1252 Fix incorrect tick text boundaries calculation on axis by setting the font
    - #1310 Fixed `Vector.__init__` when used with `QVector3D` argument
    - #1310 Fix console exception filtering for python3
    - #1310 BusyCursor only restore cursor after all nested levels have exited
    - #1310 `SimpleParameter.setValue` coerces argument to int if parameter type is int
    - #1307 Fixed `reload` methods for python3
    - #1294 Various console fixes
    - #1293 Various Python3 code fixes
    - #1282 Handle Axis SI prefix scaling in MatplotlibExporter
    - #1276 Fix problems with high frequency gaming mice
    - #1270 Various fixes with AxisItem space being taken
    - #1272 `LegendItem.clear()` fixed
    - #1268 Check for container before setting dock orientation
    - #1312 Avoid divide by 0 condition in TargetItem
    - #1309 Properly retain and use hoverPen argument in _PolyLineSegment
    - #1371 Explicitly set line width in PlotCurveItem when using OpenGL
    - #1319 don't automatically reload modules without pyc
    - #1319 make ptime.time on py3 return precision wall-clock time
    - #1334 Edge case detection in PlotCurveItem
    - #1339 fix handling of QVector3D args in Vector.__init__
    - #1336 Make `parent` an explicit kwarg of ArrowItem.__init__, avoid passing into setStyle
    - #1368 Disconnect from correct slots in Flowchart
    - #1364 fix log scaling
    - #963 Allow last image in stack to be selected by slider in ImageView
    - #1045 Raise AttributeError in __getattr__ in TabWindow
    - #960 Work around PySide setOverrideCursor bug in BusyCursor
    - #309 Encode QPropertyAnimation property name if not passed as bytes
    - #1072 Fix storing of ragged curves in HDF5Exporter
    - #1275 Fix Parameter.hasDefault
    - #1291 Get ImageView ROI working with both row and col major data
    - #1377 Consolidate and fix downsample factor computation in ImageItem
    - #1376 Fix PlotItem.setAxisItems
    - #1392 SignalProxy: Correct initialization without slot argument
    - #1306 Fix incorrect rendering of overlapping object in renderToArray()
    - #1349 Avoid calling method on undefined attribute
    - #1367 AxisItem: Account for empty strings in the visibility of text and units
    - #1356 Fix `ParameterTree` tree name and title handling
    - #1419 Fix `DataTreeWidget` dict sorting crash
    - #1408 Fix mouse interaction issues with `DockLabel`
    - #329 Fix bug where `int` and `float` parameter limits are not always set
    - #158 Make `DockArea` compatible with Qt Designer
    - #1405 Fix name setting in `ScatterPlotItem` options
    - #1403 Do not apply transparent background to Qt4
    - #1468 Allow zero step in `ImageItem`
    - #1464 Remove `ViewBox.childGroup`'s `ItemClipsChildrenToShape` flag
    - #1461 arrayToQPath revert to old behavior of `connect=ndarray` parameter
    - #1459 Fix `TickSliderItem` to avoid ghost ticks
    - #1456 Resolve issue with `PlotCurveItem` with merging PRs in an incorrect order
    - #1287 Fill in non-finite plot values for Qt versions >= 5.12.3
    - #1447 Clipped AxisItem tick value labels to prevent drawing artifacts
    - #1435 Fix autosize not taking to the correct range with `TextItem` in view
    - #1452 merge `InfiniteLine` caching calls
    - #1446 Fix `PlotDataItem.setData([], [])`
    - #1443 Fix Viewbox axis zoom in RectMode
    - #1439 Fix `TickSliderItem.setTickValue` when it references a `GradientEditorItem` method
    - #1361 Prevent item duplication in `Node` context menu
    - #1423 Fix typo in `kwargs` for `GridItem.setTextPen`
    - #1401 Fix width, height and background in SVG exporter
    - #1416 Handle case in `ROI` when `shape`, `vectors`, or `origin` keywords are passed in
    
  Maintenance:
    - #389 Revert workaround for upstream QT bug regarding mouse events
    - #1243 Ensure setPos in ROI is initialized correctly
    - #1241 Pin pytest-xvfb version on py2
    - #1310 Added tests for `functions.subArray`
    - #1307 Add `ThreadSafeTimer` to `__init__.py`
    - #467 derivatePlots cleanup
    - #400 `ImageView.Timeline` better visibility
    - #1265 Make the documentation reproducible
    - #1319 clean up exception messages in console
    - #356 Fix some NumPy warnings
    - #1326 Improve docs for MultiPlotWidget and MultiPlotItem
    - #1331 Migrate imports of PyQt5's sip module to new namespace
    - #1370 Fix deprecation warning in multiprocess module 
    - #308 Fix opt name for SpinBox: range -> bounds in UnsharpMaskNode example
    - #887 Update collections.abc imports
    - #1142 Miscellaneous doc fixups
    - #1169 Avoid using mutable default argument value
    - #1073 Python3 fixes
    - #1284 Update doc strings to clarify getArrayRegion API for ROI subclasses
    - #1042 Close windows at the end of test functions
    - #1374 Test warnings cleanup
    - #1375 Add targeted Vector test coverage
    - #1384 GLViewWidget.pan docstring typo
    - #1382 Autoformat LegendItem
    - #1396 Add tests for GraphicsView
    - #1399 Disable mouse rate limiting on test_ROI
    - #1409 Prepend conda-forge channel prior to env creation in CI
    - #1302 Fix Example app now works with Qt4/Python2
    - #1402 Handle case of version string having no `+`
    - #1400 Fix sphinx warnings on `PColorMeshItem`
    - #1328 Add docs build job to CI
    - #1464 Use `conda-forge` on pyside2+linux
    - #1448 Fixes for `examples/CustomPlot.py`
    - #1432 ExampleApp fix to use `pg` module from directory

pyqtgraph-0.11.0

  NOTICE: This is the _last_ feature release to support Python 2 and Qt 4 (PyQt4 or pyside 1)

  New Features:
    - #101: GridItem formatting options
    - #410: SpinBox custom formatting options
    - #415: ROI.getArrayRegion supports nearest-neighbor interpolation (especially handy for label images)
    - #428: DataTreeWidget:
      - Add DiffTreeWidget, which highlights differences between two DataTreeWidgets
      - Improved support for displaying tracebacks
      - Use TableWidget to represent arrays rather than plain text
    - #446: Added Perceptually Uniform Sequential colormaps from the matplotlib 2.0 release
    - #476: Add option to set composition mode for scatterplotitem
    - #518: TreeWidget:
      - Add new signals: sigItemCheckStateChanged, sigItemTextChanged, sigColumnCountChanged
      - Allow setting expansion state of items before they are added to a treewidget
      - Support for using TreeWidget.invisibleRootItem() (see also #592, #595)
    - #542: Add collapsible QGroupBox widgets
    - #543: Add TargetItem: simple graphicsitem that draws a scale-invariant circle + crosshair
    - #544: Make DockArea.restoreState behavior configurable in cases where either a dock to be restored is 
      missing, or an extra dock exists that is not mentioned in the restore state.
    - #545: Allow more types to be mapped through Transform3D 
    - #548: Adds a disconnect() function that allows to conditionally disconnect signals,
      including after reload.
      Also, a SignalBlock class used to temporarily block a signal-slot pair
    - #557: Allow console stack to be set outside of exceptions (see also: pg.stack)
    - #558: CanvasItem save/restore, make Canvas ui easier to embed
    - #559: Image exporter gets option to invert value while leaving hue fixed
    - #560: Add function to enable faulthandler on all threads, also allow Mutex to be used as 
      drop-in replacement for python's Lock
    - #567: Flowchart
      - Add several new data nodes
      - Add floordiv node
      - Add EvalNode.setCode
      - Binary operator nodes can select output array type
    - #568: LinearRegionItem
      - InfiniteLine can draw markers attached to the line
      - InfiniteLine can limit the region of the viewbox over which it is drawn
      - LinearRegionItem gets customizable line swap behavior (lines can block or push each other)
      - Added LinearRegionItem.setHoverBrush
    - #580: Allow calling sip.setapi in subprocess before pyqtgraph is imported
    - #582: Add ComboBox save/restoreState methods
    - #586: ParameterTree
      - Add GroupParameter.sigAddNew signal
      - systemsolver: add method for checking constraints / DOF
      - add systemsolver copy method
      - Parameter.child raises KeyError if requested child name does not exist
    - #587: Make PathButton margin customizable
    - #588: Add PlotCurveItem composition mode
    - #589: Add RulerROI
    - #591: Add nested progress dialogs
    - #597: Fancy new interactive fractal demo
    - #621: RGB mode for HistogramLUTWidget
    - #628,670: Add point selection in ScatterPlotWidget
    - #635: PySide2 support
    - #671: Add SVG export option to force non-scaling stroke
    - #676: OpenGL allow for panning in the plane of the camera
    - #683: Allow data filter entries to be updated after they are created
    - #685: Add option to set enum default values in DataFilterWidget
    - #710: Adds ability to rotate/scale ROIs by mouse drag on the ROI itself (using alt/shift modifiers)
    - #813,814,817: Performance improvements
    - #837: Added options for field variables in ColorMapWidget
    - #840, 932: Improve clipping behavior
    - #841: Set color of tick-labels separately
    - #922: Curve fill for fill-patches
    - #996: Allow the update of LegendItem
    - #1023: Add bookkeeping exporter parameters
    - #1072: HDF5Exporter handling of ragged curves with tests
    - #1124: Syntax highlighting for examples. 
    - #1154: Date axis item
    - #393: NEW show/hide gradient ticks NEW link gradientEditor to others
    - #1211: Add support for running pyside2-uic binary to dynamically compile ui files

  API / behavior changes:
    - Deprecated graphicsWindow classes; these have been unnecessary for many years because
      widgets can be placed into a new window just by calling show().
    - #158: Make DockArea compatible with Qt Designer
    - #406: Applying alpha mask on numpy.nan data values
    - #566: ArrowItem's `angle` option now rotates the arrow without affecting its coordinate system.
      The result is visually the same, but children of ArrowItem are no longer rotated
      (this allows screen-aligned text to be attached more easily).
      To mimic the old behavior, use ArrowItem.rotate() instead of the `angle` argument.
    - #673: Integer values in ParameterTree are now formatted as integer (%d) by default, rather than 
      scientific notation (%g). This can be overridden by providing `format={value:g}` when
      creating the parameter.
    - #374: ConsoleWidget uses the console's namespace as both global and local scope, which
    - #410: SpinBox siPrefix without suffix is not longer allowed, select only numerical portion of text on focus-in
      allows functions defined in the console to access the global namespace.
    - #479,521: ParameterTree simple parameters check types before setting value
    - #555: multiprocess using callSync='sync' no longer returns a future in case of timeout
    - #583: eq() no longer compares array values if they have different shape
    - #589: Remove SpiralROI (this was unintentionally added in the first case)
    - #593: Override qAbort on slot exceptions for PyQt>=5.5
    - #657: When a floating Dock window is closed, the dock is now returned home
    - #771: Suppress RuntimeWarning for arrays containing zeros in logscale
    - #942: If the visible GraphicsView is garbage collected, a warning is issued.
    - #958: Nicer Legend
    - #963: Last image in image-stack can now be selected with the z-slider
    - #992: Added a setter for GlGridItem.color.
    - #999: Make outline around fillLevel optional.
    - #1014: Enable various arguments as color in colormap.
    - #1044: Raise AttributeError in __getattr__ in graphicsWindows (deprecated)
    - #1055: Remove global for CONFIG_OPTIONS in setConfigOption
    - #1066: Add RemoteGraphicsView to __init__.py
    - #1069: Allow actions to display title instead of name
    - #1074: Validate min/max text inputs in ViewBoxMenu
    - #1076: Reset currentRow and currentCol on GraphicsLayout.clear()
    - #1079: Improve performance of updateData PlotCurveItem
    - #1082: Allow MetaArray.__array__ to accept an optional dtype arg
    - #841: set color of tick-labels separately
    - #1111: Add name label to GradientEditorItem
    - #1145: Pass showAxRect keyword arguments to setRange
    - #1184: improve SymbolAtlas.getSymbolCoords performance
    - #1198: improve SymbolAtlas.getSymbolCoords and ScatterPlotItem.plot performance
    - #1197: Disable remove ROI menu action in handle context menu
    - #1188: Added support for plot curve to handle both fill and connect args
    - #801: Remove use of GraphicsScene._addressCache in translateGraphicsItem 
        - Deprecates registerObject meethod of GraphicsScene
        - Deprecates regstar argument to GraphicsScene.__init__
    - #1166: pg.mkQApp: Pass non-empty string array to QApplication() as default
    - #1199: Pass non-empty sys.argv to QApplication
    - #1090: dump ExportDialog.exporterParameters
    - #1173: GraphicsLayout: Always call layout.activate() after adding items
    - #1097: pretty-print log-scale axes labels
    - #755: Check lastDownsample in viewTransformChanged
    - #1216: Add cache for mapRectFromView
    - #444: Fix duplicate menus in GradientEditorItem
    - #151: Optionally provide custom PlotItem to PlotWidget
    - #1093: Fix aspectRatio and zoom range issues when zooming
    - #390: moved some functionality from method 'export' to new method
    - #468: Patch/window handling
    - #392: new method 'getAxpectRatio' with code taken from 'setAspectLocked'
    - #1206: Added context menu option to parametertree
    - #1228: Minor improvements to LegendItem

  Bugfixes:
    - #88: Fixed image scatterplot export
    - #356: Fix some NumPy warnings
    - #408: Fix `cleanup` when the running qt application is not a QApplication
    - #410: SpinBox fixes
      - fixed bug with exponents disappearing after edit
      - fixed parsing of values with junk after suffix
      - fixed red border
      - reverted default decimals to 6
      - make suffix editable (but show red border if it's wrong)
      - revert invalid text on focus lost
      - siPrefix without suffix is no longer allowed
      - fixed parametree sending invalid options to spinbox
      - fix spinbox wrapping (merged #159 from @lidstrom83)
      - fixed parametertree ignoring spinbox bounds (merged #329 from @lidstrom83)
      - fixed spinbox height too small for font size
    - ROI subclass getArrayRegion methods are a bit more consistent (still need work) 
    - #424: Fix crash when running pyqtgraph with python -OO
    - #429: Fix fft premature slicing away of 0 freq bin
    - #458: Fixed image export problems with new numpy API
    - #478: Fixed PySide image memory leak
    - #475: Fixed unicode error when exporting to SVG with non-ascii symbols
    - #477: Fix handling of the value argument to functions.intColor
    - #485: Fixed incorrect height in VTickGroup
    - #514: Fixes bug where ViewBox emits sigRangeChanged before it has marked its transform dirty.
    - #516,668: Fix GL Views being half size on hidpi monitors
    - #526: Fix autorange exception with empty scatterplot
    - #528: Prevent image downsampling causing exception in makeQImage
    - #530: Fixed issue where setData only updated opts if data is given 
    - #541: Fixed issue where render would error because 'mapToDevice' would return None if the view size was too small.
    - #553: Fixed legend size after remove item
    - #555: Fixed console color issues, problems with subprocess closing
    - #559: HDF5 exporter: check for ragged array length
    - #563: Prevent viewbox auto-scaling to items that are not in the same scene. (This could 
      happen if an item that was previously added to the viewbox is then removed using scene.removeItem().
    - #564: Allow console exception label to wrap text (prevents console
      growing too large for long exception messages)
    - #565: Fixed AxisItem preventing mouse events reaching the ViewBox if it is displaying grid lines
      and has its Z value set higher than the ViewBox.
    - #567: fix flowchart spinbox bounds
    - #569: PlotItem.addLegend will not try to add more than once 
    - #570: ViewBox: make sure transform is up to date in all mapping functions
    - #577: Fix bargraphitem plotting horizontal bars
    - #581: Fix colormapwidget saveState
    - #586: ParameterTree
      - Make parameter name,value inint args go through setValue and setName
      - Fix colormapwidget saveState
    - #589: Fix click area for small ellipse/circle ROIs
    - #592,595: Fix InvisibleRootItem issues introduced in #518
    - #596: Fix polyline click causing lines to bedrawn to the wrong node
    - #598: Better ParameterTree support for dark themes 
    - #599: Prevent invalid list access in GraphicsScene
    - #623: Fix PyQt5 / ScatterPlot issue with custom symbols
    - #626: Fix OpenGL texture state leaking to wrong items 
    - #627: Fix ConsoleWidget stack handling on python 3.5
    - #633: Fix OpenGL cylinder geometry 
    - #637: Fix TypeError in isosurface
    - #641,642: Fix SVG export on Qt5 / high-DPI displays
    - #645: ScatterPlotWidget behaves nicely when data contains infs
    - #653: ScatterPlotItem: Fix a GC memory leak due to numpy issue 6581
    - #648: fix color ignored in GLGridItem
    - #671: Fixed SVG export failing if the first value of a plot is nan
    - #674: Fixed parallelizer leaking file handles
    - #675: Gracefully handle case where image data has size==0
    - #679: Fix overflow in Point.length()
    - #682: Fix: mkQApp returned None if a QApplication was already created elsewhere
    - #689: ViewBox fix: don't call setRange with empty args
    - #693: Fix GLLinePlotItem setting color
    - #696: Fix error when using PlotDataItem with both stepMode and symbol
    - #697: Fix SpinBox validation on python 3
    - #699: Fix nan handling in ImageItem.setData
    - #713: ConsoleWidget: Fixed up/down arrows sometimes unable to get back to the original 
      (usually blank) input state 
    - #715: Fix file dialog handling in Qt 5
    - #718: Fix SVG export with items that require option.exposedRect
    - #721: Fixes mouse wheel ignoring disabled mouse axes -- although the scaling was correct, 
      it was causing auto range to be disabled.
    - #723: Fix axis ticks when using self.scale
    - #739: Fix handling of 2-axis mouse wheel events
    - #742: Fix Metaarray in python 3
    - #758: Fix remote graphicsview "ValueError: mmap length is greater than file size" on OSX.
    - #763: Fix OverflowError when using Auto Downsampling.
    - #767: Fix Image display for images with the same value everywhere.
    - #770: Fix GLVieWidget.setCameraPosition ignoring first parameter.
    - #782: Fix missing FileForwarder thread termination.
    - #787: Fix encoding errors in checkOpenGLVersion.
    - #793: Fix wrong default scaling in makeARGB
    - #815: Fixed mirroring of x-axis with "invert Axis" submenu.
    - #824: Fix several issues related with mouse movement and GraphicsView.
    - #832: Fix Permission error in tests due to unclosed filehandle.
    - #836: Fix tickSpacing bug that lead to axis not being drawn.
    - #861: Fix crash of PlotWidget if empty ErrorBarItem is added.
    - #868: Fix segfault on repeated closing of matplotlib exporter.
    - #875,876,887,934,947,980: Fix deprecation warnings.
    - #886: Fix flowchart saving on python3.
    - #888: Fix TreeWidget.topLevelItems in python3.
    - #924: Fix QWheelEvent in RemoteGraphicsView with pyqt5.
    - #935: Fix PlotItem.addLine with 'pos' and 'angle' parameter.
    - #949: Fix multiline parameters (such as arrays) reading from config files.
    - #951: Fix event firing from scale handler.
    - #952: Fix RotateFree handle dragging
    - #953: Fix HistogramLUTWidget with background parameter
    - #968: Fix Si units in AxisItem leading to an incorrect unit.
    - #970: Always update transform when setting angle of a TextItem
    - #971: Fix a segfault stemming from incorrect signal disconnection.
    - #972: Correctly include SI units for log AxisItems
    - #974: Fix recursion error when instancing CtrlNode.
    - #987: Fix visibility reset when PlotItems are removed.
    - #998: Fix QtProcess proxy being unable to handle numpy arrays with dtype uint8.
    - #1010: Fix matplotlib/CSV export.
    - #1012: Fix circular texture centering
    - #1015: Iterators are now converted to NumPy arrays.
    - #1016: Fix synchronisation of multiple ImageViews with time axis.
    - #1017: Fix duplicate paint calls emitted by Items on ViewBox.
    - #1019: Fix disappearing GLGridItems when PlotItems are removed and readded.
    - #1024: Prevent element-wise string comparison
    - #1031: Reset ParentItem to None on removing from PlotItem/ViewBox
    - #1044: Fix PlotCurveItem.paintGL
    - #1048: Fix bounding box for InfiniteLine
    - #1062: Fix flowchart context menu redundant menu
    - #1062: Fix a typo
    - #1073: Fix Python3 compatibility
    - #1083: Fix SVG export of scatter plots
    - #1085: Fix ofset when drawing symbol
    - #1101: Fix small oversight in LegendItem
    - #1113: Correctly call hasFaceIndexedData function
    - #1139: Bug fix in LegendItem for `setPen`, `setBrush` etc (Call update instead of paint)
    - #1110: fix for makeARGB error after #955
    - #1063: Fix: AttributeError in ViewBox.setEnableMenu
    - #1151: ImageExporter py2-pyside fix with test
    - #1133: compatibility-fix for py2/pyside
    - #1152: Nanmask fix in makeARGB
    - #1159: Fix: Update axes after data is set
    - #1156: SVGExporter: Correct image pixelation
    - #1169: Replace default list arg with None
    - #770: Do not ignore pos argument of setCameraPosition
    - #1180: Fix: AxisItem tickFont is defined in two places while only one is used
    - #1168: GroupParameterItem: Did not pass changed options to ParameterItem
    - #1174: Fixed a possible race condition with linked views
    - #809: Fix selection of FlowchartWidget input/output nodes
    - #1071: Fix py3 execution in flowchart
    - #1212: Fix PixelVectors cache
    - #1161: Correctly import numpy where needed
    - #1218: Fix ParameterTree.clear()
    - #1175: Fix: Parameter tree ignores user-set 'expanded' state
    - #1219: Encode csv export header as unicode
    - #507: Fix Dock close event QLabel still running with no parent
    - #1222: py3 fix for ScatterPlotWidget.setSelectedFields
    - #1203: Image axis order bugfix
    - #1225: ParameterTree: Fix custom context menu


  Maintenance:
    - Lots of new unit tests
    - Lots of code cleanup
    - A lot of work on CI pipelines, test coverage and test passing (see e.g. #903,911)
    - #546: Add check for EINTR during example testing to avoid sporadic test failures on travis
    - #624: TravisCI no longer running python 2.6 tests
    - #695: "dev0" added to version string
    - #865,873,877 (and more): Implement Azure CI pipelines, fix Travis CI
    - #991: Use Azure Pipelines to do style checks, Add .pre-commit-config.yaml
    - #1042: Close windows at the end of test functions
    - #1046: Establish minimum numpy version, remove legacy workarounds
    - #1067: Make scipy dependency optional
    - #1114: doc: Fix small mistake in introduction
    - #1131: Update CI/tox and Enable More Tests 
    - #1142: Miscellaneous doc fixups
    - #1179: DateAxisItem: AxisItem unlinking tests and doc fixed
    - #1201: Get readthedocs working
    - #1214: Pin PyVirtualDisplay Version
    - #1215: Skip test when on qt 5.9
    - #1221: Identify pyqt5 5.15 ci issue
    - #1223: Remove workaround for memory leak in QImage
    - #1217: Get docs version and copyright year dynamically
    - #1229: Wrap text in tables in docs
    - #1231: Update readme for 0.11 release


pyqtgraph-0.10.0

  New Features:
    - PyQt5 support
    - Options for interpreting image data as either row-major or col-major
    - InfiniteLine and LinearRegionItem can have attached labels
    - DockArea:
        - Dock titles can be changed after creation
        - Added Dock.sigClosed
    - Added TextItem.setColor()
    - FillBetweenItem supports finite-connected curves (those that exclude nan/inf)

  API / behavior changes:
    - Improved ImageItem performance for some data types by scaling LUT instead of image
    - Change the defaut color kwarg to None in TextItem.setText() to avoid changing
      the color every time the text is changed.
    - FFT plots skip first sample if x-axis uses log scaling 
    - Multiprocessing system adds bytes and unicode to the default list of no-proxy data types
    - Version number scheme changed to be PEP440-compliant (only affects installations from non-
      release git commits) 

  Bugfixes:
    - Fix for numpy API change that caused casting errors for inplace operations
    - Fixed git version string generation on python3
    - Fixed setting default values for out-of-bound points in pg.interpolateArray
    - Fixed plot downsampling bug on python 3
    - Fixed invalid slice in ImageItem.getHistogram
    - DockArea:
        - Fixed adding Docks to DockArea after all Docks have been removed
        - Fixed DockArea save/restoreState when area is empty
    - Properly remove select box when export dialog is closed using window decorations
    - Remove all modifications to python builtins
    - Better Python 2.6 compatibility
    - Fix SpinBox decimals
    - Fixed numerous issues with ImageItem automatic downsampling
    - Fixed PlotItem average curves using incorrect stepMode
    - Fixed TableWidget eating key events
    - Prevent redundant updating of flowchart nodes with multiple inputs
    - Ignore wheel events in GraphicsView if mouse interaction is disabled
    - Correctly pass calls to QWidget.close() up the inheritance chain
    - ColorMap forces color inputs to be sorted
    - Fixed memory mapping for RemoteGraphicsView in OSX
    - Fixed QPropertyAnimation str/bytes handling
    - Fixed __version__ string update when using `setup.py install` with newer setuptools

  Maintenance:
    - Image comparison system for unit testing plus tests for several graphics items
    - Travis CI and coveralls/codecov support
    - Add examples to unit tests
    


pyqtgraph-0.9.10

  Fixed installation issues with more recent pip versions.

pyqtgraph-0.9.9

  API / behavior changes:
    - Dynamic import system abandoned; pg now uses static imports throughout.
        - Flowcharts and exporters have new pluggin systems
    - Version strings:
        - __init__.py in git repo now contains latest release version string
          (previously, only packaged releases had version strings).
        - installing from git checkout that does not correspond to a release 
          commit will result in a more descriptive version string.
    - Speed improvements in functions.makeARGB
    - ImageItem is faster by avoiding makeQImage(transpose=True)
    - ComboBox will raise error when adding multiple items of the same name
    - ArrowItem.setStyle now updates style options rather than replacing them 
    - Renamed GraphicsView signals to avoid collision with ViewBox signals that
      are wrapped in PlotWidget: sigRangeChanged => sigDeviceRangeChanged and
      sigTransformChanged => sigDeviceTransformChanged.
    - GLViewWidget.itemsAt() now measures y from top of widget to match mouse 
      event position.
    - Made setPen() methods consistent throughout the package
    - Fix in GLScatterPlotItem requires that points will appear slightly more opaque 
      (so you may need to adjust to lower alpha to achieve the same results)

  New Features:
    - Added ViewBox.setLimits() method
    - Adde ImageItem downsampling
    - New HDF5 example for working with very large datasets
    - Removed all dependency on scipy
    - Added Qt.loadUiType function for PySide
    - Simplified Profilers; can be activated with environmental variables
    - Added Dock.raiseDock() method
    - ComboBox updates:
        - Essentially a graphical interface to dict; all items have text and value
        - Assigns previously-selected text after list is cleared and repopulated
        - Get, set current value
    - Flowchart updates
        - Added Flowchart.sigChartChanged
        - Custom nodes may now be registered in sub-menu trees
    - ImageItem.getHistogram is more clever about constructing histograms
    - Added FillBetweenItem.setCurves()
    - MultiPlotWidget now has setMinimumPlotHeight method and displays scroll bar
      when plots do not fit inside the widget.
    - Added BarGraphItem.shape() to allow better mouse interaction
    - Added MeshData.cylinder
    - Added ViewBox.setBackgroundColor() and GLViewWidget.setBackgroundColor()
    - Utilities / debugging tools
        - Mutex used for tracing deadlocks
        - Color output on terminal
        - Multiprocess debugging colors messages by process
        - Stdout filter that colors text by thread
        - PeriodicTrace used to report deadlocks
    - Added AxisItem.setStyle()
    - Added configurable formatting for TableWidget
    - Added 'stepMode' argument to PlotDataItem()
    - Added ViewBox.invertX()
    - Docks now have optional close button
    - Added InfiniteLine.setHoverPen
    - Added GLVolumeItem.setData
    - Added PolyLineROI.setPoints, clearPoints, saveState, setState
    - Added ErrorBarItem.setData

  Bugfixes:
    - PlotCurveItem now has correct clicking behavior--clicks within a few px
      of the line will trigger a signal.
    - Fixes related to CSV exporter:
        - CSV headers include data names, if available
        - Exporter correctly handles items with no data
        - pg.plot() avoids creating empty data item
        - removed call to reduce() from exporter; not available in python 3
        - Gave .name() methods to PlotDataItem, PlotCurveItem, and ScatterPlotItem
    - fixed ImageItem handling of rgb images
    - fixed makeARGB re-ordering of color channels
    - fixed unicode usage in AxisItem tick strings
    - fixed PlotCurveItem generating exceptions when data has length=0
    - fixed ImageView.setImage only working once
    - PolyLineROI.setPen() now changes the pen of its segments as well
    - Prevent divide-by-zero in AxisItem
    - Major speedup when using ScatterPlotItem in pxMode
    - PlotCurveItem ignores clip-to-view when auto range is enabled
    - FillBetweenItem now forces PlotCurveItem to generate path
    - Fixed import errors and py3 issues in MultiPlotWidget
    - Isosurface works for arrays with shapes > 255
    - Fixed ImageItem exception building histogram when image has only one value
    - Fixed MeshData exception caused when vertexes have no matching faces
    - Fixed GLViewWidget exception handler
    - Fixed unicode support in Dock
    - Fixed PySide crash caused by emitting signal from GraphicsObject.itemChange
    - Fixed possible infinite loop from FiniteCache
    - Allow images with NaN in ImageView
    - MeshData can generate edges from face-indexed vertexes
    - Fixed multiprocess deadlocks on windows
    - Fixed GLGridItem.setSize
    - Fixed parametertree.Parameter.sigValueChanging
    - Fixed AxisItem.__init__(showValues=False)
    - Fixed TableWidget append / sort issues
    - Fixed AxisItem not resizing text area when setTicks() is used
    - Removed a few cyclic references
    - Fixed Parameter 'readonly' option for bool, color, and text parameter types
    - Fixed alpha on GLScatterPlotItem spots (formerly maxed out at alpha=200)
    - Fixed a few bugs causing exit crashes


pyqtgraph-0.9.8  2013-11-24

  API / behavior changes:
    - ViewBox will auto-range when ImageItem changes shape
    - AxisItem: 
        - Smarter about deciding which ticks get text
        - AxisItem.setScale(float) has the usual behavior, but .setScale(None) 
          is deprecated. Instead use:
          AxisItem.enableAutoSIPrefix(bool) to enable/disable SI prefix scaling
    - Removed inf/nan checking from PlotDataItem and PlotCurveItem; improved 
      performance

  New Features:
    - Support for dynamic downsampling and view clipping in PlotDataItem and 
      PlotItem
    - Added 'connect' option to PlotDataItem and PlotCurveItem to affect which 
      line segments are drawn
    - Support for FFT with non-uniform time sampling
    - Added BarGraphItem
    - OpenGL:
        - Added export methods to GLViewWidget
        - Wireframe meshes
        - GLLinePLotItem gets antialiasing, accepts array of colors
        - GLMeshItem accepts ShaderProgram or name of predefined program
        - Added GLBarGraphItem
    - LegendItem:
        - User-draggable
        - Allow custom ItemSamples
        - Symbol support
        - Support for removing items
    - ScatterPlotWidget, ColorMapWidget, and DataFilterWidget are stable
    - TableWidget:
        - Made numerically sortable
        - Added setEditable method
    - AxisItem ability to truncate axis lines at the last tick
    - arrayToQPath() added 'finite' connection mode which omits non-finite 
      values from connections
    - pg.plot() and pg.PlotWidget() now accept background argument
    - Allow QtProcess without local QApplication
    - Support for dashing in mkPen()
    - Added Dock.close()
    - Added style options to flowchart connection lines
    - Added parentChanged and viewChanged hooks to GraphicsItem 
    - Bidirectional pseudoScatter for beeswarm plots
    - Added exit() function for working around PyQt exit crashes
    - Added PolylineROI.getArrayRegion()

  Bugfixes:
    - Many Python 3 compatibility fixes
    - AxisItem:
        - Correctly handles scaling with values that are not power of 10
        - Did not update grid line length when plot stretches
        - Fixed unicode handling in AxisItem label
    - ViewBox:
        - Overhauled to fix issues with aspect locking
        - ViewBox context menu elements are no longer deleted when using 
          flowchart with pyside
        - Fixed view linking with inverted y axis
        - Prevent auto-range disabling when dragging with one mouse axis diabled
        - Ignore inf and nan when auto-ranging
    - ParameterTree:
        - fixed TextParameter editor disappearing after focus lost
        - ListParameter: allow unhashable types as parameter values.
    - Exporting:
        - ImageExporter correctly handles QBrush with style=NoBrush
        - SVGExporter text, gradients working correctly
        - SVGExporter correctly handles coordinate corrections for groups with 
          mixed elements
    - ImageView:
        - Fixed auto-levelling when normalization options change
        - Added autoHistogramRange argument to setImage
    - ScatterPlotItem:
        - Fixed crashes caused by ScatterPlotItem
        - Fixed antialiasing
    - arrayToQPath performance improved for python 3
    - Fixed makeQImage on many platforms (notably, on newer PyQt APIs)
    - Removed unnecessary scipy imports for faster import
    - GraphItem reports pixel margins to improve auto-range
    - Add backport ordereddict to repository; old OrderedDict class is removed
    - Corrected behavior of GraphicsView.setBackground
    - Fixed PySide bug listing image formats
    - Fixed QString -> str conversions in flowchart
    - Unicode file name support when exporting
    - Fixed MatplotlibWidget + PySide
    - Fixed 3D view updating after every scene change
    - Fixed handling of non-native dtypes when optimizing with weave
    - RemoteGraphicsView fixed for PyQt 4.10, Python 3
    - Fixed GLLinePlotItem line width option
    - HistogramLUTWidget obeys default background color
    - ScaleBar complete rewrite
    - GraphItem obeys antialiasing flag
    - Workaround for PySide/QByteArray memory leak
    - Fixed example --test on windows, python3
    - Luke finished dissertation


pyqtgraph-0.9.7  2013-02-25

   Bugfixes:
     - ArrowItem auto range now works correctly
     - Dock drag/drop fixed on PySide
     - Made padding behavior consistent across ViewBox methods
     - Fixed MeshData / python2.6 incompatibility
     - Fixed ScatterPlotItem.setSize and .setPointData
     - Workaround for PySide bug; GradientEditor fixed
     - Prefer initially selecting PlotItem rather then ViewBox when exporting
     - Fixed python3 import error with flowcharts
   
   Cleaned up examples, made code editable from example loader
   Minor documentation updates
   Features:
     - Added GraphItem class for displaying networks/trees
     - Added ColorMap class for mapping linear gradients and generating lookup
     tables
       (Provides gradient editor functionality without the GUI)
     - Added ColorMapWidget for complex user-defined color mapping
     - Added ScatterPlotWidget for exploring relationships in multi-column
     tables
     - Added ErrorBarItem
     - SVG and image exporters can now copy to clipboard
     - PlotItem gets new methods: addLine, setLabels, and listDataItems
     - AxisItem gets setTickFont method
     - Added functions.arrayToQPath, shared between GraphItem and PlotCurveItem
     - Added gradient editors to parametertree
     - Expanded documentation, added beginning of Qt crash course
   
   Bugfixes:
     - Fixed auto-ranging bugs: ViewBox now properly handles pixel-padding
     around data items
     - ViewBox ignores bounds of zoom-rect when auto ranging
     - Fixed AxisItem artifacts
     - Fixed GraphicsItem.pixelVector caching bugs and simplified workaround for
     fp-precision errors
     - LinearRegionItem.hoverEvent obeys 'movable' flag                         
                                                                                
                                        
     - Fixed PlotDataItem nan masking bugs                                      
                                                                                
                                        
     - Workaround for segmentation fault in QPainter.drawPixmapFragments        
                                                                                
                                        
     - multiprocess and RemoteGraphicsView work correctly in Windows.           
                                                                                
                                        
     - Expanded python 3 support                                                
                                                                                
                                        
     - Silenced weave errors by default                                         
                                                                                
                                        
     - Fixed " 'win' in sys.platform " occurrences matching 'darwin' (duh)
     - Workaround for change in QImage API (PyQt 4.9.6)
     - Fixed axis ordering bug in GLScatterPlotItem

pyqtgraph-0.9.6  2013-02-14

   Features:
     - Added GraphItem class for displaying networks/trees
     - Added ColorMap class for mapping linear gradients and generating lookup
     tables
       (Provides gradient editor functionality without the GUI)
     - Added ColorMapWidget for complex user-defined color mapping
     - Added ScatterPlotWidget for exploring relationships in multi-column
     tables
     - Added ErrorBarItem
     - SVG and image exporters can now copy to clipboard
     - PlotItem gets new methods: addLine, setLabels, and listDataItems
     - AxisItem gets setTickFont method
     - Added functions.arrayToQPath, shared between GraphItem and PlotCurveItem
     - Added gradient editors to parametertree
     - Expanded documentation, added beginning of Qt crash course
   
   Bugfixes:
     - Fixed auto-ranging bugs: ViewBox now properly handles pixel-padding
     around data items
     - ViewBox ignores bounds of zoom-rect when auto ranging
     - Fixed AxisItem artifacts
     - Fixed GraphicsItem.pixelVector caching bugs and simplified workaround for
     fp-precision errors
     - LinearRegionItem.hoverEvent obeys 'movable' flag                         
                                                                                
                                        
     - Fixed PlotDataItem nan masking bugs                                      
                                                                                
                                        
     - Workaround for segmentation fault in QPainter.drawPixmapFragments        
                                                                                
                                        
     - multiprocess and RemoteGraphicsView work correctly in Windows.           
                                                                                
                                        
     - Expanded python 3 support                                                
                                                                                
                                        
     - Silenced weave errors by default                                         
                                                                                
                                        
     - Fixed " 'win' in sys.platform " occurrences matching 'darwin' (duh)
     - Workaround for change in QImage API (PyQt 4.9.6)
     - Fixed axis ordering bug in GLScatterPlotItem
   Plotting performance improvements:
     - AxisItem shows fewer tick levels in some cases.
     - Lots of boundingRect and dataBounds caching
       (improves ViewBox auto-range performance, especially with multiple plots)
     - GraphicsScene avoids testing for hover intersections with non-hoverable
     items
       (much less slowdown when moving mouse over plots)
   
   Improved performance for remote plotting:
     - reduced cost of transferring arrays between processes (pickle is too
     slow)
     - avoid unnecessary synchronous calls
   
   Added RemoteSpeedTest example


pyqtgraph-0.9.5  2013-01-11

   Plotting performance improvements:
     - AxisItem shows fewer tick levels in some cases.
     - Lots of boundingRect and dataBounds caching
       (improves ViewBox auto-range performance, especially with multiple plots)
     - GraphicsScene avoids testing for hover intersections with non-hoverable
     items
       (much less slowdown when moving mouse over plots)
   
   Improved performance for remote plotting:
     - reduced cost of transferring arrays between processes (pickle is too
     slow)
     - avoid unnecessary synchronous calls
   
   Added RemoteSpeedTest example
   Documentation:
   - Added documentation on export system
   - Added flowchart documentation and custom node example
   
   Bugfixes: 
   - prevent PlotCurveItem drawing shadow when unnecessary
   - deprecated flowchart.Node.__getattr__ -- causes too many problems.

pyqtgraph-0.9.4  2013-01-07

   Documentation:
   - Added documentation on export system
   - Added flowchart documentation and custom node example
   
   Bugfixes: 
   - prevent PlotCurveItem drawing shadow when unnecessary
   - deprecated flowchart.Node.__getattr__ -- causes too many problems.
   Bugfix: prevent adding invalid entry to sys.path when running examples

pyqtgraph-0.9.3  2012-12-29

   Bugfix: prevent adding invalid entry to sys.path when running examples
   Bugfixes:
   - SVG export text elements use generic font-family as backup, corrected item
   transformation issues
   - Fixed RuntimeError caused when clearing item hierarchies from ViewBox
   - Fixed example execution bug
   
   Packaging maintenance:
   - Added missing files to MANIFEST.in, fixed setup.py package detection
   - Added debian control files for building source packages
   - Fixed version numbering in doc, __init__.py

pyqtgraph-0.9.2  2012-12-29

   Bugfixes:
   - SVG export text elements use generic font-family as backup, corrected item
   transformation issues
   - Fixed RuntimeError caused when clearing item hierarchies from ViewBox
   - Fixed example execution bug
   
   Packaging maintenance:
   - Added missing files to MANIFEST.in, fixed setup.py package detection
   - Added debian control files for building source packages
   - Fixed version numbering in doc, __init__.py

pyqtgraph-0.9.1  2012-12-27

   Removed incorrect version numbers
   Correction to setup.py - use install_requires to inform pip of dependencies.
   Fixed doc version (again)
   Added debian control files
   bugfixes for new package structure

pyqtgraph-0.9.0  2012-12-27

  * Initial release.
