Merge remote-tracking branch 'origin/master' into numpy-array-view
[idea/community.git] / python / helpers / pydev / pydevd_resolver.py
index d004a32c69eb0ea24dd719c121caa3f3bb987b22..51d9be0f23d3a66862cdf91eda69625f3e151c7d 100644 (file)
@@ -13,10 +13,13 @@ except:
     setattr(__builtin__, 'False', 0)
 
 import pydevd_constants
-from pydevd_constants import DictIterItems, xrange, izip
+from pydevd_constants import DictIterItems, xrange
 
 
-MAX_ITEMS_TO_HANDLE = 500
+# Note: 300 is already a lot to see in the outline (after that the user should really use the shell to get things)
+# and this also means we'll pass less information to the client side (which makes debugging faster).
+MAX_ITEMS_TO_HANDLE = 300 
+
 TOO_LARGE_MSG = 'Too large to show contents. Max items to show: ' + str(MAX_ITEMS_TO_HANDLE)
 TOO_LARGE_ATTR = 'Unable to handle:'
 
@@ -272,19 +275,20 @@ class TupleResolver: #to enumerate tuples and lists
         return var[int(attribute)]
 
     def getDictionary(self, var):
-        #return dict( [ (i, x) for i, x in enumerate(var) ] )
-        # modified 'cause jython does not have enumerate support
         l = len(var)
         d = {}
 
-        if l < MAX_ITEMS_TO_HANDLE:
-            format = '%0' + str(int(len(str(l)))) + 'd'
-
+        format_str = '%0' + str(int(len(str(l)))) + 'd'
 
-            for i, item in izip(xrange(l), var):
-                d[ format % i ] = item
-        else:
-            d[TOO_LARGE_ATTR] = TOO_LARGE_MSG
+        i = 0
+        for item in var:
+            d[format_str % i] = item
+            i += 1
+            
+            if i > MAX_ITEMS_TO_HANDLE:
+                d[TOO_LARGE_ATTR] = TOO_LARGE_MSG
+                break
+                
         d['__len__'] = len(var)
         return d