FS#42807 - [wxpython] 3.0.1.1-2 internal breakage on PlotCanvas

Attached to Project: Community Packages
Opened by Gergely (imrehg) - Sunday, 16 November 2014, 07:42 GMT
Last edited by Eli Schwartz (eschwartz) - Friday, 26 January 2018, 17:22 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Bruno Pagani (ArchangeGabriel)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
When running a program that uses wxPython, it can break in such a way that all the issues are within wxPython, independent of the host program. Seems like internal issues within wxPython/wxGTK 3.0, while everything works on 2.8.

Additional info:
* Packages:
* wxgtk 3.0.2-2
* wxgtk2.8 2.8.12.1-2
* wxpython 3.0.1.1-2
* wxpython2.8 2.8.12.1-1
* python2 2.7.8-2

Steps to reproduce:

1) Download PirateScope (software oscilloscope for the busPirate USB device) from https://github.com/wxWidgets/wxPython

2) run it with `python2 PirateScope`

3) the program breaks with this error:

/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_core.py:16631: UserWarning: wxPython/wxWidgets release number mismatch
warnings.warn("wxPython/wxWidgets release number mismatch")
Traceback (most recent call last):
File "PirateScope", line 761, in <module>
frame = MainWindow(None, 'PirateScope')
File "PirateScope", line 274, in __init__
self.plot = plot.PlotCanvas(self.plotpanel)
File "/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/lib/plot.py", line 598, in __init__
self.HandCursor = wx.Cursor(Hand.GetImage())
File "/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_gdi.py", line 1510, in __init__
_gdi_.Cursor_swiginit(self,_gdi_.new_Cursor(*args, **kwargs))
TypeError: Required argument 'type' (pos 2) not found

Here the issue is the wx.Cursor function within PlotCanvas being called with its own preset cursor image (Hand). Nothing related to the original code that called the PlotCanvas function.

4) If I add this to the host program to force wx to 2.8, then no issue, the program runs correctly:

import wxversion
wxversion.select('2.8')

Might be related to https://bugs.archlinux.org/task/41576
This task depends upon

Closed by  Eli Schwartz (eschwartz)
Friday, 26 January 2018, 17:22 GMT
Reason for closing:  Fixed
Additional comments about closing:  wxpython 3.0.2.0-6
Comment by Gergely (imrehg) - Sunday, 16 November 2014, 07:58 GMT
Probably even more related to https://bugs.archlinux.org/task/42054, as the patch in wxpython 3.0.1.1-2 seems to be very heavy handed and reverses a lot of other sections compared to the upstream wxpython, including the related areas in PlotCanvas - lot of side-effects.
Comment by Balló György (City-busz) - Friday, 26 January 2018, 16:46 GMT
Upstream report:
http://trac.wxwidgets.org/ticket/16767

Upstream fixes:
https://github.com/wxWidgets/wxPython/commit/25bcbf15615b64e095da75e934ea4d254998ec24
https://github.com/wxWidgets/wxPython/commit/30bc07d80ae1c81d70b4de2daac62ecd7996d703

Upstream fixes are applied to wxpython 3.0.2.0-6.

Note: you have to add the line "app.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)" before "app.MainLoop()" if you want to run PirateScope with wxpython 3.0.

Loading...