[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31148] branches/soc-2010-nexyon/intern/ audaspace/Python/doc: Py API doc: Adding parent property to retrieve full name of objects, also added bpy. path.

Joerg Mueller nexyon at gmail.com
Sat Aug 7 22:00:20 CEST 2010


Revision: 31148
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31148
Author:   nexyon
Date:     2010-08-07 22:00:20 +0200 (Sat, 07 Aug 2010)

Log Message:
-----------
Py API doc: Adding parent property to retrieve full name of objects, also added bpy.path.

Modified Paths:
--------------
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/datatypes.py
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/pyparser.py
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/rnaparser.py
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/run.py
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/sphinxparser.py
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/templates/Layout.rst
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/templates/bpy.ops.Class.rst
    branches/soc-2010-nexyon/intern/audaspace/Python/doc/util.py

Modified: branches/soc-2010-nexyon/intern/audaspace/Python/doc/datatypes.py
===================================================================
--- branches/soc-2010-nexyon/intern/audaspace/Python/doc/datatypes.py	2010-08-07 18:34:16 UTC (rev 31147)
+++ branches/soc-2010-nexyon/intern/audaspace/Python/doc/datatypes.py	2010-08-07 20:00:20 UTC (rev 31148)
@@ -20,11 +20,19 @@
 class DocObj:
 	def __init__(self, name):
 		self.name = name
+		self.parent = None
 		self.description = "Undocumented"
 		self.warnings = []
 		self.notes = []
 		self.seealsos = []
 		self.deprecateds = []
+	def fullname(self):
+		name = self.name
+		obj = self.parent
+		while obj:
+			name = obj.name + "." + name
+			obj = obj.parent
+		return name
 
 class Module(DocObj):
 	def __init__(self, name, short_desc):
@@ -35,28 +43,31 @@
 		self.short_desc = short_desc
 
 class Class(DocObj):
-	def __init__(self, name, module):
+	def __init__(self, name, parent):
 		DocObj.__init__(self, name)
-		self.module = module
+		self.parent = parent
 		self.methods = {}
 		self.attributes = {}
 		self.base = None
 
 class Data(DocObj):
-	def __init__(self, name, value = None):
+	def __init__(self, name, parent, value = None):
 		DocObj.__init__(self, name)
+		self.parent = parent
 		self.value = value
 
 class Function(DocObj):
-	def __init__(self, name):
+	def __init__(self, name, parent):
 		DocObj.__init__(self, name)
+		self.parent = parent
 		self.arguments = []
 		self.return_values = []
 		self.location = None
 
 class Attribute(DocObj):
-	def __init__(self, name, _type = None):
+	def __init__(self, name, parent, _type = None):
 		DocObj.__init__(self, name)
+		self.parent = parent
 		self._type = _type
 		self.readonly = False
 

Modified: branches/soc-2010-nexyon/intern/audaspace/Python/doc/pyparser.py
===================================================================
--- branches/soc-2010-nexyon/intern/audaspace/Python/doc/pyparser.py	2010-08-07 18:34:16 UTC (rev 31147)
+++ branches/soc-2010-nexyon/intern/audaspace/Python/doc/pyparser.py	2010-08-07 20:00:20 UTC (rev 31148)
@@ -33,7 +33,7 @@
 		return not name.startswith('_') and not name.startswith('n_')
 	
 	@staticmethod
-	def get_doc(o, obj, name):
+	def get_doc(o, obj):
 		if obj.__doc__:
 			o.description = obj.__doc__
 			sphinxparser.SphinxParser.parse_inner_doc(o)
@@ -41,13 +41,13 @@
 			o.description = "Undocumented! (`contribute " \
 				"<http://wiki.blender.org/index.php/Dev:2.5/Py/API/Documentation/Contribute" \
 				"?action=edit&section=new&preload=Dev:2.5/Py/API/Documentation/Contribute/Howto-message" \
-				"&preloadtitle={0}>`_)".format(name)
-			print("Warning: object is undocumented: " + name)
+				"&preloadtitle={0}>`_)".format(o.fullname())
+			print("Warning: object is undocumented: " + o.fullname())
 	
 	@classmethod
 	def parse(cls, module, name, short_desc):
 		m = datatypes.Module(name, short_desc)
-		cls.get_doc(m, module, name)
+		cls.get_doc(m, module)
 		
 		if type(module) != types.ModuleType:
 			cls.parse_structure(m, module)
