[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§ion=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