MLBEDSW-6982: Move to setup.cfg and pyproject.toml

- Move all static information from setup.py to newly added
  pyproject.toml
- Add setup.cfg used for static information that cannot be added to
  pyproject.toml due to it still being in beta.
- Modify mlw_codec to to throw a real python exception when importing
  NumPy arrays instead of just printing them to stdout.
- Surround mlw_codec import with try catch statement to catch NumPy C
  API mismatch errors and throw them again with a more detailed message.
- Update README.md with documentation about known issue with changing
  used NumPy version after installing ethos-u-vela.

Change-Id: I1eeee5536be7c1744e30d6088f7069fbb1403e06
Signed-off-by: Raul Farkas <raul.farkas@arm.com>
diff --git a/ethosu/vela/weight_compressor.py b/ethosu/vela/weight_compressor.py
index e3e318c..e56cc5e 100644
--- a/ethosu/vela/weight_compressor.py
+++ b/ethosu/vela/weight_compressor.py
@@ -1,4 +1,4 @@
-# SPDX-FileCopyrightText: Copyright 2020-2022 Arm Limited and/or its affiliates <open-source-office@arm.com>
+# SPDX-FileCopyrightText: Copyright 2020-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -37,7 +37,28 @@
 from .tensor import Tensor
 from .tensor import TensorFormat
 from .tensor import TensorPurpose
-from ethosu import mlw_codec
+
+# Handle any errors thrown by NumPy while importing mlw_codec module
+try:
+    from ethosu import mlw_codec
+except RuntimeError as ex:
+    if "mlw_codec error: module compiled against API version" in str(ex):
+        # Extract API versions from error message
+        matches = [s for s in str(ex).split() if "0x" in s]
+        if len(matches) == 2:
+            # Raise new exception with more detailed message
+            raise ImportError(  # pylint: disable=W0707
+                "NumPy C API version mismatch "
+                f"(Build-time version: {matches[0]}, "
+                f"Run-time version: {matches[1]})"
+                "\nThis is a known issue most likely caused by a change in the API "
+                "version in NumPy after installing ethos-u-vela.\nYou can find more "
+                "information about the issue and possible solutions in the "
+                "'Known Issues' section at https://review.mlplatform.org/"
+                "plugins/gitiles/ml/ethos-u/ethos-u-vela/+/refs/heads/main/"
+                "README.md#known-issues"
+            )
+    raise
 
 
 # Contains meta info for a weight compression. If two tensors have identical weight compression config,