| 
									
										
										
										
											2009-03-11 17:28:37 +00:00
										 |  |  |  # ***** 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, | 
					
						
							| 
									
										
										
										
											2010-02-12 13:34:04 +00:00
										 |  |  |  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							| 
									
										
										
										
											2009-03-11 17:28:37 +00:00
										 |  |  |  # | 
					
						
							|  |  |  |  # Contributor(s): Campbell Barton | 
					
						
							|  |  |  |  # | 
					
						
							|  |  |  |  # #**** END GPL LICENSE BLOCK #**** | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  | # <pep8 compliant> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 06:55:30 +00:00
										 |  |  | if 1: | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     # Print once every 1000 | 
					
						
							|  |  |  |     GEN_PATH = True | 
					
						
							|  |  |  |     PRINT_DATA = False | 
					
						
							|  |  |  |     PRINT_DATA_INT = 1000 | 
					
						
							|  |  |  |     VERBOSE = False | 
					
						
							|  |  |  |     VERBOSE_TYPE = False | 
					
						
							|  |  |  |     MAX_RECURSIVE = 8 | 
					
						
							| 
									
										
										
										
											2009-03-21 06:55:30 +00:00
										 |  |  | else: | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     # Print everything | 
					
						
							|  |  |  |     GEN_PATH = True | 
					
						
							|  |  |  |     PRINT_DATA = True | 
					
						
							|  |  |  |     PRINT_DATA_INT = 0 | 
					
						
							|  |  |  |     VERBOSE = False | 
					
						
							|  |  |  |     VERBOSE_TYPE = False | 
					
						
							|  |  |  |     MAX_RECURSIVE = 8 | 
					
						
							| 
									
										
										
										
											2009-03-11 17:28:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 06:55:30 +00:00
										 |  |  | seek_count = [0] | 
					
						
							| 
									
										
										
										
											2009-03-11 17:28:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 06:55:30 +00:00
										 |  |  | def seek(r, txt, recurs): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |     try: | 
					
						
							|  |  |  |         keys = r.keys() | 
					
						
							|  |  |  |     except: | 
					
						
							|  |  |  |         keys = None | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if keys != None: | 
					
						
							|  |  |  |         if PRINT_DATA: | 
					
						
							|  |  |  |             print(txt + '.keys() - ' + str(r.keys())) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |     try: | 
					
						
							|  |  |  |         __members__ = dir(r) | 
					
						
							|  |  |  |     except: | 
					
						
							|  |  |  |         __members__ = [] | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     for item in __members__: | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |         if item.startswith("__"): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |             continue | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |         if GEN_PATH: | 
					
						
							|  |  |  |             newtxt = txt + '.' + item | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |         if item == 'rna_type' and VERBOSE_TYPE == False:  # just avoid because it spits out loads of data | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |             continue | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |         value = getattr(r, item, None) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |         seek(value, newtxt, recurs + 1) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if keys: | 
					
						
							|  |  |  |         for k in keys: | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |             if GEN_PATH: | 
					
						
							|  |  |  |                 newtxt = txt + '["' + k + '"]' | 
					
						
							|  |  |  |             seek(r.__getitem__(k), newtxt, recurs + 1) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     else: | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |             length = len(r) | 
					
						
							|  |  |  |         except: | 
					
						
							|  |  |  |             length = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if VERBOSE == False and length >= 4: | 
					
						
							|  |  |  |             for i in (0, length - 1): | 
					
						
							|  |  |  |                 if i > 0: | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |                     if PRINT_DATA: | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |                         print((" " * len(txt)) + " ... skipping " + str(length - 2) + " items ...") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |                 if GEN_PATH: | 
					
						
							|  |  |  |                     newtxt = txt + '[' + str(i) + ']' | 
					
						
							|  |  |  |                 seek(r[i], newtxt, recurs + 1) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         else: | 
					
						
							|  |  |  |             for i in range(length): | 
					
						
							| 
									
										
										
										
											2011-02-04 09:35:20 +00:00
										 |  |  |                 if GEN_PATH: | 
					
						
							|  |  |  |                     newtxt = txt + '[' + str(i) + ']' | 
					
						
							|  |  |  |                 seek(r[i], newtxt, recurs + 1) | 
					
						
							| 
									
										
										
										
											2009-03-11 17:28:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 06:55:30 +00:00
										 |  |  | seek(bpy.data, 'bpy.data', 0) | 
					
						
							|  |  |  | # seek(bpy.types, 'bpy.types', 0) | 
					
						
							|  |  |  | '''
 | 
					
						
							|  |  |  | for d in dir(bpy.types): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     t = getattr(bpy.types, d) | 
					
						
							|  |  |  |     try:	r = t.bl_rna | 
					
						
							|  |  |  |     except:	r = None | 
					
						
							|  |  |  |     if r: | 
					
						
							|  |  |  |         seek(r, 'bpy.types.' + d + '.bl_rna', 0) | 
					
						
							| 
									
										
										
										
											2009-03-21 06:55:30 +00:00
										 |  |  | '''
 | 
					
						
							| 
									
										
										
										
											2009-03-11 17:28:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #print dir(bpy) | 
					
						
							|  |  |  | #import sys | 
					
						
							|  |  |  | #sys.exit() | 
					
						
							| 
									
										
										
										
											2009-03-21 06:55:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | print("iter over ", seek_count, "rna items") |