<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/0f80413f3f817e5190d8c6607ad3ebefc4d14910">https://github.com/macports/macports-ports/commit/0f80413f3f817e5190d8c6607ad3ebefc4d14910</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 0f80413f3f817e5190d8c6607ad3ebefc4d14910
</span>Author: Renee Otten <reneeotten@macports.org>
AuthorDate: Thu Dec 23 11:31:14 2021 -0500

<span style='display:block; white-space:pre;color:#404040;'>    py-pmw: update deprecated Python code
</span>---
 python/py-pmw/Portfile                  |   6 +-
 python/py-pmw/files/patch-callable.diff | 508 ++++++++++++++++++++++++++++++++
 2 files changed, 512 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pmw/Portfile b/python/py-pmw/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 05fe31cf067..dad6de33512 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pmw/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pmw/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup python    1.0
</span> 
 name                py-pmw
 version             2.0.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            3
</span> 
 platforms           darwin
 supported_archs     noarch
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,7 +20,9 @@ homepage            http://pmw.sourceforge.net/
</span> master_sites        sourceforge:pmw
 distname            Pmw-${version}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles          patch-pmw2.diff patch-pmw2-py36.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-pmw2.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-pmw2-py36.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-callable.diff
</span> patch.pre_args      -p1
 
 checksums           rmd160  2a76186192f13eb22c373b3e0e60ce65cba506fe \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pmw/files/patch-callable.diff b/python/py-pmw/files/patch-callable.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..526d11841ce
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pmw/files/patch-callable.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,508 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Patch to replace the use of collections.Callable to callable(); the former was
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+already deprecated for a while and remove in Python 3.10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/contrib/MCListbox.py b/contrib/MCListbox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ca3b313..db08908 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/MCListbox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/MCListbox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,7 +29,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class MultiColumnListbox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def __init__(self, parent = None, **kw):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -641,7 +640,7 @@ class MultiColumnListbox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._cursel = [row]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -649,13 +648,13 @@ class MultiColumnListbox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _cellframedblclick(self, event):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #print 'double click cell frame'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['dblclickcommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _celldblclick(self, event):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #print 'double click cell'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['dblclickcommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if __name__ == '__main__':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/contrib/PmwFileDialog.py b/contrib/PmwFileDialog.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b510516..a007d06 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/PmwFileDialog.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/PmwFileDialog.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,7 +18,6 @@ __version__ = '$Id: PmwFileDialog.py,v 1.2.2.1 2012/08/04 00:56:51 adyh Exp $'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ################################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import os,fnmatch,time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter,Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #Pmw.setversion("0.8.5")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _errorpop(master,text):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -224,7 +223,7 @@ class PmwFileDialog(Pmw.Dialog):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.configure(directory=dir,filename=value)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         c=self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(c, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(c):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             c()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def newfilename(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/contrib/PmwFullTimeCounter.py b/contrib/PmwFullTimeCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8bc6d17..730b088 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/PmwFullTimeCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/PmwFullTimeCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,7 +5,6 @@ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class FullTimeCounter(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Up-down counter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -461,7 +460,7 @@ class FullTimeCounter(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def invoke(self, event = None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def destroy(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/contrib/TreeBrowser.py b/contrib/TreeBrowser.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 17cccbc..a191c9f 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/TreeBrowser.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/contrib/TreeBrowser.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,7 +34,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class _Branching:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -292,7 +291,7 @@ class _LeafNode(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._labelWidget.configure(label_foreground = self['selectforeground'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #self._viewButton.configure(background = self._selectbg)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['selectcommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd(self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _unhighlight(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -302,7 +301,7 @@ class _LeafNode(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._labelWidget.configure(label_foreground = self['foreground'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #self._viewButton.configure(background = self._bg)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['deselectcommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd(self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _setlast(self, last):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwBalloon.py b/lib/PmwBalloon.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b17917d..73c3439 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwBalloon.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwBalloon.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,7 +2,6 @@ import os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class Balloon(Pmw.MegaToplevel):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def __init__(self, parent = None, **kw):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -201,7 +200,7 @@ class Balloon(Pmw.MegaToplevel):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def showstatus(self, statusHelp):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if self['state'] in ('status', 'both'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd = self['statuscommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 cmd(statusHelp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def clearstatus(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwBase.py b/lib/PmwBase.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2223f04..fff8237 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwBase.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwBase.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,11 +20,10 @@ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import traceback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # tkinter 8.5 -> 8.6 fixed a problem in which selected indexes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # were reported as strings instead of ints
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# by default emulate the same functionality so we don't break 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# by default emulate the same functionality so we don't break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # existing interfaces but allow for easy switching
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #_forceTkinter85Compatibility = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,7 +31,7 @@ import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    global _forceTkinter85Compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    if isinstance(value, bool):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #        _forceTkinter85Compatibility = value and tkinter.TkVersion > 8.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #def emulateTk85():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    global _forceTkinter85Compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    return _forceTkinter85Compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -996,7 +995,7 @@ class MegaToplevel(MegaArchetype):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Initialise the base class (after defining the options).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #MegaArchetype.__init__(self, parent, tkinter.Toplevel)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         super().__init__(parent, tkinter.Toplevel)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Initialise instance.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Set WM_DELETE_WINDOW protocol, deleting any old callback, so
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1174,7 +1173,7 @@ class MegaToplevel(MegaArchetype):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         pushgrab(self._hull, globalMode, self.deactivate)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         command = self['activatecommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             command()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.wait_variable(self._wait)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1192,7 +1191,7 @@ class MegaToplevel(MegaArchetype):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         popgrab(self._hull)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         command = self['deactivatecommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             command()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.withdraw()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1237,7 +1236,7 @@ def tracetk(root = None, on = 1, withStackTrace = 0, file=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if root is None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         root = tkinter._default_root
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _withStackTrace = withStackTrace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _traceTk = on
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if on == 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1382,7 +1381,7 @@ def _addRootToToplevelBusyInfo():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         _addToplevelBusyInfo(root)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def busycallback(command, updateFunction = None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if not isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         raise ValueError('cannot register non-command busy callback %s %s' % \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 (repr(command), type(command)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     wrapper = _BusyWrapper(command, updateFunction)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1649,7 +1648,7 @@ class _BusyWrapper:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Call update before hiding the busy windows to clear any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # events that may have occurred over the busy windows.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(self._updateFunction, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(self._updateFunction):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._updateFunction()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         hidebusycursor()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwComboBox.py b/lib/PmwComboBox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6d27dd8..36b817d 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwComboBox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwComboBox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,7 +5,6 @@ import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class ComboBox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def __init__(self, parent = None, **kw):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,14 +31,14 @@ class ComboBox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Create the components.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         interior = self.interior()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._entryfield = self.createcomponent('entryfield',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 (('entry', 'entryfield_entry'),), None,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 Pmw.EntryField, (interior,))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._entryfield.grid(column=2, row=2, sticky=self['sticky'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         interior.grid_columnconfigure(2, weight = 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self._entryWidget = self._entryfield.component('entry')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if self['dropdown']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._isPosted = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             interior.grid_rowconfigure(2, weight = 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -275,7 +274,7 @@ class ComboBox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._entryfield.setentry(item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['selectioncommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if event is None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # Return result of selectioncommand for invoke() method.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return cmd(item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwCounter.py b/lib/PmwCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 65b4b28..c069e5a 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,7 +3,6 @@ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class Counter(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -206,7 +205,7 @@ class Counter(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if datatype in _counterCommands:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._counterCommand = _counterCommands[datatype]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        elif isinstance(datatype, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        elif callable(datatype):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._counterCommand = datatype
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             validValues = list(_counterCommands.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -277,9 +276,9 @@ Pmw.forwardmethods(Counter, Pmw.EntryField, '_counterEntry')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _changeNumber(text, factor, increment):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     value = int(text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if factor > 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        value = (value // increment) * increment + increment 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        value = (value // increment) * increment + increment
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        value = ((value - 1) // increment) * increment  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        value = ((value - 1) // increment) * increment
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     #removed "L" check since we're working with Python 3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return str(int(value))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwDialog.py b/lib/PmwDialog.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e8c4f8c..d0cad65 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwDialog.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwDialog.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,7 +10,6 @@ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # A Toplevel with a ButtonBox and child site.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -128,7 +127,7 @@ class Dialog(Pmw.MegaToplevel):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         command = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return command(name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if self.active():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwEntryField.py b/lib/PmwEntryField.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 077dcee..15d4339 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwEntryField.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwEntryField.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,7 +5,6 @@ import string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Possible return values of validation functions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OK = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -170,7 +169,7 @@ class EntryField(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _checkValidateFunction(self, function, option, validator):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Raise an error if 'function' is not a function or None.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if function is not None and not isinstance(function, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if function is not None and not callable(function):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             extraValidators = self['extravalidators']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             extra = list(extraValidators.keys())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             extra.sort()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -184,7 +183,7 @@ class EntryField(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _executeCommand(self, event = None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if event is None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # Return result of command for invoke() method.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -215,7 +214,7 @@ class EntryField(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return valid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['modifiedcommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable) and previousText != self._entryFieldEntry.get():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd) and previousText != self._entryFieldEntry.get():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return valid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -263,7 +262,7 @@ class EntryField(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if valid == ERROR:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # The entry is invalid.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd = self['invalidcommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if self.hulldestroyed():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # The invalidcommand destroyed us.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwHistoryText.py b/lib/PmwHistoryText.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 919f94a..4cd6b11 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwHistoryText.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwHistoryText.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,5 +1,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _ORIGINAL = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _MODIFIED = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,7 +64,7 @@ class HistoryText(Pmw.ScrolledText):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # so allow the 'Next' button to go to the entry after this one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self._pastIndex = self._currIndex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             nextState = 'normal'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(historycommand, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(historycommand):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             historycommand('normal', nextState)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Create the new history entry.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,7 +131,7 @@ class HistoryText(Pmw.ScrolledText):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if self._currIndex == 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     prevstate = 'disabled'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             historycommand = self['historycommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if isinstance(historycommand, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if callable(historycommand):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 historycommand(prevstate, nextstate)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             currentEntry =  self._list[self._currIndex]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwOptionMenu.py b/lib/PmwOptionMenu.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 31ace8f..b9a9206 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwOptionMenu.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwOptionMenu.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,7 +2,6 @@ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class OptionMenu(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -144,5 +143,5 @@ class OptionMenu(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.setvalue(text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         command = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return command(text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwPanedWidget.py b/lib/PmwPanedWidget.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 82fdbdc..d07d12f 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwPanedWidget.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwPanedWidget.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,7 +6,6 @@ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class PanedWidget(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -152,7 +151,7 @@ class PanedWidget(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Note that, since the hull is a frame, the width and height
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # options specify the geometry *outside* the borderwidth and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # highlightthickness.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #Python 3 conversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #bw = string.atoi(str(self.cget('hull_borderwidth')))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         #hl = string.atoi(str(self.cget('hull_highlightthickness')))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -441,7 +440,7 @@ class PanedWidget(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Invoke the callback command
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd(list(map(lambda x, s = self: s._size[x], self._paneNames)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _plotHandles(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwRadioSelect.py b/lib/PmwRadioSelect.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c68e0e0..0ba53c5 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwRadioSelect.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwRadioSelect.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class RadioSelect(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # A collection of several buttons.  In single mode, only one
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -209,7 +208,7 @@ class RadioSelect(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if self._singleSelect:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self.__setSingleValue(name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             command = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return command(name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Multiple selections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -230,5 +229,5 @@ class RadioSelect(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 state = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             command = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return command(name, state)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwScrolledListBox.py b/lib/PmwScrolledListBox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index cf014ec..3e2a571 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwScrolledListBox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwScrolledListBox.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,7 +3,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class ScrolledListBox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _classBindingsDefinedFor = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -340,7 +339,7 @@ class ScrolledListBox(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             command = self['selectioncommand']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(command, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(command):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             command()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # Need to explicitly forward this to override the stupid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/PmwTimeCounter.py b/lib/PmwTimeCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f88788a..795fd3b 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwTimeCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Pmw-2.0.0/Pmw/Pmw_2_0_0/lib/PmwTimeCounter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,7 +5,6 @@ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import tkinter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import Pmw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import collections
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class TimeCounter(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Up-down counter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -367,12 +366,12 @@ class TimeCounter(Pmw.MegaWidget):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _invoke(self, event):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def invoke(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cmd = self['command']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if isinstance(cmd, collections.Callable):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if callable(cmd):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return cmd()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def destroy(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.34.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>

</pre>