@@ -60,8 +60,8 @@
 	def parse_structure(cls, m, module):
 		for name, desc in sorted(type(module).__dict__.items()):
 			if type(desc) == types.MemberDescriptorType and cls.is_structure_member(name):
-				data = datatypes.Data(name)
-				cls.get_doc(data, desc, "{0}.{1}".format(m.name, name))
+				data = datatypes.Data(name, m)
+				cls.get_doc(data, desc)
 				m.dates[name] = data
 	
 	@classmethod
@@ -70,25 +70,23 @@
 			obj = getattr(module, name)
 			
 			if inspect.isbuiltin(obj):
-				m.functions[name] = cls.parse_builtin(name, obj)
+				m.functions[name] = cls.parse_builtin(name, obj, m)
 			elif inspect.isfunction(obj):
-				m.functions[name] = cls.parse_function(name, obj)
+				m.functions[name] = cls.parse_function(name, obj, m)
 			elif inspect.isclass(obj):
 				if name.islower():
 					print('Note: Not documenting lowercase class: {0}.{1}'.format(m.name, name))
 				else:
 					m.classes[name] = cls.parse_class(name, obj, m)
-			#elif inspect.ismethoddescriptor(obj):
-			#	m.dates[name] = cls.parse_date(name, obj)
 			elif isinstance(obj, (bool, int, float, str, tuple)):
-				m.dates[name] = cls.parse_data(name, obj, repr(obj))
+				m.dates[name] = cls.parse_data(name, obj, m, repr(obj))
 			else:
 				print('Error: Unknown object type: {0}.{1} -> {2}'.format(m.name, name, repr(obj)))
 	
 	@classmethod
-	def parse_builtin(cls, name, function):
-		f = datatypes.Function(name)
-		cls.get_doc(f, function, name)
+	def parse_builtin(cls, name, function, parent):
+		f = datatypes.Function(name, parent)
+		cls.get_doc(f, function)
 		sphinxparser.SphinxParser.parse_function(f)
 		return f
 	
@@ -117,16 +115,16 @@
 		return "{0}({1})".format(function.__name__, ", ".join(args))
 	
 	@classmethod
-	def parse_function(cls, name, function):
-		f = datatypes.Function(name)
-		cls.get_doc(f, function, name)
+	def parse_function(cls, name, function, parent):
+		f = datatypes.Function(name, parent)
+		cls.get_doc(f, function)
 		f.description = "{0}\n{1}".format(cls.get_function_signature(function), f.description)
 		sphinxparser.SphinxParser.parse_function(f)
 		return f
 	
 	@classmethod
-	def parse_data(cls, name, data, value):
-		d = datatypes.Data(name, value)
+	def parse_data(cls, name, data, parent, value):
+		d = datatypes.Data(name, parent, value)
 		if value:
 			d.description = 'Constant value: ' + value
 		else:
@@ -134,27 +132,27 @@
 		return d
 	
 	@classmethod
-	def parse_attribute(cls, name, attribute):
-		a = datatypes.Attribute(name)
-		cls.get_doc(a, attribute, name)
+	def parse_attribute(cls, name, attribute, parent):
+		a = datatypes.Attribute(name, parent)
+		cls.get_doc(a, attribute)
 		return a
 	
 	@classmethod
 	def parse_class(cls, name, _class, module):
 		c = datatypes.Class(name, module)
-		cls.get_doc(c, _class, name)
+		cls.get_doc(c, _class)
 		
 		for name in (mem for mem in sorted(dir(_class)) if cls.is_external(mem)):
 			obj = getattr(_class, name)
 			
 			if inspect.isbuiltin(obj) or inspect.ismethoddescriptor(obj):
-				c.methods[name] = cls.parse_builtin(name, obj)
+				c.methods[name] = cls.parse_builtin(name, obj, c)
 			elif inspect.ismethod(obj):
-				c.methods[name] = cls.parse_function(name, obj)
+				c.methods[name] = cls.parse_function(name, obj, c)
 			elif inspect.isdatadescriptor(obj):
-				c.attributes[name] = cls.parse_attribute(name, obj)
+				c.attributes[name] = cls.parse_attribute(name, obj, c)
 			elif isinstance(obj, (bool, int, float, str, tuple)):
-				m.dates[name] = cls.parse_data(name, obj, repr(obj))
+				m.dates[name] = cls.parse_data(name, obj, c, repr(obj))
 			else:
 				print('Error: Unknown object type: {0}.{1}.{2} -> {3}'.format(module.name, c.name, name, repr(obj)))
 		

