diff --git a/direct/src/cluster/ClusterServer.py b/direct/src/cluster/ClusterServer.py index b987f7c96e..ce16ed719e 100644 --- a/direct/src/cluster/ClusterServer.py +++ b/direct/src/cluster/ClusterServer.py @@ -158,7 +158,7 @@ class ClusterServer(DirectObject.DirectObject): self.controlPriorities[objectName] = priority self.redoSortedPriorities() else: - self.notify.debug('attempt to add duplicate controlled object: '+name) + self.notify.debug('attempt to add duplicate controlled object: ' + objectName) def setControlMappingOffset(self, objectName, offset): if objectName in self.controlMappings: diff --git a/direct/src/directdevices/DirectDeviceManager.py b/direct/src/directdevices/DirectDeviceManager.py index e5439d497e..06f7797e2d 100644 --- a/direct/src/directdevices/DirectDeviceManager.py +++ b/direct/src/directdevices/DirectDeviceManager.py @@ -176,7 +176,7 @@ class DirectAnalogs(AnalogNode, DirectObject): def normalizeChannel(self, chan, minVal = -1, maxVal = 1, sf = 1.0): try: - return self.normalize(self[chan], minVal, maxVal, sfx) + return self.normalize(self[chan], minVal, maxVal, sf) except IndexError: return 0.0 diff --git a/direct/src/dist/FreezeTool.py b/direct/src/dist/FreezeTool.py index 19644d20fb..df6633acd4 100644 --- a/direct/src/dist/FreezeTool.py +++ b/direct/src/dist/FreezeTool.py @@ -83,7 +83,9 @@ defaultHiddenImports = { 'plyer': ['plyer.platforms'], 'scipy.linalg': ['scipy.linalg.cython_blas', 'scipy.linalg.cython_lapack'], 'scipy.sparse.csgraph': ['scipy.sparse.csgraph._validation'], + 'scipy.spatial.qhull': ['scipy._lib.messagestream'], 'scipy.spatial._qhull': ['scipy._lib.messagestream'], + 'scipy.spatial.transform.rotation': ['scipy.spatial.transform._rotation_groups'], 'scipy.spatial.transform._rotation': ['scipy.spatial.transform._rotation_groups'], 'scipy.special._ufuncs': ['scipy.special._ufuncs_cxx'], 'scipy.stats._stats': ['scipy.special.cython_special'], diff --git a/direct/src/dist/commands.py b/direct/src/dist/commands.py index f3994e88b7..f7f3666420 100644 --- a/direct/src/dist/commands.py +++ b/direct/src/dist/commands.py @@ -1121,7 +1121,7 @@ class build_apps(setuptools.Command): # Remove python version string parts = basename.split('.') - if len(parts) >= 3 and '-' in parts[-2]: + if len(parts) >= 3 and ('-' in parts[-2] or parts[-2] == 'abi' + str(sys.version_info[0])): parts = parts[:-2] + parts[-1:] basename = '.'.join(parts) diff --git a/direct/src/dist/icon.py b/direct/src/dist/icon.py index e6873f45f6..aa771c255b 100644 --- a/direct/src/dist/icon.py +++ b/direct/src/dist/icon.py @@ -114,9 +114,6 @@ class Icon: for x in range(size): pixel = image2.get_pixel(x, size - y - 1) index = colors.index(pixel) - if index >= 256: - # Find closest pixel instead. - index = closest_indices[index - 256] fp.write(struct.pack(' data2) - (data1 < data2) else: index1 = self.palette.dataKeys.index(data1) index2 = self.palette.dataKeys.index(data2) - return cmp(index1, index2) + return (index1 > index2) - (index1 < index2) def getSelected(self): return self.tree.GetItemData(self.tree.GetSelection()) diff --git a/direct/src/leveleditor/ProtoPaletteUI.py b/direct/src/leveleditor/ProtoPaletteUI.py index fb8fc1d3af..5213da9ed7 100755 --- a/direct/src/leveleditor/ProtoPaletteUI.py +++ b/direct/src/leveleditor/ProtoPaletteUI.py @@ -200,9 +200,9 @@ class ProtoPaletteUI(wx.Panel): data1 = self.tree.GetItemText(item1) data2 = self.tree.GetItemText(item2) if self.opSort == self.opSortAlpha: - return cmp(data1, data2) + return (data1 > data2) - (data1 < data2) else: items = list(self.palette.data.keys()) index1 = items.index(data1) index2 = items.index(data2) - return cmp(index1, index2) + return (index1 > index2) - (index1 < index2) diff --git a/direct/src/particles/ParticleFloorTest.py b/direct/src/particles/ParticleFloorTest.py index 70aeb6a474..d6d7fd210a 100755 --- a/direct/src/particles/ParticleFloorTest.py +++ b/direct/src/particles/ParticleFloorTest.py @@ -1,5 +1,5 @@ -from panda3d.core import NodePath +from panda3d.core import NodePath, Vec3 from panda3d.physics import LinearVectorForce from direct.particles import ParticleEffect from direct.particles import Particles diff --git a/direct/src/showbase/ProfileSession.py b/direct/src/showbase/ProfileSession.py index dd5ef6e828..8b2fa5866b 100755 --- a/direct/src/showbase/ProfileSession.py +++ b/direct/src/showbase/ProfileSession.py @@ -28,7 +28,7 @@ class PercentStats(pstats.Stats): print() indent = ' ' * 8 for func in self.top_level: - print(indent, func_get_function_name(func)) + print(indent, pstats.func_get_function_name(func)) print(indent, self.total_calls, "function calls", end=' ') if self.total_calls != self.prim_calls: diff --git a/direct/src/tkpanels/AnimPanel.py b/direct/src/tkpanels/AnimPanel.py index 6412673d10..2967394509 100644 --- a/direct/src/tkpanels/AnimPanel.py +++ b/direct/src/tkpanels/AnimPanel.py @@ -458,10 +458,8 @@ class ActorControl(Pmw.MegaWidget): playRateList = ['1/24.0', '0.1', '0.5', '1.0', '2.0', '5.0', '10.0'] playRate = '%0.1f' % self['actor'].getPlayRate(self['active']) if playRate not in playRateList: - def strCmp(a, b): - return cmp(eval(a), eval(b)) playRateList.append(playRate) - playRateList.sort(strCmp) + playRateList.sort(key=lambda s:eval(s)) playRateMenu = self.createcomponent( 'playRateMenu', (), None, Pmw.ComboBox, (interior,), diff --git a/tests/gobj/test_geom_vertex_format.py b/tests/gobj/test_geom_vertex_format.py new file mode 100644 index 0000000000..d4c9472649 --- /dev/null +++ b/tests/gobj/test_geom_vertex_format.py @@ -0,0 +1,114 @@ +from panda3d.core import GeomVertexArrayFormat, GeomVertexFormat, Geom + + +def test_format_arrays(): + array1 = GeomVertexArrayFormat("vertex", 3, Geom.NT_float32, Geom.C_point) + array2 = GeomVertexArrayFormat("normal", 3, Geom.NT_float32, Geom.C_normal) + array3 = GeomVertexArrayFormat("color", 4, Geom.NT_float32, Geom.C_color) + array4 = GeomVertexArrayFormat("texcoord", 2, Geom.NT_float32, Geom.C_texcoord) + + # Verify initial refcounts + assert array1.get_ref_count() == 1 + assert array2.get_ref_count() == 1 + assert array3.get_ref_count() == 1 + assert array4.get_ref_count() == 1 + + format = GeomVertexFormat() + + def expect_arrays(*args): + assert format.get_num_arrays() == len(args) + assert len(format.arrays) == len(args) + assert tuple(format.arrays) == args + arrays = format.get_arrays() + assert tuple(arrays) == args + + assert array1.get_ref_count() == 1 + arrays.count(array1) * 2 + assert array2.get_ref_count() == 1 + arrays.count(array2) * 2 + assert array3.get_ref_count() == 1 + arrays.count(array3) * 2 + assert array4.get_ref_count() == 1 + arrays.count(array4) * 2 + + # Verify empty state + expect_arrays() + + # Append to end + format.add_array(array1) + expect_arrays(array1,) + format.add_array(array2) + expect_arrays(array1, array2) + format.add_array(array3) + expect_arrays(array1, array2, array3) + format.add_array(array4) + expect_arrays(array1, array2, array3, array4) + + # Verify other accessors + assert format.get_num_arrays() == 4 + assert len(format.arrays) == 4 + assert tuple(format.get_arrays()) == (array1, array2, array3, array4) + + # Remove from beginning + format.remove_array(0) + expect_arrays(array2, array3, array4) + format.remove_array(0) + expect_arrays(array3, array4) + format.remove_array(0) + expect_arrays(array4,) + format.remove_array(0) + expect_arrays() + + # Insert at end + format.insert_array(0, array1) + expect_arrays(array1,) + format.insert_array(1, array2) + expect_arrays(array1, array2) + format.insert_array(2, array3) + expect_arrays(array1, array2, array3) + format.insert_array(3, array4) + expect_arrays(array1, array2, array3, array4) + + # Remove from end + format.remove_array(3) + expect_arrays(array1, array2, array3) + format.remove_array(2) + expect_arrays(array1, array2) + format.remove_array(1) + expect_arrays(array1,) + format.remove_array(0) + expect_arrays() + + # Insert at beginning + format.insert_array(0, array4) + expect_arrays(array4,) + format.insert_array(0, array3) + expect_arrays(array3, array4) + format.insert_array(0, array2) + expect_arrays(array2, array3, array4) + format.insert_array(0, array1) + expect_arrays(array1, array2, array3, array4) + + # Remove from middle and insert back in middle + format.remove_array(2) + expect_arrays(array1, array2, array4) + format.insert_array(2, array3) + expect_arrays(array1, array2, array3, array4) + format.remove_array(1) + expect_arrays(array1, array3, array4) + format.remove_array(1) + expect_arrays(array1, array4) + format.insert_array(1, array2) + expect_arrays(array1, array2, array4) + format.insert_array(2, array3) + expect_arrays(array1, array2, array3, array4) + + # Clear + format.clear_arrays() + expect_arrays() + + # Add to end but with very high index + format.insert_array(0xffffffff, array1) + expect_arrays(array1,) + format.insert_array(0xffffffff, array2) + expect_arrays(array1, array2) + format.insert_array(0xffffffff, array3) + expect_arrays(array1, array2, array3) + format.insert_array(0xffffffff, array4) + expect_arrays(array1, array2, array3, array4)