Your message dated Fri, 12 Feb 2016 08:49:22 -0500
with message-id <[email protected]>
and subject line NMU was absorbed
has caused the Debian Bug report #764346,
regarding psychopy: diff for NMU version 1.79.00+git16-g30c9343.dfsg-1.1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
764346: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764346
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: psychopy
Version: 1.79.00+git16-g30c9343.dfsg-1
Severity: normal
Tags: patch pending

Dear maintainer,

I've uploaded an NMU for psychopy (versioned as
1.79.00+git16-g30c9343.dfsg-1.1).  A diff showing the changes is attached.

Cheers,
    Olly
diff -Nru psychopy-1.79.00+git16-g30c9343.dfsg/debian/changelog psychopy-1.79.00+git16-g30c9343.dfsg/debian/changelog
--- psychopy-1.79.00+git16-g30c9343.dfsg/debian/changelog	2013-12-22 06:39:17.000000000 +1300
+++ psychopy-1.79.00+git16-g30c9343.dfsg/debian/changelog	2014-10-08 00:39:28.000000000 +1300
@@ -1,3 +1,16 @@
+psychopy (1.79.00+git16-g30c9343.dfsg-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Update for wxPython 3.0 (Closes: #759090):
+    - New patch: wxpython3.0.patch
+  * Create temporary directory and point $HOME to it when running tests during
+    package build. (Closes: #718154)
+  * Tests fail with python-wxgtk3.0, but the exact same failures are seen with
+    python-wxgtk2.8, so ignore failing tests so as not to block the wxpython3.0
+    transition.
+
+ -- Olly Betts <[email protected]>  Tue, 07 Oct 2014 10:59:58 +0000
+
 psychopy (1.79.00+git16-g30c9343.dfsg-1) unstable; urgency=low
 
   * New release (+ post-release fixes)
diff -Nru psychopy-1.79.00+git16-g30c9343.dfsg/debian/control psychopy-1.79.00+git16-g30c9343.dfsg/debian/control
--- psychopy-1.79.00+git16-g30c9343.dfsg/debian/control	2013-12-22 06:39:17.000000000 +1300
+++ psychopy-1.79.00+git16-g30c9343.dfsg/debian/control	2014-10-08 00:30:26.000000000 +1300
@@ -10,7 +10,7 @@
                xvfb, xauth, libgl1-mesa-dri,
                python-pyglet, python-pygame, python-opengl,
                python-scipy, python-matplotlib, python-lxml,
-               python-configobj, python-imaging, python-openpyxl, python-mock, python-wxgtk2.8, libavbin0, python-pyo,
+               python-configobj, python-imaging, python-openpyxl, python-mock, python-wxgtk3.0, libavbin0, python-pyo,
                python-pytest,
 Vcs-Git: git://git.debian.org/git/pkg-exppsy/psychopy.git
 Vcs-Browser: http://git.debian.org/?p=pkg-exppsy/psychopy.git
@@ -25,7 +25,7 @@
           python-numpy, python-scipy, python-matplotlib,
           python-lxml,
           python-configobj
-Recommends: python-wxgtk2.8,
+Recommends: python-wxgtk3.0,
             python-pyglet, python-pygame,
             python-openpyxl,
             python-imaging,
diff -Nru psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/series psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/series
--- psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/series	2013-12-22 06:39:17.000000000 +1300
+++ psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/series	2014-09-12 12:38:51.000000000 +1200
@@ -1,3 +1,4 @@
 deb_do_not_regenerate_init
 deb_use_system_serial
 update_matplotlib_test
+wxpython3.0.patch
diff -Nru psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/wxpython3.0.patch psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/wxpython3.0.patch
--- psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/wxpython3.0.patch	1970-01-01 12:00:00.000000000 +1200
+++ psychopy-1.79.00+git16-g30c9343.dfsg/debian/patches/wxpython3.0.patch	2014-09-12 13:07:20.000000000 +1200
@@ -0,0 +1,430 @@
+Description: Update for wxPython 3.0
+ These changes should remain compatible with wxPython 2.8.
+Bug-Debian: https://bugs.debian.org/759090
+Forwarded: no
+Last-Update: 2014-09-11
+
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/builder/builder.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/app/builder/builder.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/builder/builder.py
+@@ -23,17 +23,17 @@ from psychopy.app.builder import validat
+ from psychopy.constants import *
+ 
+ canvasColor=[200,200,200]#in prefs? ;-)
+-routineTimeColor=wx.Color(50,100,200, 200)
+-staticTimeColor=wx.Color(200,50,50, 100)
+-nonSlipFill=wx.Color(150,200,150, 255)
+-nonSlipEdge=wx.Color(0,100,0, 255)
+-relTimeFill=wx.Color(200,150,150, 255)
+-relTimeEdge=wx.Color(200,50,50, 255)
+-routineFlowColor=wx.Color(200,150,150, 255)
+-darkgrey=wx.Color(65,65,65, 255)
+-white=wx.Color(255,255,255, 255)
+-darkblue=wx.Color(30,30,150, 255)
+-codeSyntaxOkay=wx.Color(220,250,220, 255)  # light green
++routineTimeColor=wx.Colour(50,100,200, 200)
++staticTimeColor=wx.Colour(200,50,50, 100)
++nonSlipFill=wx.Colour(150,200,150, 255)
++nonSlipEdge=wx.Colour(0,100,0, 255)
++relTimeFill=wx.Colour(200,150,150, 255)
++relTimeEdge=wx.Colour(200,50,50, 255)
++routineFlowColor=wx.Colour(200,150,150, 255)
++darkgrey=wx.Colour(65,65,65, 255)
++white=wx.Colour(255,255,255, 255)
++darkblue=wx.Colour(30,30,150, 255)
++codeSyntaxOkay=wx.Colour(220,250,220, 255)  # light green
+ 
+ # regular expression to check for unescaped '$' to indicate code:
+ _unescapedDollarSign_re = re.compile(r"^\$|[^\\]\$")
+@@ -282,9 +282,9 @@ class FlowPanel(wx.ScrolledWindow):
+         self.btnInsertRoutine = platebtn.PlateButton(self,-1,'Insert Routine ', pos=(10,10))
+         self.btnInsertLoop = platebtn.PlateButton(self,-1,'Insert Loop     ', pos=(10,30)) #spaces give size for CANCEL
+ 
+-        self.labelTextGray = {'normal': wx.Color(150,150,150, 20),'hlight':wx.Color(150,150,150, 20)}
+-        self.labelTextRed = {'normal': wx.Color(250,10,10, 250),'hlight':wx.Color(250,10,10, 250)}
+-        self.labelTextBlack = {'normal': wx.Color(0,0,0, 250),'hlight':wx.Color(250,250,250, 250)}
++        self.labelTextGray = {'normal': wx.Colour(150,150,150, 20),'hlight':wx.Colour(150,150,150, 20)}
++        self.labelTextRed = {'normal': wx.Colour(250,10,10, 250),'hlight':wx.Colour(250,10,10, 250)}
++        self.labelTextBlack = {'normal': wx.Colour(0,0,0, 250),'hlight':wx.Colour(250,250,250, 250)}
+ 
+         # use self.appData['flowSize'] to index a tuple to get a specific value, eg: (4,6,8)[self.appData['flowSize']]
+         self.flowMaxSize = 2 # upper limit on increaseSize
+@@ -724,7 +724,7 @@ class FlowPanel(wx.ScrolledWindow):
+             self.gapMidPoints.append(currX+gap/2)
+             self.gapNestLevels.append(nestLevel)
+             pdc.SetId(lineId)
+-            pdc.SetPen(wx.Pen(wx.Color(0,0,0, 255)))
++            pdc.SetPen(wx.Pen(wx.Colour(0,0,0, 255)))
+             pdc.DrawLine(x1=currX,y1=self.linePos[1],x2=currX+gap,y2=self.linePos[1])
+             currX+=gap
+         lineRect = wx.Rect(self.linePos[0]-2, self.linePos[1]-2, currX-self.linePos[0]+2, 4)
+@@ -750,7 +750,7 @@ class FlowPanel(wx.ScrolledWindow):
+         for ii, entry in enumerate(expFlow):
+             if entry.getType()=='Routine':
+                 currX = self.drawFlowRoutine(pdc,entry, id=ii,pos=[currX,self.linePos[1]-10])
+-            pdc.SetPen(wx.Pen(wx.Color(0,0,0, 255)))
++            pdc.SetPen(wx.Pen(wx.Colour(0,0,0, 255)))
+             pdc.DrawLine(x1=currX,y1=self.linePos[1],x2=currX+gap,y2=self.linePos[1])
+             currX += gap
+ 
+@@ -761,8 +761,8 @@ class FlowPanel(wx.ScrolledWindow):
+         #   font.SetPointSize(600/self.dpi)
+         #   self.SetFont(font); pdc.SetFont(font)
+         #   w,h = self.GetFullTextExtent(str(len(self.pointsToDraw)))[0:2]
+-        #   pdc.SetPen(wx.Pen(wx.Color(0,0,0, 255)))
+-        #   pdc.SetBrush(wx.Brush(wx.Color(0,0,0,255)))
++        #   pdc.SetPen(wx.Pen(wx.Colour(0,0,0, 255)))
++        #   pdc.SetBrush(wx.Brush(wx.Colour(0,0,0,255)))
+         #   pdc.DrawCircle(xPos,self.linePos[1], w+2)
+         #   pdc.SetTextForeground([255,255,255])
+         #   pdc.DrawText(str(n), xPos-w/2, self.linePos[1]-h/2)
+@@ -780,7 +780,7 @@ class FlowPanel(wx.ScrolledWindow):
+                 id = wx.NewId()
+                 self.entryPointIDlist.append(id)
+                 self.pdc.SetId(id)
+-                self.pdc.SetBrush(wx.Brush(wx.Color(0,0,0,255)))
++                self.pdc.SetBrush(wx.Brush(wx.Colour(0,0,0,255)))
+                 self.pdc.DrawCircle(pos,self.linePos[1], ptSize)
+                 r = self.pdc.GetIdBounds(id)
+                 self.OffsetRect(r)
+@@ -814,15 +814,15 @@ class FlowPanel(wx.ScrolledWindow):
+     def drawLineStart(self, dc, pos):
+         #draw bar at start of timeline; circle looked bad, offset vertically
+         ptSize = (3,3,4)[self.appData['flowSize']]
+-        dc.SetBrush(wx.Brush(wx.Color(0,0,0, 255)))
+-        dc.SetPen(wx.Pen(wx.Color(0,0,0, 255)))
++        dc.SetBrush(wx.Brush(wx.Colour(0,0,0, 255)))
++        dc.SetPen(wx.Pen(wx.Colour(0,0,0, 255)))
+         dc.DrawPolygon([[0,-ptSize],[1,-ptSize],[1,ptSize], [0,ptSize]], pos[0],pos[1])
+     def drawLineEnd(self, dc, pos):
+         #draws arrow at end of timeline
+         #tmpId = wx.NewId()
+         #dc.SetId(tmpId)
+-        dc.SetBrush(wx.Brush(wx.Color(0,0,0, 255)))
+-        dc.SetPen(wx.Pen(wx.Color(0,0,0, 255)))
++        dc.SetBrush(wx.Brush(wx.Colour(0,0,0, 255)))
++        dc.SetPen(wx.Pen(wx.Colour(0,0,0, 255)))
+         dc.DrawPolygon([[0,-3],[5,0],[0,3]], pos[0],pos[1])
+         #dc.SetIdBounds(tmpId,wx.Rect(pos[0],pos[1]+3,5,6))
+     def drawLoopEnd(self, dc, pos, downwards=True):
+@@ -830,8 +830,8 @@ class FlowPanel(wx.ScrolledWindow):
+         # idea: might want a wxID for grabbing and relocating the loop endpoint
+         tmpId = wx.NewId()
+         dc.SetId(tmpId)
+-        #dc.SetBrush(wx.Brush(wx.Color(0,0,0, 250)))
+-        #dc.SetPen(wx.Pen(wx.Color(0,0,0, 255)))
++        #dc.SetBrush(wx.Brush(wx.Colour(0,0,0, 250)))
++        #dc.SetPen(wx.Pen(wx.Colour(0,0,0, 255)))
+         size = (3,4,5)[self.appData['flowSize']]
+         #if downwards: dc.DrawPolygon([[size,0],[0,size],[-size,0]], pos[0],pos[1]+2*size)#points down
+         #else: dc.DrawPolygon([[size,size],[0,0],[-size,size]], pos[0],pos[1]-3*size)#points up
+@@ -841,8 +841,8 @@ class FlowPanel(wx.ScrolledWindow):
+         # draws direction arrow on left side of a loop
+         tmpId = wx.NewId()
+         dc.SetId(tmpId)
+-        dc.SetBrush(wx.Brush(wx.Color(0,0,0, 250)))
+-        dc.SetPen(wx.Pen(wx.Color(0,0,0, 255)))
++        dc.SetBrush(wx.Brush(wx.Colour(0,0,0, 250)))
++        dc.SetPen(wx.Pen(wx.Colour(0,0,0, 255)))
+         size = (3,4,5)[self.appData['flowSize']]
+         offset = (3,2,0)[self.appData['flowSize']]
+         if downwards:
+@@ -892,7 +892,7 @@ class FlowPanel(wx.ScrolledWindow):
+         endX = pos[0]+w+pad
+         #the edge should match the text
+         if draw:
+-            dc.SetPen(wx.Pen(wx.Color(rgbEdge[0],rgbEdge[1],rgbEdge[2], wx.ALPHA_OPAQUE)))
++            dc.SetPen(wx.Pen(wx.Colour(rgbEdge[0],rgbEdge[1],rgbEdge[2], wx.ALPHA_OPAQUE)))
+             dc.SetBrush(wx.Brush(rgbFill))
+             dc.DrawRoundedRectangleRect(rect, (4,6,8)[self.appData['flowSize']])
+             #draw text
+@@ -932,10 +932,10 @@ class FlowPanel(wx.ScrolledWindow):
+         curve = (6, 11, 15)[self.appData['flowSize']] #extra distance, in both h and w for curve
+         yy = [base,height+curve*up,height+curve*up/2,height] # for area
+         r,g,b=rgb
+-        dc.SetPen(wx.Pen(wx.Color(r, g, b, 200)))
++        dc.SetPen(wx.Pen(wx.Colour(r, g, b, 200)))
+         vertOffset=0 # 1 is interesting too
+         area = wx.Rect(startX, base+vertOffset, endX-startX, max(yy)-min(yy))
+-        dc.SetBrush(wx.Brush(wx.Color(0,0,0,0),style=wx.TRANSPARENT)) # transparent
++        dc.SetBrush(wx.Brush(wx.Colour(0,0,0,0),style=wx.TRANSPARENT)) # transparent
+         dc.DrawRoundedRectangleRect(area, curve) # draws outline
+         dc.SetIdBounds(tmpId, area)
+ 
+@@ -979,9 +979,9 @@ class FlowPanel(wx.ScrolledWindow):
+         #draw box
+         rect = wx.Rect(x, y, w+pad,h+pad)
+         #the edge should match the text
+-        dc.SetPen(wx.Pen(wx.Color(r, g, b, 100)))
++        dc.SetPen(wx.Pen(wx.Colour(r, g, b, 100)))
+         #try to make the loop fill brighter than the background canvas:
+-        dc.SetBrush(wx.Brush(wx.Color(235,235,235, 250)))
++        dc.SetBrush(wx.Brush(wx.Colour(235,235,235, 250)))
+ 
+         dc.DrawRoundedRectangleRect(rect, (4,6,8)[self.appData['flowSize']])
+         #draw text
+@@ -1198,7 +1198,7 @@ class RoutineCanvas(wx.ScrolledWindow):
+         xEnd=self.timeXposEnd
+ 
+         #dc.SetId(wx.NewId())
+-        dc.SetPen(wx.Pen(wx.Color(0, 0, 0, 150)))
++        dc.SetPen(wx.Pen(wx.Colour(0, 0, 0, 150)))
+         #draw horizontal lines on top and bottom
+         dc.DrawLine(x1=xSt,y1=yPosTop,
+                     x2=xEnd,y2=yPosTop)
+@@ -1243,7 +1243,7 @@ class RoutineCanvas(wx.ScrolledWindow):
+         if startTime!=None and duration!=None:#then we can draw a sensible time bar!
+             #calculate rectangle for component
+             xScale = self.getSecsPerPixel()
+-            dc.SetPen(wx.Pen(wx.Color(200, 100, 100, 0), style=wx.TRANSPARENT))
++            dc.SetPen(wx.Pen(wx.Colour(200, 100, 100, 0), style=wx.TRANSPARENT))
+             dc.SetBrush(wx.Brush(staticTimeColor))
+             xSt = self.timeXposStart + startTime/xScale
+             w = (duration)/xScale + 1  # +1 to compensate for border alpha=0 in dc.SetPen
+@@ -1296,7 +1296,7 @@ class RoutineCanvas(wx.ScrolledWindow):
+         #draw entries on timeline (if they have some time definition)
+         if startTime!=None and duration!=None:#then we can draw a sensible time bar!
+             xScale = self.getSecsPerPixel()
+-            dc.SetPen(wx.Pen(wx.Color(200, 100, 100, 0), style=wx.TRANSPARENT))
++            dc.SetPen(wx.Pen(wx.Colour(200, 100, 100, 0), style=wx.TRANSPARENT))
+             dc.SetBrush(wx.Brush(routineTimeColor))
+             hSize = (3.5,2.75,2)[self.drawSize]
+             yOffset = (3,3,0)[self.drawSize]
+@@ -2725,7 +2725,7 @@ class DlgLoopProperties(_BaseParamsDlg):
+         self.conditionsFileOrig = self.conditionsFile
+         self.conditionsOrig = self.conditions
+         expFolder,expName = os.path.split(self.frame.filename)
+-        dlg = wx.FileDialog(self, message="Open file ...", style=wx.OPEN,
++        dlg = wx.FileDialog(self, message="Open file ...", style=wx.FD_OPEN,
+                             defaultDir=expFolder)
+         if dlg.ShowModal() == wx.ID_OK:
+             newFullPath = dlg.GetPath()
+@@ -3031,9 +3031,14 @@ class DlgConditions(wx.Dialog):
+             self.madeApp = False
+             wx.Dialog.__init__(self, None,-1,title,pos,size,style)
+         except: # only needed during development?
++            class MySimpleApp(wx.App):
++                def OnInit(self):
++                    # Suppress WXDEBUG assertions, as happens by default with wx2.8.
++                    self.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)
++                    return True
+             self.madeApp = True
+             global app
+-            app = wx.PySimpleApp()
++            app = MySimpleApp()
+             wx.Dialog.__init__(self, None,-1,title,pos,size,style)
+         self.trim = trim
+         self.warning = '' # updated to warn about eg, trailing whitespace
+@@ -3356,7 +3361,7 @@ class DlgConditions(wx.Dialog):
+             PREVIEW.Bind(wx.EVT_BUTTON, self.preview)
+             buttons.Add(PREVIEW)
+             buttons.AddSpacer(4)
+-            self.SAVEAS = wx.Button(self, wx.SAVE, "Save as")
++            self.SAVEAS = wx.Button(self, wx.FD_SAVE, "Save as")
+             self.SAVEAS.Bind(wx.EVT_BUTTON, self.saveAs)
+             buttons.Add(self.SAVEAS)
+             buttons.AddSpacer(8)
+@@ -3467,7 +3472,7 @@ class DlgConditions(wx.Dialog):
+             fullPathList = gui.fileOpenDlg(tryFileName=os.path.basename(fileName),
+                             allowed="All files (*.*)|*.*")
+             if fullPathList:
+-                fileName = fullPathList[0] # wx.MULTIPLE -> list
++                fileName = fullPathList[0] # wx.FD_MULTIPLE -> list
+         if os.path.isfile(fileName) and fileName.endswith('.pkl'):
+             f = open(fileName)
+             contents = cPickle.load(f)
+@@ -3917,7 +3922,7 @@ class BuilderFrame(wx.Frame):
+         returnVal=False
+         dlg = wx.FileDialog(
+             self, message="Save file as ...", defaultDir=initPath,
+-            defaultFile=filename, style=wx.SAVE, wildcard=wildcard)
++            defaultFile=filename, style=wx.FD_SAVE, wildcard=wildcard)
+         if dlg.ShowModal() == wx.ID_OK:
+             newPath = dlg.GetPath()
+             #update exp name
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/coder/coder.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/app/coder/coder.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/coder/coder.py
+@@ -1797,7 +1797,7 @@ class CoderFrame(wx.Frame):
+             initPath=''
+         dlg = wx.FileDialog(
+             self, message="Open file ...",
+-            defaultDir=initPath, style=wx.OPEN
++            defaultDir=initPath, style=wx.FD_OPEN
+             )
+ 
+         if dlg.ShowModal() == wx.ID_OK:
+@@ -1906,7 +1906,7 @@ class CoderFrame(wx.Frame):
+         #open dlg
+         dlg = wx.FileDialog(
+             self, message="Save file as ...", defaultDir=initPath,
+-            defaultFile=filename, style=wx.SAVE, wildcard=wildcard)
++            defaultFile=filename, style=wx.FD_SAVE, wildcard=wildcard)
+         if dlg.ShowModal() == wx.ID_OK:
+             newPath = dlg.GetPath()
+             # if the file already exists, query whether it should be overwritten (default = yes)
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/dialogs.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/app/dialogs.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/dialogs.py
+@@ -511,7 +511,12 @@ class ListWidget(GlobSizer):
+         """
+         pass
+ if __name__=='__main__':
+-    app = wx.PySimpleApp()
++    class MySimpleApp(wx.App):
++        def OnInit(self):
++            # Suppress WXDEBUG assertions, as happens by default with wx2.8.
++            self.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)
++            return True
++    app = MySimpleApp()
+     dlg = wx.Dialog(None)
+     init = [{'Field':'Participant','Default':''},{'Field':'Session','Default':'001'}]
+     listCtrl = ListWidget(dlg, value = init, order=['Field','Default'])
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/preferencesDlg.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/app/preferencesDlg.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/preferencesDlg.py
+@@ -201,7 +201,12 @@ class PrefCtrls:
+ 
+ if __name__=='__main__':
+     import preferences
+-    app = wx.PySimpleApp()
++    class MySimpleApp(wx.App):
++        def OnInit(self):
++            # Suppress WXDEBUG assertions, as happens by default with wx2.8.
++            self.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)
++            return True
++    app = MySimpleApp()
+     app.prefs=preferences.Preferences()#don't do this normally - use the existing psychopy.prefs instance
+     dlg = PreferencesDlg(app)
+     dlg.ShowModal()
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/gui.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/gui.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/gui.py
+@@ -11,6 +11,12 @@ import string, os
+ 
+ OK = wx.ID_OK
+ 
++class MySimpleApp(wx.App):
++    def OnInit(self):
++        # Suppress WXDEBUG assertions, as happens by default with wx2.8.
++        self.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)
++        return True
++
+ class Dlg(wx.Dialog):
+     """A simple dialogue box. You can add text or input boxes
+     (sequentially) and then retrieve the values.
+@@ -42,7 +48,7 @@ class Dlg(wx.Dialog):
+             wx.Dialog.__init__(self, None,-1,title,pos,size,style)
+         except:
+             global app
+-            app = wx.PySimpleApp()
++            app = MySimpleApp()
+             wx.Dialog.__init__(self, None,-1,title,pos,size,style)
+         self.inputFields = []
+         self.inputFieldTypes= []
+@@ -207,7 +213,7 @@ class DlgFromDict(Dlg):
+             else:
+                 self.addField(field,self.dictionary[field], tip=tooltip)
+         #show it and collect data
+-        #tmp= wx.PySimpleApp()#this should have been done by Dlg ?
++        #tmp= MySimpleApp()#this should have been done by Dlg ?
+         self.show()
+         if self.OK:
+             for n,thisKey in enumerate(keys):
+@@ -244,11 +250,11 @@ def fileSaveDlg(initFilePath="", initFil
+             #"shelved files (*.shelf)|*.shelf"
+     try:
+         dlg = wx.FileDialog(None,prompt,
+-                          initFilePath, initFileName, allowed, wx.SAVE)
++                          initFilePath, initFileName, allowed, wx.FD_SAVE)
+     except:
+-        tmpApp = wx.PySimpleApp()
++        tmpApp = MySimpleApp()
+         dlg = wx.FileDialog(None,prompt,
+-                          initFilePath, initFileName, allowed, wx.SAVE)
++                          initFilePath, initFileName, allowed, wx.FD_SAVE)
+     if dlg.ShowModal() == OK:
+         #get names of images and their directory
+         outName = dlg.GetFilename()
+@@ -292,11 +298,11 @@ def fileOpenDlg(tryFilePath="",
+             "All files (*.*)|*.*"
+     try:
+         dlg = wx.FileDialog(None, prompt,
+-                          tryFilePath, tryFileName, allowed, wx.OPEN|wx.FILE_MUST_EXIST|wx.MULTIPLE)
++                          tryFilePath, tryFileName, allowed, wx.FD_OPEN|wx.FD_FILE_MUST_EXIST|wx.FD_MULTIPLE)
+     except:
+-        tmpApp = wx.PySimpleApp()
++        tmpApp = MySimpleApp()
+         dlg = wx.FileDialog(None, prompt,
+-                          tryFilePath, tryFileName, allowed, wx.OPEN|wx.FILE_MUST_EXIST|wx.MULTIPLE)
++                          tryFilePath, tryFileName, allowed, wx.FD_OPEN|wx.FD_FILE_MUST_EXIST|wx.FD_MULTIPLE)
+     if dlg.ShowModal() == OK:
+         #get names of images and their directory
+         fullPaths = dlg.GetPaths()
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/iohub/util/dialogs.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/iohub/util/dialogs.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/iohub/util/dialogs.py
+@@ -21,7 +21,12 @@ class ioHubDialog(object):
+         self.dialog=None
+         self.display_index=display_index
+         if ioHubDialog.wxapp is None:
+-            ioHubDialog.wxapp = wx.PySimpleApp()
++            class MySimpleApp(wx.App):
++                def OnInit(self):
++                    # Suppress WXDEBUG assertions, as happens by default with wx2.8.
++                    self.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)
++                    return True
++            ioHubDialog.wxapp = MySimpleApp()
+ 
+         
+     def set_frame_display(self):
+@@ -168,11 +173,11 @@ class FileDialog(ioHubDialog):
+         dstyle=0
+         
+         if openFile is True:
+-            dstyle=dstyle | wx.OPEN
++            dstyle=dstyle | wx.FD_OPEN
+         if allowMultipleSelections is True:
+-            dstyle=dstyle | wx.MULTIPLE
++            dstyle=dstyle | wx.FD_MULTIPLE
+         if allowChangingDirectories is True:
+-            dstyle=dstyle | wx.CHANGE_DIR
++            dstyle=dstyle | wx.FD_CHANGE_DIR
+         
+         fileTypesCombined=""
+         if isinstance(fileTypes,(list,tuple)):    
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/_psychopyApp.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/app/_psychopyApp.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/app/_psychopyApp.py
+@@ -76,6 +76,11 @@ class PsychoPyApp(wx.App):
+         wx.App.__init__(self, arg)
+         self.onInit(**kwargs)
+ 
++    def OnInit(self):
++        # Suppress WXDEBUG assertions, as happens by default with wx2.8.
++        self.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)
++        return True
++
+     def onInit(self, showSplash=True, testMode=False):
+         """
+         :Parameters:
+Index: psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/monitors/MonitorCenter.py
+===================================================================
+--- psychopy-1.79.00+git16-g30c9343.dfsg.orig/psychopy/monitors/MonitorCenter.py
++++ psychopy-1.79.00+git16-g30c9343.dfsg/psychopy/monitors/MonitorCenter.py
+@@ -1092,6 +1092,8 @@ class GammaDlg(wx.Dialog):
+ 
+ class MonitorCenter(wx.App):
+     def OnInit(self):
++        # Suppress WXDEBUG assertions, as happens by default with wx2.8.
++        self.SetAssertMode(wx.PYAPP_ASSERT_SUPPRESS)
+         frame = MainFrame(None,'PsychoPy Monitor Center')
+         frame.Show(True)
+         self.SetTopWindow(frame)
diff -Nru psychopy-1.79.00+git16-g30c9343.dfsg/debian/rules psychopy-1.79.00+git16-g30c9343.dfsg/debian/rules
--- psychopy-1.79.00+git16-g30c9343.dfsg/debian/rules	2013-12-22 06:39:17.000000000 +1300
+++ psychopy-1.79.00+git16-g30c9343.dfsg/debian/rules	2014-10-08 00:36:56.000000000 +1300
@@ -10,6 +10,10 @@
 # We will disallow to fail on unstable/sid, but let them pass otherwise
 failed_tests_cmd = $(shell dpkg-parsechangelog --count 1 --format rfc822 | awk '/^Distribution:/{print $$2;}' | grep -q -e '\(sid\|unstable\)' && echo "exit 1" || echo ":")
 
+# The same tests fail with python-wxgtk2.8 and python-wxgtk3.0, so ignore
+# failing tests so as not to block the wxpython3.0 transition.
+failed_tests_cmd = :
+
 debian/psychopy.1: debian/psychopy.sh
 	chmod +x $^
 	PYTHONPATH=. help2man -N -n "Creating psychology stimuli in Python" $^ > $@
@@ -19,8 +23,11 @@
 install/psychopy:: debian/psychopy.1
 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
 	echo "I: Running tests using default Python"
-	cd build && xvfb-run -s "-screen 0 1024x768x24 -ac +extension GLX +render -noreset" \
+	mkdir -p tmp-home
+	cd build && \
+	    HOME='$(CURDIR)/tmp-home' xvfb-run -s "-screen 0 1024x768x24 -ac +extension GLX +render -noreset" \
 		python ../psychopy/tests/runPytest.py -v -s -m "not needs_sound" || { echo "TESTS FAILED"; $(failed_tests_cmd); }
+	rm -rf tmp-home
 endif
 ## Fix up permissions on images -- pushed upstream, but left here
 ## just to make sure everything is ok

--- End Message ---
--- Begin Message ---
Version: 1.81.00.dfsg-1

sorry for a long delay.  NMU was absorbed within 1.81.00.dfsg-1 awhile
back.  THANKS!

-- 
Yaroslav O. Halchenko
Center for Open Neuroscience     http://centerforopenneuroscience.org
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik        

--- End Message ---

Reply via email to