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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to