Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-03-21 09:55:30 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-03-21 09:55:30 +0300
commit6ab2d7ad659606cbf2a315ef9a576c364e6ec9bb (patch)
tree56250d1706115c5e4fd5aa8157a8dda91b8d950a /source/blender/python/rna_dump.py
parentb4209c56565660c20718fc2e1ad74d4257683a3e (diff)
- lazy subtype initialization rna, was initializing every type in bpy.types at startup, which is slow and doesn't allow access to dynamically added types.
- bpy.types isnt a module anymore, defined as its own PyType, getattr looks up the rna collection each time. - refcounting fixes - fixe epydoc generation with undefined values
Diffstat (limited to 'source/blender/python/rna_dump.py')
-rw-r--r--source/blender/python/rna_dump.py78
1 files changed, 51 insertions, 27 deletions
diff --git a/source/blender/python/rna_dump.py b/source/blender/python/rna_dump.py
index f587cd983b2..66fb76c35aa 100644
--- a/source/blender/python/rna_dump.py
+++ b/source/blender/python/rna_dump.py
@@ -18,20 +18,41 @@
#
# #**** END GPL LICENSE BLOCK #****
+if 1:
+ # Print once every 1000
+ GEN_PATH = True
+ PRINT_DATA = False
+ PRINT_DATA_INT = 1000
+ VERBOSE = False
+ VERBOSE_TYPE = False
+ MAX_RECURSIVE = 8
+else:
+ # Print everything
+ GEN_PATH = True
+ PRINT_DATA = True
+ PRINT_DATA_INT = 0
+ VERBOSE = False
+ VERBOSE_TYPE = False
+ MAX_RECURSIVE = 8
-PRINT_DATA = True
-VERBOSE = False
-VERBOSE_TYPE = False
-SKIP_RECURSIVE = False
+seek_count = [0]
-
-def seek(r, txt):
- print(txt)
+def seek(r, txt, recurs):
+
+ seek_count[0] += 1
+
+ if PRINT_DATA_INT:
+ if not (seek_count[0] % PRINT_DATA_INT):
+ print(seek_count[0], txt)
+
+ if PRINT_DATA:
+ print(txt)
+
newtxt = ''
- if len(txt) > 200:
- print ("Somthing is wrong")
- print (txt)
+ if recurs > MAX_RECURSIVE:
+ #print ("Recursion is over max")
+ #print (txt)
return
type_r = type(r)
@@ -64,27 +85,21 @@ def seek(r, txt):
if item.startswith('__'):
continue
- if PRINT_DATA: newtxt = txt + '.' + item
+ if GEN_PATH: newtxt = txt + '.' + item
if item == 'rna_type' and VERBOSE_TYPE==False: # just avoid because it spits out loads of data
continue
- if SKIP_RECURSIVE:
- if item in txt:
- if PRINT_DATA:
- print(newtxt + ' - (skipping to avoid recursive search)')
- continue
-
try: value = getattr(r, item)
except: value = None
- seek( value, newtxt)
+ seek( value, newtxt, recurs + 1)
if keys:
for k in keys:
- if PRINT_DATA: newtxt = txt + '["' + k + '"]'
- seek(r.__getitem__(k), newtxt)
+ if GEN_PATH: newtxt = txt + '["' + k + '"]'
+ seek(r.__getitem__(k), newtxt, recurs+1)
else:
try: length = len( r )
@@ -96,17 +111,26 @@ def seek(r, txt):
if PRINT_DATA:
print((' '*len(txt)) + ' ... skipping '+str(length-2)+' items ...')
- if PRINT_DATA: newtxt = txt + '[' + str(i) + ']'
- seek(r[i], newtxt)
+ if GEN_PATH: newtxt = txt + '[' + str(i) + ']'
+ seek(r[i], newtxt, recurs+1)
else:
for i in range(length):
- if PRINT_DATA: newtxt = txt + '[' + str(i) + ']'
- seek(r[i], newtxt)
-
-#print (dir(bpy))
-seek(bpy.data, 'bpy.data')
+ if GEN_PATH: newtxt = txt + '[' + str(i) + ']'
+ seek(r[i], newtxt, recurs+1)
+seek(bpy.data, 'bpy.data', 0)
+# seek(bpy.types, 'bpy.types', 0)
+'''
+for d in dir(bpy.types):
+ t = getattr(bpy.types, d)
+ try: r = t.__rna__
+ except: r = None
+ if r:
+ seek(r, 'bpy.types.' + d + '.__rna__', 0)
+'''
#print dir(bpy)
#import sys
#sys.exit()
+
+print("iter over ", seek_count, "rna items")