Modified: branches/soc-2010-nexyon/intern/audaspace/Python/doc/rnaparser.py
===================================================================
--- branches/soc-2010-nexyon/intern/audaspace/Python/doc/rnaparser.py	2010-08-07 18:34:16 UTC (rev 31147)
+++ branches/soc-2010-nexyon/intern/audaspace/Python/doc/rnaparser.py	2010-08-07 20:00:20 UTC (rev 31148)
@@ -44,7 +44,7 @@
 			else:
 				m.classes[class_name] = _class = datatypes.Class(class_name, m)
 			
-			_class.methods[op.func_name] = f = datatypes.Function(op.func_name)
+			_class.methods[op.func_name] = f = datatypes.Function(op.func_name, _class)
 			if not op.description or op.description == "(undocumented operator)":
 				f.description = 'Undocumented!'
 			else:
@@ -91,13 +91,13 @@
 			
 			# RNA properties
 			for prop in struct.properties:
-				_class.attributes[prop.identifier] = attr = datatypes.Attribute(prop.identifier, prop.get_type_description(class_fmt=":class:`%s`"))
+				_class.attributes[prop.identifier] = attr = datatypes.Attribute(prop.identifier, _class, prop.get_type_description(class_fmt=":class:`%s`"))
 				if prop.description:
 					attr.description = prop.description
 			
 			# RNA functions
 			for func in struct.functions:
-				_class.methods[func.identifier] = f = datatypes.Function(func.identifier)
+				_class.methods[func.identifier] = f = datatypes.Function(func.identifier, _class)
 				f.description = func.description
 				self.parseParameters(f, func)
 				if func.return_values:
@@ -112,13 +112,13 @@
 			
 			# Python properties
 			for name, prop in struct.get_py_properties():
-				_class.attributes[name] = a = pyparser.PyParser.parse_attribute(name, prop)
+				_class.attributes[name] = a = pyparser.PyParser.parse_attribute(name, prop, _class)
 				if not prop.fset:
 					a.readonly = True
 			
 			# Python functions
 			for name, func in struct.get_py_functions():
-				_class.methods[name] = pyparser.PyParser.parse_function(name, func)
+				_class.methods[name] = pyparser.PyParser.parse_function(name, func, _class)
 			
 			# References
 			for ref in struct.references:
@@ -127,9 +127,9 @@
 					ref = '{0}.{1}'.format(ref_split[-2], ref_split[-1])
 				_class.seealsos.append(ref)
 		
-		# special structure: BPyStruct
+		# special structure: bpy_struct
 		if self.struct:
-			_class = pyparser.PyParser.parse_class(self.struct, bpy.types.Struct.__bases__[0], m)#datatypes.Class(self.struct, m)
+			_class = pyparser.PyParser.parse_class(self.struct, bpy.types.Struct.__bases__[0], m)
 			if self.struct in m.classes:
 				_class2 = m.classes[self.struct]
 				_class2.methods = _class.methods

Modified: branches/soc-2010-nexyon/intern/audaspace/Python/doc/run.py
===================================================================
--- branches/soc-2010-nexyon/intern/audaspace/Python/doc/run.py	2010-08-07 18:34:16 UTC (rev 31147)
+++ branches/soc-2010-nexyon/intern/audaspace/Python/doc/run.py	2010-08-07 20:00:20 UTC (rev 31148)
@@ -34,6 +34,7 @@
 modules['bpy.utils'] = pyparser.PyParser.parse(bpy.utils, "bpy.utils", "Utilities")
 modules['bpy.app'] = pyparser.PyParser.parse(bpy.app, "bpy.app", "Application Data")
 modules['bpy.props'] = pyparser.PyParser.parse(bpy.props, "bpy.props", "Property Definitions")
+modules['bpy.path'] = pyparser.PyParser.parse(bpy.path, "bpy.path", "Path Utilities")
 modules['bpy.ops'], modules['bpy.types'], modules['bpy.data'] = rnaparser.RNAParser().parse()
 
 out = sphinxoutput.SphinxOutput()

Modified: branches/soc-2010-nexyon/intern/audaspace/Python/doc/sphinxparser.py
===================================================================
--- branches/soc-2010-nexyon/intern/audaspace/Python/doc/sphinxparser.py	2010-08-07 18:34:16 UTC (rev 31147)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list