papi: more detailed packing error message 22/40622/2
authorKlement Sekera <[email protected]>
Fri, 29 Mar 2024 14:04:49 +0000 (15:04 +0100)
committerOle Tr�an <[email protected]>
Wed, 12 Jun 2024 11:55:50 +0000 (11:55 +0000)
'struct.error: required argument is not an integer'

is quite useless itself, so let's raise an error from it at least
saying what was the thing getting packed

Type: improvement
Change-Id: Icb762fbab98446d1e1331315e6c337f789cbba95
Signed-off-by: Klement Sekera <[email protected]>
src/vpp-api/python/vpp_papi/vpp_serializer.py

index d724cb3..707bb03 100644 (file)
@@ -644,10 +644,15 @@ class VPPType(Packer):
             else:
                 arg = data[a]
                 kwarg = kwargs[a] if a in kwargs else None
-            if isinstance(self.packers[i], VPPType):
-                b += self.packers[i].pack(arg, kwarg)
-            else:
-                b += self.packers[i].pack(arg, kwargs)
+            try:
+                if isinstance(self.packers[i], VPPType):
+                    b += self.packers[i].pack(arg, kwarg)
+                else:
+                    b += self.packers[i].pack(arg, kwargs)
+            except Exception as e:
+                raise VPPSerializerValueError(
+                    f"Exception while packing {data} for {self.name}.{a}."
+                ) from e
 
         return bytes(b)