diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-10-21 20:57:10 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-10-21 20:57:10 +0000 |
commit | 8657f3bb9b6d9e6a005994ebdc191ec49e4fb65c (patch) | |
tree | 11aa3b85fdbf643265d8ac368af8e1c133ccbf1d /doc/build/gen_docstrings.py | |
parent | f2b58b79777dc3e671ae1d2f20033d29c66dbe04 (diff) | |
download | sqlalchemy-8657f3bb9b6d9e6a005994ebdc191ec49e4fb65c.tar.gz |
merge of new documentation generation system
Diffstat (limited to 'doc/build/gen_docstrings.py')
-rw-r--r-- | doc/build/gen_docstrings.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/doc/build/gen_docstrings.py b/doc/build/gen_docstrings.py new file mode 100644 index 000000000..67b60cddc --- /dev/null +++ b/doc/build/gen_docstrings.py @@ -0,0 +1,74 @@ +from toc import TOCElement +import docstring + +import sqlalchemy.schema as schema +import sqlalchemy.engine as engine +import sqlalchemy.engine.strategies as strategies +import sqlalchemy.sql as sql +import sqlalchemy.pool as pool +import sqlalchemy.orm as orm +import sqlalchemy.exceptions as exceptions +import sqlalchemy.ext.proxy as proxy +import sqlalchemy.ext.sessioncontext as sessioncontext +import sqlalchemy.mods.threadlocal as threadlocal +import sqlalchemy.ext.selectresults as selectresults + +def make_doc(obj, classes=None, functions=None): + """generate a docstring.ObjectDoc structure for an individual module, list of classes, and list of functions.""" + return docstring.ObjectDoc(obj, classes=classes, functions=functions) + +def make_all_docs(): + """generate a docstring.AbstractDoc structure.""" + objects = [ + make_doc(obj=sql), + make_doc(obj=schema), + make_doc(obj=engine), + make_doc(obj=engine.url), + make_doc(obj=orm, classes=[orm.MapperExtension]), + make_doc(obj=orm.mapperlib, classes=[orm.mapperlib.Mapper]), + make_doc(obj=orm.query, classes=[orm.query.Query, orm.query.QueryContext, orm.query.SelectionContext]), + make_doc(obj=orm.session, classes=[orm.session.Session, orm.session.SessionTransaction]), + make_doc(obj=pool, classes=[pool.DBProxy, pool.Pool, pool.QueuePool, pool.SingletonThreadPool]), + make_doc(obj=sessioncontext), + make_doc(obj=threadlocal), + make_doc(obj=selectresults), + make_doc(obj=exceptions), + make_doc(obj=proxy), + ] + return objects + +def create_docstring_toc(data, root): + """given a docstring.AbstractDoc structure, create new TOCElement nodes corresponding + to the elements and cross-reference them back to the doc structure.""" + root = TOCElement("docstrings", name="docstrings", description="Generated Documentation", parent=root) + def create_obj_toc(obj, toc): + if obj.isclass: + s = [] + links = [] + for elem in obj.inherits: + if isinstance(elem, docstring.ObjectDoc): + links.append("<a href=\"#%s\">%s</a>" % (str(elem.id), elem.name)) + s.append(elem.name) + else: + links.append(str(elem)) + s.append(str(elem)) + description = "class " + obj.classname + "(%s)" % (','.join(s)) + htmldescription = "class " + obj.classname + "(%s)" % (','.join(links)) + else: + description = obj.description + htmldescription = obj.description + + toc = TOCElement("docstrings", obj.name, description, parent=toc) + obj.toc_path = toc.path + + if not obj.isclass and obj.functions: + TOCElement("docstrings", name="modfunc", description="Module Functions", parent=toc) + + if obj.classes: + for class_ in obj.classes: + create_obj_toc(class_, toc) + + for obj in data: + create_obj_toc(obj, root) + return data + |