Array range may be wrong due to aggressive caching
The range caching code in vtkDataArray depends on the mtime of the information object. However, there are situations where this can prevent necessary recomputation of the range. For example
import vtk
a = vtk.vtkFloatArray()
a.InsertNextTuple1(0)
a.InsertNextTuple1(1)
print a.GetRange()
a.SetValue(1, 10)
a.GetInformation().Set(vtk.vtkDataArray.UNITS_LABEL(), "meters")
print a.GetRange()
Both of these prints will print (0, 1) even though the second one should print (0, 10). This is because the .Set() call updates the information object's mtime, which the range computation depends on. The right implementation would store a separate computation time for the range and use that for comparison.