123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- # ##### 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- #
- # Contributor(s): Campbell Barton
- #
- # ##### END GPL LICENSE BLOCK #####
- # <pep8 compliant>
- 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
- seek_count = [0]
- 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 recurs > MAX_RECURSIVE:
- #print ("Recursion is over max")
- #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 is not 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 GEN_PATH:
- newtxt = txt + '.' + item
- if item == 'rna_type' and VERBOSE_TYPE is False: # just avoid because it spits out loads of data
- continue
- value = getattr(r, item, None)
- seek(value, newtxt, recurs + 1)
- if keys:
- for k in keys:
- if GEN_PATH:
- newtxt = txt + '["' + k + '"]'
- seek(r.__getitem__(k), newtxt, recurs + 1)
- else:
- try:
- length = len(r)
- except:
- length = 0
- if VERBOSE is 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 GEN_PATH:
- newtxt = txt + '[' + str(i) + ']'
- seek(r[i], newtxt, recurs + 1)
- else:
- for i in range(length):
- 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.bl_rna
- except: r = None
- if r:
- seek(r, 'bpy.types.' + d + '.bl_rna', 0)
- '''
- #print dir(bpy)
- #import sys
- #sys.exit()
- print("iter over ", seek_count, "rna items")
|