diff options
Diffstat (limited to 'source/blender/python/rna_dump.py')
-rw-r--r-- | source/blender/python/rna_dump.py | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/source/blender/python/rna_dump.py b/source/blender/python/rna_dump.py new file mode 100644 index 00000000000..826051d9ceb --- /dev/null +++ b/source/blender/python/rna_dump.py @@ -0,0 +1,112 @@ + # ***** BEGIN GPL LICENSE BLOCK ***** + # + # This program is free software; you can redistribute it and/or + # modify it under the terms of the GNU General Public License + # as published by the Free Software Foundation; either version 2 + # of the License, or (at your option) any later version. + # + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software Foundation, + # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + # + # Contributor(s): Campbell Barton + # + # #**** END GPL LICENSE BLOCK #**** + + +PRINT_DATA = True +VERBOSE = False +VERBOSE_TYPE = False +SKIP_RECURSIVE = False + + +def seek(r, txt): + print(txt) + newtxt = '' + + if len(txt) > 200: + print ("Somthing is wrong") + print (txt) + return + + type_r = type(r) + + # print(type_r) + # print(dir(r)) + + # basic types + if type_r in (float, int, bool, type(None)): + if PRINT_DATA: + print(txt + ' -> ' + str(r)) + return + + if type_r == str: + if PRINT_DATA: + print(txt + ' -> "' + str(r) + '"') + return + + try: keys = r.keys() + except: keys = None + + if keys != None: + if PRINT_DATA: + print(txt + '.keys() - ' + str(r.keys())) + + try: __members__ = dir(r) + except: __members__ = [] + + for item in __members__: + if item.startswith('__'): + continue + + if PRINT_DATA: 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) + + + if keys: + for k in keys: + if PRINT_DATA: newtxt = txt + '["' + k + '"]' + seek(r.__getitem__(k), newtxt) + + else: + try: length = len( r ) + except: length = 0 + + if VERBOSE==False and length >= 4: + for i in (0, length-1): + if i>0: + if PRINT_DATA: + print((' '*len(txt)) + ' ... skipping '+str(length-2)+' items ...') + + if PRINT_DATA: newtxt = txt + '[' + str(i) + ']' + seek(r[i], newtxt) + else: + for i in range(length): + if PRINT_DATA: newtxt = txt + '[' + str(i) + ']' + seek(r[i], newtxt) + +#print (dir(bpy)) +seek(bpy, 'bpy') + + +#print dir(bpy) +#import sys +#sys.exit() |