From 2049c3625bef06ba5fad8169c042cbdb3641b4d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Fri, 24 May 2024 11:27:57 +0200
Subject: [PATCH] Fix tests with NumPy 2.0

Replace the deprecated `string_` and `unicode_` aliases with the modern
`bytes_` and `str_` replacements to fix compatibility with NumPy 2.0.
This change does not change anything for NumPy 1.x where both types
are aliases to each other.
---
 collada/source.py            | 4 ++--
 collada/tests/test_source.py | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/collada/source.py b/collada/source.py
index e7c7a06..6a0e715 100644
--- a/collada/source.py
+++ b/collada/source.py
@@ -318,7 +318,7 @@ def load(collada, localscope, node):
                 values = [v for v in arraynode.text.split()]
             except ValueError:
                 raise DaeMalformedError('Corrupted IDREF array')
-        data = numpy.array(values, dtype=numpy.unicode_)
+        data = numpy.array(values, dtype=numpy.str_)
         paramnodes = node.findall('%s/%s/%s' % (collada.tag('technique_common'), collada.tag('accessor'), collada.tag('param')))
         if not paramnodes:
             raise DaeIncompleteError('No accessor info in source node')
@@ -425,7 +425,7 @@ def load(collada, localscope, node):
                 values = [v for v in arraynode.text.split()]
             except ValueError:
                 raise DaeMalformedError('Corrupted Name array')
-        data = numpy.array(values, dtype=numpy.unicode_)
+        data = numpy.array(values, dtype=numpy.str_)
         paramnodes = node.findall('%s/%s/%s' % (tag('technique_common'), tag('accessor'), tag
                                                 ('param')))
         if not paramnodes:
diff --git a/collada/tests/test_source.py b/collada/tests/test_source.py
index 9ec0529..81dda61 100644
--- a/collada/tests/test_source.py
+++ b/collada/tests/test_source.py
@@ -31,7 +31,7 @@ def test_float_source_saving(self):
 
     def test_idref_source_saving(self):
         idrefsource = collada.source.IDRefSource("myidrefsource",
-                                                 numpy.array(['Ref1', 'Ref2'], dtype=numpy.string_),
+                                                 numpy.array(['Ref1', 'Ref2'], dtype=numpy.bytes_),
                                                  ('MORPH_TARGET',))
         self.assertEqual(idrefsource.id, "myidrefsource")
         self.assertEqual(len(idrefsource), 2)
@@ -39,7 +39,7 @@ def test_idref_source_saving(self):
         self.assertIsNotNone(str(idrefsource))
         idrefsource.id = "youridrefsource"
         idrefsource.components = ('JOINT_TARGET', 'WHATEVER_TARGET')
-        idrefsource.data = numpy.array(['Ref5', 'Ref6', 'Ref7', 'Ref8', 'Ref9', 'Ref10'], dtype=numpy.string_)
+        idrefsource.data = numpy.array(['Ref5', 'Ref6', 'Ref7', 'Ref8', 'Ref9', 'Ref10'], dtype=numpy.bytes_)
         idrefsource.save()
         loaded_idrefsource = collada.source.Source.load(self.dummy, {}, fromstring(tostring(idrefsource.xmlnode)))
         self.assertTrue(isinstance(loaded_idrefsource, collada.source.IDRefSource))
@@ -49,7 +49,7 @@ def test_idref_source_saving(self):
 
     def test_name_source_saving(self):
         namesource = collada.source.NameSource("mynamesource",
-                                               numpy.array(['Name1', 'Name2'], dtype=numpy.string_),
+                                               numpy.array(['Name1', 'Name2'], dtype=numpy.bytes_),
                                                ('JOINT',))
         self.assertEqual(namesource.id, "mynamesource")
         self.assertEqual(len(namesource), 2)
@@ -57,7 +57,7 @@ def test_name_source_saving(self):
         self.assertIsNotNone(str(namesource))
         namesource.id = "yournamesource"
         namesource.components = ('WEIGHT', 'WHATEVER')
-        namesource.data = numpy.array(['Name1', 'Name2', 'Name3', 'Name4', 'Name5', 'Name6'], dtype=numpy.string_)
+        namesource.data = numpy.array(['Name1', 'Name2', 'Name3', 'Name4', 'Name5', 'Name6'], dtype=numpy.bytes_)
         namesource.save()
         loaded_namesource = collada.source.Source.load(self.dummy, {}, fromstring(tostring(namesource.xmlnode)))
         self.assertTrue(isinstance(loaded_namesource, collada.source.NameSource))
