diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-03-21 09:55:30 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-03-21 09:55:30 +0300 |
commit | 6ab2d7ad659606cbf2a315ef9a576c364e6ec9bb (patch) | |
tree | 56250d1706115c5e4fd5aa8157a8dda91b8d950a /source/blender/python/rna_dump.py | |
parent | b4209c56565660c20718fc2e1ad74d4257683a3e (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.py | 78 |
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") |