From 85e207094be4a84effcb81d0e47fa959fd2a238e Mon Sep 17 00:00:00 2001 From: "ekaterina.itsenko" Date: Tue, 16 Jul 2024 16:13:34 +0200 Subject: [PATCH] [PyCharm] PY-73914 Scientific View(fix): Fix issues GitOrigin-RevId: 5e9eb49cfa8b29edeab058f032c57bea8bbef0a8 --- .../pydev/_pydevd_bundle/pydevd_tables.py | 8 ++++++- .../pydev/_pydevd_bundle/pydevd_thrift.py | 5 ++++- .../pydev/_pydevd_bundle/pydevd_vars.py | 5 ++++- .../tables/pydevd_numpy_based.py | 22 ++++++++++++------- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/python/helpers/pydev/_pydevd_bundle/pydevd_tables.py b/python/helpers/pydev/_pydevd_bundle/pydevd_tables.py index ae3c7ad0ed36..681c3699d1e9 100644 --- a/python/helpers/pydev/_pydevd_bundle/pydevd_tables.py +++ b/python/helpers/pydev/_pydevd_bundle/pydevd_tables.py @@ -72,7 +72,13 @@ def __get_table_provider(output): 'pandera.typing.pandas.DataFrame']: import _pydevd_bundle.tables.pydevd_pandas as table_provider # dict is needed for sort commands - elif type_qualified_name in ['numpy.ndarray', 'builtins.dict']: + elif type_qualified_name == 'builtins.dict': + table_type = '{}.{}'.format(type(output['data']).__module__, type(output['data']).__name__) + if table_type in ['tensorflow.python.framework.sparse_tensor.SparseTensor', 'torch.Tensor']: + import _pydevd_bundle.tables.pydevd_numpy_based as table_provider + else: + import _pydevd_bundle.tables.pydevd_numpy as table_provider + elif type_qualified_name == 'numpy.ndarray': import _pydevd_bundle.tables.pydevd_numpy as table_provider elif type_qualified_name in ['tensorflow.python.framework.ops.EagerTensor', 'tensorflow.python.ops.resource_variable_ops.ResourceVariable', diff --git a/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py b/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py index 3146a7727efc..dc093d96c805 100644 --- a/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py +++ b/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py @@ -409,7 +409,10 @@ def array_to_thrift_struct(array, name, roffset, coffset, rows, cols, format): def tensor_to_thrift_struct(tensor, name, roffset, coffset, rows, cols, format): - return array_to_thrift_struct(tensor.numpy(), name, roffset, coffset, rows, cols, format) + try: + return array_to_thrift_struct(tensor.numpy(), name, roffset, coffset, rows, cols, format) + except TypeError: + return array_to_thrift_struct(tensor.to_dense().numpy(), name, roffset, coffset, rows, cols, format) def sparse_tensor_to_thrift_struct(tensor, name, roffset, coffset, rows, cols, format): diff --git a/python/helpers/pydev/_pydevd_bundle/pydevd_vars.py b/python/helpers/pydev/_pydevd_bundle/pydevd_vars.py index d9b1b4097bcc..99a6ad418de4 100644 --- a/python/helpers/pydev/_pydevd_bundle/pydevd_vars.py +++ b/python/helpers/pydev/_pydevd_bundle/pydevd_vars.py @@ -583,7 +583,10 @@ def array_to_xml(array, name, roffset, coffset, rows, cols, format): def tensor_to_xml(tensor, name, roffset, coffset, rows, cols, format): - return array_to_xml(tensor.numpy(), name, roffset, coffset, rows, cols, format) + try: + return array_to_xml(tensor.numpy(), name, roffset, coffset, rows, cols, format) + except TypeError: + return array_to_xml(tensor.to_dense().numpy(), name, roffset, coffset, rows, cols, format) def sparse_tensor_to_xml(tensor, name, roffset, coffset, rows, cols, format): diff --git a/python/helpers/pydev/_pydevd_bundle/tables/pydevd_numpy_based.py b/python/helpers/pydev/_pydevd_bundle/tables/pydevd_numpy_based.py index af8a49917d21..75cf79791175 100644 --- a/python/helpers/pydev/_pydevd_bundle/tables/pydevd_numpy_based.py +++ b/python/helpers/pydev/_pydevd_bundle/tables/pydevd_numpy_based.py @@ -220,14 +220,20 @@ def _create_table(command, start_index=None, end_index=None): np_array = command['data'] sort_keys = command['sort_keys'] else: - try: - import tensorflow as tf - if isinstance(command, tf.SparseTensor): - command = tf.sparse.to_dense(tf.sparse.reorder(command)) - except ImportError: - pass - finally: - np_array = command + np_array = command + + try: + import tensorflow as tf + if isinstance(np_array, tf.SparseTensor): + np_array = tf.sparse.to_dense(tf.sparse.reorder(np_array)) + except ImportError: + pass + try: + import torch + if isinstance(np_array, torch.Tensor): + np_array = np_array.to_dense() + except ImportError: + pass if is_pd: sorting_arr = _sort_df(pd.DataFrame(np_array), sort_keys)