From ac9df1d29b3597f0aba595eb4b1db568e2f82886 Mon Sep 17 00:00:00 2001 From: Alexander Marchuk Date: Thu, 4 Sep 2014 19:27:32 +0400 Subject: [PATCH] improve slice view (PY-13837) and add logic for ndarray slice evaluation fix PY-13850 Evaluate list item for octal return SyntaxError --- python/helpers/pydev/pydevd_resolver.py | 2 +- .../com/jetbrains/python/debugger/PyDebugValue.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/python/helpers/pydev/pydevd_resolver.py b/python/helpers/pydev/pydevd_resolver.py index 51d9be0f23d3..acb611dc4528 100644 --- a/python/helpers/pydev/pydevd_resolver.py +++ b/python/helpers/pydev/pydevd_resolver.py @@ -439,7 +439,7 @@ class NdArrayResolver: ret['shape'] = obj.shape ret['dtype'] = obj.dtype ret['size'] = obj.size - ret['[0:%s]' % (len(obj))] = {'items' : str(obj)} + ret['[0:%s]' % (len(obj))] = list(obj) return ret class NdArrayItemsContainer: pass diff --git a/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java b/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java index bdcf5e41a4cf..ddec6797ea8d 100644 --- a/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java +++ b/python/pydevSrc/com/jetbrains/python/debugger/PyDebugValue.java @@ -97,7 +97,7 @@ public class PyDebugValue extends XNamedValue { myParent.buildExpression(result); if (("dict".equals(myParent.getType()) || "list".equals(myParent.getType()) || "tuple".equals(myParent.getType())) && !isLen(myName)) { - result.append('[').append(removeId(myName)).append(']'); + result.append('[').append(removeLeadingZeros(removeId(myName))).append(']'); } else if (("set".equals(myParent.getType())) && !isLen(myName)) { //set doesn't support indexing @@ -105,6 +105,9 @@ public class PyDebugValue extends XNamedValue { else if (isLen(myName)) { result.append('.').append(myName).append("()"); } + else if (("ndarray".equals(myParent.getType()) || "matrix".equals(myParent.getType())) && myName.startsWith("[")) { + result.append(removeLeadingZeros(myName)); + } else { result.append('.').append(myName); } @@ -119,6 +122,11 @@ public class PyDebugValue extends XNamedValue { return name; } + private static String removeLeadingZeros(@NotNull String name) { + //bugs.python.org/issue15254: "0" prefix for octal + return name.replaceFirst("^0+(?!$)", ""); + } + private static boolean isLen(String name) { return "__len__".equals(name); }