Repository: kserve/kserve

Issue:
Numpy 1.24 breaking changes 
/kind bug

**What steps did you take and what happened:**
[A clear and concise description of what the bug is.]
numpy 1.24 was released on 12/18 https://pypi.org/project/numpy/1.24.0/

https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
```
kserve/test/test_v1beta1_transformer_spec.py - AttributeError: module 'numpy' has no attribute 'float'
[1927](https://github.com/kserve/kserve/actions/runs/3731363145/jobs/6329505081#step:5:1928)
ERROR kserve/test/test_v1beta1_transformers_config.py - AttributeError: module 'numpy' has no attribute 'float'
[1928](https://github.com/kserve/kserve/actions/runs/3731363145/jobs/6329505081#step:5:1929)
ERROR kserve/test/test_v1beta1_triton_spec.py - AttributeError: module 'numpy' has no attribute 'float'
[1929](https://github.com/kserve/kserve/actions/runs/3731363145/jobs/6329505081#step:5:1930)
ERROR kserve/test/test_v1beta1_xg_boost_spec.py - AttributeError: module 'numpy' has no attribute 'float'
```

**What did you expect to happen:**


**What's the InferenceService yaml:**
[To help us debug please run `kubectl get isvc $name -n $namespace -oyaml` and paste the output]

**Anything else you would like to add:**
[Miscellaneous information that will assist in solving the issue.]


**Environment:**

- Istio Version:
- Knative Version:
- KServe Version:
- Kubeflow version:
- Cloud Environment:[k8s_istio/istio_dex/gcp_basic_auth/gcp_iap/aws/aws_cognito/ibm]
- Minikube/Kind version:
- Kubernetes version: (use `kubectl version`):
- OS (e.g. from `/etc/os-release`):



Discussion:
Reopen to fix the numpy warnings 

Resolving patch:
diff --git a/python/kserve/kserve/api/watch.py b/python/kserve/kserve/api/watch.py
--- a/python/kserve/kserve/api/watch.py
+++ b/python/kserve/kserve/api/watch.py
@@ -13,9 +13,10 @@
 # limitations under the License.
 
 import time
+
 from kubernetes import client
 from kubernetes import watch as k8s_watch
-from table_logger import TableLogger
+from tabulate import tabulate
 
 from ..constants import constants
 from ..utils import utils
@@ -27,10 +28,8 @@ def isvc_watch(name=None, namespace=None, timeout_seconds=600, generation=0):
     if namespace is None:
         namespace = utils.get_default_target_namespace()
 
-    tbl = TableLogger(
-        columns='NAME,READY,PREV,LATEST,URL',
-        colwidth={'NAME': 20, 'READY': 10, 'PREV': 25, 'LATEST': 25, 'URL': 65},
-        border=False)
+    headers = ['NAME', 'READY', 'PREV', 'LATEST', 'URL']
+    table_fmt = 'plain'
 
     stream = k8s_watch.Watch().stream(
         client.CustomObjectsApi().list_namespaced_custom_object,
@@ -63,12 +62,13 @@ def isvc_watch(name=None, namespace=None, timeout_seconds=600, generation=0):
                     for condition in isvc['status'].get('conditions', {}):
                         if condition.get('type', '') == 'Ready':
                             status = condition.get('status', 'Unknown')
-                    tbl(isvc_name, status, 100-traffic_percent, traffic_percent, url)
+                    print(tabulate([[isvc_name, status, 100 - traffic_percent, traffic_percent, url]],
+                                   headers=headers, tablefmt=table_fmt))
                     if status == 'True':
                         break
 
             else:
-                tbl(isvc_name, status, '', '', '')
+                print(tabulate([[isvc_name, status, '', '', '']], headers=headers, tablefmt=table_fmt))
                 # Sleep 2 to avoid status section is not generated within a very short time.
                 time.sleep(2)
                 continue


Test patch: