summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-06-27 18:07:56 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-06-27 18:07:56 -0400
commit863a7619a39724e0c0ecee2d70e61ea538c273fc (patch)
tree052603ef5e41f291180ed182664f39c5163a6567
parente5309b128d28c94d7905bb37541c3c3b88f00555 (diff)
downloadaskbot-863a7619a39724e0c0ecee2d70e61ea538c273fc.tar.gz
askbot-863a7619a39724e0c0ecee2d70e61ea538c273fc.tar.bz2
askbot-863a7619a39724e0c0ecee2d70e61ea538c273fc.zip
made autodoc work project-wide, tweaked some doc strings
-rw-r--r--askbot/__init__.py14
-rw-r--r--askbot/admin.py7
-rwxr-xr-x[-rw-r--r--]askbot/bin/generate_modules.py1384
-rw-r--r--askbot/doc/source/conf.py2
-rw-r--r--askbot/doc/source/devel/__init__.rst1
-rw-r--r--askbot/doc/source/devel/admin.rst3
-rw-r--r--askbot/doc/source/devel/askbot.admin.rst10
-rw-r--r--askbot/doc/source/devel/askbot.auth.rst10
-rw-r--r--askbot/doc/source/devel/askbot.bin.generate_modules.rst10
-rw-r--r--askbot/doc/source/devel/askbot.bin.rst19
-rw-r--r--askbot/doc/source/devel/askbot.bin.show_profile_stats.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.email.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.external_keys.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.flatpages.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.forum_data_rules.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.minimum_reputation.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.reputation_changes.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.rst29
-rw-r--r--askbot/doc/source/devel/askbot.conf.settings_wrapper.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.site_settings.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.skin_counter_settings.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.skin_general_settings.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.user_settings.rst10
-rw-r--r--askbot/doc/source/devel/askbot.conf.vote_rules.rst10
-rw-r--r--askbot/doc/source/devel/askbot.const.message_keys.rst10
-rw-r--r--askbot/doc/source/devel/askbot.const.rst18
-rw-r--r--askbot/doc/source/devel/askbot.context.rst10
-rw-r--r--askbot/doc/source/devel/askbot.deployment.dialogs.rst10
-rw-r--r--askbot/doc/source/devel/askbot.deployment.messages.rst10
-rw-r--r--askbot/doc/source/devel/askbot.deployment.path_utils.rst10
-rw-r--r--askbot/doc/source/devel/askbot.deployment.rst20
-rw-r--r--askbot/doc/source/devel/askbot.deps.grapefruit.rst10
-rw-r--r--askbot/doc/source/devel/askbot.deps.rst28
-rw-r--r--askbot/doc/source/devel/askbot.doc.source.conf.rst10
-rw-r--r--askbot/doc/source/devel/askbot.feed.rst10
-rw-r--r--askbot/doc/source/devel/askbot.forms.rst10
-rw-r--r--askbot/doc/source/devel/askbot.importers.rst24
-rw-r--r--askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.load_stackexchange.rst10
-rw-r--r--askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.rst18
-rw-r--r--askbot/doc/source/devel/askbot.importers.stackexchange.management.rst24
-rw-r--r--askbot/doc/source/devel/askbot.importers.stackexchange.models.rst10
-rw-r--r--askbot/doc/source/devel/askbot.importers.stackexchange.parse_models.rst10
-rw-r--r--askbot/doc/source/devel/askbot.importers.stackexchange.rst26
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.add_admin.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.base_command.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.clean_award_badges.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.message_to_everyone.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.multi_award_badges.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.once_award_badges.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.pg_base_command.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.pg_clean_award_badges.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.pg_multi_award_badges.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.pg_once_award_badges.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.remove_admin.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.rst31
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.sample_command.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.send_email_alerts.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.commands.subscribe_everyone.rst10
-rw-r--r--askbot/doc/source/devel/askbot.management.rst24
-rw-r--r--askbot/doc/source/devel/askbot.middleware.anon_user.rst10
-rw-r--r--askbot/doc/source/devel/askbot.middleware.cancel.rst10
-rw-r--r--askbot/doc/source/devel/askbot.middleware.pagesize.rst10
-rw-r--r--askbot/doc/source/devel/askbot.middleware.rst22
-rw-r--r--askbot/doc/source/devel/askbot.middleware.spaceless.rst10
-rw-r--r--askbot/doc/source/devel/askbot.middleware.view_log.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0001_initial.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0004_install_full_text_indexes_for_mysql.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0005_install_badges.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0007_install_mentions_model.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0008_add_html_field_to_comments.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0009_calculate_html_field_for_comments.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0010_add_receiving_user_to_activity_model.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0011_merge_mentions_into_activity.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0012_delete_some_unused_models.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0013_add_response_count__to_user.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0014_rename_schema_from_forum_to_askbot.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0015_rename_forum_contenttypes_to_askbot.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0016_auto__del_validationhash.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.0017_add_group__moderators.rst10
-rw-r--r--askbot/doc/source/devel/askbot.migrations.rst34
-rw-r--r--askbot/doc/source/devel/askbot.models.answer.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.base.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.content.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.meta.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.question.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.repute.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.rst26
-rw-r--r--askbot/doc/source/devel/askbot.models.signals.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.tag.rst10
-rw-r--r--askbot/doc/source/devel/askbot.models.user.rst10
-rw-r--r--askbot/doc/source/devel/askbot.rst48
-rw-r--r--askbot/doc/source/devel/askbot.search.indexer.rst10
-rw-r--r--askbot/doc/source/devel/askbot.search.rst19
-rw-r--r--askbot/doc/source/devel/askbot.search.state_manager.rst10
-rw-r--r--askbot/doc/source/devel/askbot.setup_templates.manage.rst10
-rw-r--r--askbot/doc/source/devel/askbot.setup_templates.rst20
-rw-r--r--askbot/doc/source/devel/askbot.setup_templates.settings.rst10
-rw-r--r--askbot/doc/source/devel/askbot.setup_templates.urls.rst10
-rw-r--r--askbot/doc/source/devel/askbot.sitemap.rst10
-rw-r--r--askbot/doc/source/devel/askbot.skins.loaders.rst10
-rw-r--r--askbot/doc/source/devel/askbot.skins.rst19
-rw-r--r--askbot/doc/source/devel/askbot.skins.utils.rst10
-rw-r--r--askbot/doc/source/devel/askbot.templatetags.extra_filters.rst10
-rw-r--r--askbot/doc/source/devel/askbot.templatetags.extra_tags.rst10
-rw-r--r--askbot/doc/source/devel/askbot.templatetags.rst20
-rw-r--r--askbot/doc/source/devel/askbot.templatetags.smart_if.rst10
-rw-r--r--askbot/doc/source/devel/askbot.tests.rst10
-rw-r--r--askbot/doc/source/devel/askbot.urls.rst10
-rw-r--r--askbot/doc/source/devel/askbot.user_messages.context_processors.rst10
-rw-r--r--askbot/doc/source/devel/askbot.user_messages.rst18
-rw-r--r--askbot/doc/source/devel/askbot.utils.cache.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.colors.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.decorators.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.diff.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.email.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.forms.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.functions.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.html.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.lists.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.markup.rst10
-rw-r--r--askbot/doc/source/devel/askbot.utils.rst27
-rw-r--r--askbot/doc/source/devel/askbot.views.commands.rst10
-rw-r--r--askbot/doc/source/devel/askbot.views.meta.rst10
-rw-r--r--askbot/doc/source/devel/askbot.views.readers.rst10
-rw-r--r--askbot/doc/source/devel/askbot.views.rst22
-rw-r--r--askbot/doc/source/devel/askbot.views.users.rst10
-rw-r--r--askbot/doc/source/devel/askbot.views.writers.rst10
-rw-r--r--askbot/doc/source/devel/models.rst3
-rw-r--r--askbot/doc/source/devel/modules.rst33
-rw-r--r--askbot/doc/source/devel/views/__init__.rst3
-rw-r--r--askbot/doc/source/devel/views/commands.rst3
-rw-r--r--askbot/doc/source/devel/views/meta.rst3
-rw-r--r--askbot/doc/source/devel/views/readers.rst3
-rw-r--r--askbot/doc/source/devel/views/users.rst4
-rw-r--r--askbot/doc/source/devel/views/writers.rst4
-rw-r--r--askbot/views/__init__.py16
-rw-r--r--askbot/views/commands.py5
-rw-r--r--askbot/views/meta.py5
-rw-r--r--askbot/views/readers.py5
-rw-r--r--askbot/views/users.py5
-rw-r--r--askbot/views/writers.py5
-rw-r--r--setup.py2
145 files changed, 1919 insertions, 1147 deletions
diff --git a/askbot/__init__.py b/askbot/__init__.py
index 8368ecf4..4550ba40 100644
--- a/askbot/__init__.py
+++ b/askbot/__init__.py
@@ -1,15 +1,3 @@
"""
-.. askbot-module:
-
-:mod:`askbot` -- the Django Q&A forum application
-=================================================
-
-This module encapsulates the askbot application and consists of the following sub-modules:
-
-* :ref:`admin <askbot.admin>` - connector of models to Django admin interface
-* :ref:`views <askbot.views>` - all view functions (controllers in MVC terminology)
-
-.. moduleauthor:: Mike Chen
-.. moduleauthor:: Evgeny Fadeev <evgeny.fadeev@gmail.com>
-
+:synopsis: the Django Q&A forum application
"""
diff --git a/askbot/admin.py b/askbot/admin.py
index 58e03102..f8478c02 100644
--- a/askbot/admin.py
+++ b/askbot/admin.py
@@ -1,11 +1,8 @@
# -*- coding: utf-8 -*-
"""
-.. _askbot.admin:
+:synopsis: connector to standard Django admin interface
-:mod:`askbot.admin` - connector to standard Django admin interface
-===================================================================
-
-Add more classes subclassing ``django.contrib.admin.Model``
+To make more models accessible in the Django admin interface, add more classes subclassing ``django.contrib.admin.Model``
Names of the classes must be like `SomeModelAdmin`, where `SomeModel` must
exactly match name of the model used in the project
diff --git a/askbot/bin/generate_modules.py b/askbot/bin/generate_modules.py
index 9ff7ba68..f101a69b 100644..100755
--- a/askbot/bin/generate_modules.py
+++ b/askbot/bin/generate_modules.py
@@ -1,1065 +1,319 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
- <title>
- etienned / sphinx-autopackage-script / source &mdash; bitbucket.org
-</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="description" content="Mercurial hosting - we're here to serve." />
- <meta name="keywords" content="mercurial,hg,hosting,bitbucket,etienned,This,script,parse,a,directory,tree,looking,for,python,modules,and,packages,and,create,ReST,files,appropriately,to,create,code,documentation,with,Sphinx.,It,also,create,a,modules,index.,source,sourcecode,generate_modules.py@d20aab0a12b8" />
- <link rel="stylesheet" type="text/css" href="http://bitbucket-assets.s3.amazonaws.com/css/layout.css" />
- <link rel="stylesheet" type="text/css" href="http://bitbucket-assets.s3.amazonaws.com/css/screen.css" />
- <link rel="stylesheet" type="text/css" href="http://bitbucket-assets.s3.amazonaws.com/css/print.css" media="print" />
- <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Bitbucket" />
- <link rel="icon" href="http://bitbucket-assets.s3.amazonaws.com/img/logo_new.png" type="image/png"/>
- <script type="text/javascript">var MEDIA_URL = "http://bitbucket-assets.s3.amazonaws.com/"</script>
- <script type="text/javascript" src="http://bitbucket-assets.s3.amazonaws.com/js/lib/bundle.020510May.js"></script>
-
- <script type="text/javascript">
- $(document).ready(function() {
- Dropdown.init();
- $(".tooltip").tipsy({gravity:'s'});
- });
- </script>
- <noscript>
- <style type="text/css">
- .dropdown-container-text .dropdown {
- position: static !important;
- }
- </style>
- </noscript>
-
- <!--[if lt IE 7]>
- <style type="text/css">
- body {
- behavior: url(http://bitbucket-assets.s3.amazonaws.com/css/csshover.htc);
- }
-
- #issues-issue pre {
- white-space: normal !important;
- }
-
- .changeset-description {
- white-space: normal !important;
- }
- </style>
- <script type="text/javascript">
- $(document).ready(function(){
- $('#header-wrapper').pngFix();
- $('#sourcelist').pngFix();
- $('.promo-signup-screenshot').pngFix();
- });
- </script>
- <![endif]-->
-
- <link rel="stylesheet" href="http://bitbucket-assets.s3.amazonaws.com/css/highlight/trac.css" type="text/css" />
-
-
-</head>
-<body class="">
- <div id="main-wrapper">
- <div id="header-wrapper">
- <div id="header">
- <a href="/"><img src="http://bitbucket-assets.s3.amazonaws.com/img/logo_myriad.png" alt="Bitbucket" id="header-wrapper-logo" /></a>
-
- <div id="header-nav">
- <ul class="right">
- <li><a href="/">Home</a></li>
- <li><a href="/plans"><b>Plans &amp; Signup</b></a></li>
- <li><a href="/repo/all">Repositories</a></li>
- <li><a href="/news">News</a></li>
- <li><a href="/help">Help</a></li>
- <li><a href="/account/signin/">Sign in</a></li>
- </ul>
- </div>
-
- </div>
- </div>
- <div id="content-wrapper">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <script type="text/javascript" src="http://bitbucket-assets.s3.amazonaws.com/js/lib/jquery.cookie.js"></script> <!--REMOVE WHEN NEWER BUNDLE THAN 030309Mar -->
- <script type="text/javascript">
- var date = new Date();
- date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));
- var cookieoptions = { path: '/', expires: date };
-
- window._shard = 'fe01 (ID 1)';
-
- $(document).ready(function(){
- $('#toggle-repo-content').click(function(){
- $('#repo-desc-cloneinfo').toggle('fast');
- $('#repo-menu').toggle();
- $('#repo-menu-links-mini').toggle(100);
- $('.repo-desc-description').toggle('fast');
- var avatar_new_width = ($('.repo-avatar').width() == 35) ? 16 : 35;
- $('.repo-avatar').animate({ width: avatar_new_width }, 250);
-
- if ($.cookie('toggle_status') == 'hide') {
- $.cookie('toggle_status', 'show', cookieoptions);
- $(this).css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-up.png)');
- } else {
- $.cookie('toggle_status', 'hide', cookieoptions);
- $(this).css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-down.png)');
- }
- });
-
- if ($.cookie('toggle_status') == 'hide') {
- $('#toggle-repo-content').css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-down.png)');
- $('#repo-desc-cloneinfo').hide();
- $('#repo-menu').hide();
- $('#repo-menu-links-mini').show();
- $('.repo-desc-description').hide();
- $('.repo-avatar').css({ width: '16px' });
- } else {
- $('#toggle-repo-content').css('background-image','url(http://bitbucket-assets.s3.amazonaws.com/img/repo-toggle-up.png)');
- $('#repo-desc-cloneinfo').show();
- $('#repo-menu').show();
- $('#repo-menu-links-mini').hide();
- $('.repo-desc-description').show();
- $('.repo-avatar').css({ width: '35px' });
- }
- });
- </script>
-
-
-<div id="tabs">
- <ul class="ui-tabs-nav">
- <li>
- <a href="/etienned/sphinx-autopackage-script/overview"><span>Overview</span></a>
- </li>
-
- <li>
- <a href="/etienned/sphinx-autopackage-script/downloads"><span>Downloads (0)</span></a>
- </li>
-
-
-
- <li class="ui-tabs-selected">
-
- <a href="/etienned/sphinx-autopackage-script/src/d20aab0a12b8"><span>Source</span></a>
-
- </li>
-
- <li>
- <a href="/etienned/sphinx-autopackage-script/changesets"><span>Changesets</span></a>
- </li>
-
-
-
- <li class="ui-tabs-nav-issues">
- <a href="/etienned/sphinx-autopackage-script/wiki"><span>Wiki</span></a>
- </li>
-
-
-
-
-
- <li class="ui-tabs-nav-issues">
- <a href="/etienned/sphinx-autopackage-script/issues?status=new&amp;status=open"><span>Issues (1) &raquo;</span></a>
- <ul>
- <li><a href="/etienned/sphinx-autopackage-script/issues?status=new">New issues</a></li>
- <li><a href="/etienned/sphinx-autopackage-script/issues?status=new&amp;status=open">Open issues</a></li>
- <li><a href="/etienned/sphinx-autopackage-script/issues?status=resolved&amp;status=invalid&amp;status=duplicate">Closed issues</a></li>
-
- <li><a href="/etienned/sphinx-autopackage-script/issues">All issues</a></li>
- <li><a href="/etienned/sphinx-autopackage-script/issues/query">Advanced query</a></li>
- <li><a href="/etienned/sphinx-autopackage-script/issues/new">Create new issue</a></li>
- </ul>
- </li>
-
-
-
-
-
-
-
- <li class="tabs-right tabs-far-right">
- <a href="/etienned/sphinx-autopackage-script/descendants"><span>Forks/Queues (0)</span></a>
- </li>
-
- <li class="tabs-right">
- <a href="/etienned/sphinx-autopackage-script/zealots"><span>Followers (2)</span></a>
- </li>
- </ul>
-</div>
-
-<div id="repo-menu">
- <div id="repo-menu-links">
- <ul>
- <li>
- <a href="/etienned/sphinx-autopackage-script/rss" class="noborder repo-menu-rss" title="RSS Feed for sphinx-autopackage-script">RSS</a>
- </li>
- <li>
- <a href="/etienned/sphinx-autopackage-script/atom" class="noborder repo-menu-atom" title="Atom Feed for sphinx-autopackage-script">Atom</a>
- </li>
-
- <li>
- <a href="/etienned/sphinx-autopackage-script/pull" class="link-request-pull">
- pull request
- </a>
- </li>
-
- <li><a href="/etienned/sphinx-autopackage-script/fork" class="link-fork">fork</a></li>
-
- <li><a href="/etienned/sphinx-autopackage-script/hack" class="link-hack">patch queue</a></li>
-
- <li>
-
- <a rel="nofollow" href="/etienned/sphinx-autopackage-script/follow" class="link-follow">follow</a>
-
- </li>
- <li><a class="link-download">get source &raquo;</a>
-
- <ul>
-
- <li><a rel="nofollow" href="/etienned/sphinx-autopackage-script/get/d20aab0a12b8.zip" class="zip">zip</a></li>
- <li><a rel="nofollow" href="/etienned/sphinx-autopackage-script/get/d20aab0a12b8.gz" class="compressed">gz</a></li>
- <li><a rel="nofollow" href="/etienned/sphinx-autopackage-script/get/d20aab0a12b8.bz2" class="compressed">bz2</a></li>
-
- </ul>
- </li>
- </ul>
- </div>
-
-
- <div id="repo-menu-branches-tags">
- <ul>
- <li class="icon-branches">
- branches &raquo;
-
- <ul>
-
- <li><a href="/etienned/sphinx-autopackage-script/src/d20aab0a12b8">default</a></li>
-
- </ul>
-
- </li>
- <li class="icon-tags">
- tags &raquo;
-
- <ul>
-
- <li><a href="/etienned/sphinx-autopackage-script/src/d20aab0a12b8">tip</a></li>
-
- </ul>
- </li>
- </ul>
- </div>
-
-
- <div class="cb"></div>
- </div>
- <div id="repo-desc" class="layout-box">
-
-
- <div id="repo-menu-links-mini" class="right">
- <ul>
- <li>
- <a href="/etienned/sphinx-autopackage-script/rss" class="noborder repo-menu-rss" title="RSS Feed for sphinx-autopackage-script"></a>
- </li>
- <li>
- <a href="/etienned/sphinx-autopackage-script/atom" class="noborder repo-menu-atom" title="Atom Feed for sphinx-autopackage-script"></a>
- </li>
-
- <li>
- <a href="/etienned/sphinx-autopackage-script/pull" class="tooltip noborder link-request-pull" title="Pull request"></a>
- </li>
-
- <li><a href="/etienned/sphinx-autopackage-script/fork" class="tooltip noborder link-fork" title="Fork"></a></li>
-
- <li><a href="/etienned/sphinx-autopackage-script/hack" class="tooltip noborder link-hack" title="Patch queue"></a></li>
-
- <li><a class="tooltip noborder link-download" title="Get source"></a>
-
- <ul>
-
- <li><a rel="nofollow" href="/etienned/sphinx-autopackage-script/get/d20aab0a12b8.zip" class="zip">zip</a></li>
- <li><a rel="nofollow" href="/etienned/sphinx-autopackage-script/get/d20aab0a12b8.gz" class="compressed">gz</a></li>
- <li><a rel="nofollow" href="/etienned/sphinx-autopackage-script/get/d20aab0a12b8.bz2" class="compressed">bz2</a></li>
-
- </ul>
- </li>
- </ul>
- </div>
-
- <h3>
- <a href="/etienned">etienned</a> /
- <a href="/etienned/sphinx-autopackage-script">sphinx-autopackage-script</a>
-
-
- </h3>
-
-
-
-
-
- <p class="repo-desc-description">This script parse a directory tree looking for python modules and packages and
-create ReST files appropriately to create code documentation with Sphinx.
-It also create a modules index. </p>
-
- <div id="repo-desc-cloneinfo">Clone this repository (size: 5.8 KB): <a href="http://bitbucket.org/etienned/sphinx-autopackage-script" onclick="$('#clone-url-ssh').hide();$('#clone-url-https').toggle();return(false);"><small>HTTPS</small></a> / <a href="ssh://hg@bitbucket.org/etienned/sphinx-autopackage-script" onclick="$('#clone-url-https').hide();$('#clone-url-ssh').toggle();return(false);"><small>SSH</small></a><br/>
- <pre id="clone-url-https">$ hg clone <a href="http://bitbucket.org/etienned/sphinx-autopackage-script">http://bitbucket.org/etienned/sphinx-autopackage-script</a></pre>
-
- <pre id="clone-url-ssh" style="display:none;">$ hg clone <a href="ssh://hg@bitbucket.org/etienned/sphinx-autopackage-script">ssh://hg@bitbucket.org/etienned/sphinx-autopackage-script</a></pre></div>
-
- <div class="cb"></div>
- <a href="#" id="toggle-repo-content"></a>
-
-
-
- </div>
-
-
-
-
-
-
-
-
-
-<div id="source-summary" class="layout-box">
- <div class="right">
- <table>
- <tr>
- <td>commit 0:</td>
- <td>d20aab0a12b8</td>
- </tr>
-
-
- <tr>
- <td>branch: </td>
- <td>default</td>
- </tr>
-
- <tr>
- <td>tags:</td>
- <td>tip</td>
- </tr>
-
- </table>
- </div>
-
-<div class="changeset-description">Initial commit</div>
-
- <div>
-
-
-
-
-<div class="dropdown-container">
-
-
- <img src="http://www.gravatar.com/avatar/6fc6e07b4af580b1424c082536570dd4?d=identicon&s=32" class="avatar dropdown" />
-
-
-
- <ul class="dropdown-list">
- <li>
-
- <a href="/etienne">View etienne's profile</a>
-
- </li>
- <li>
- <a href="">etienne's public repos &raquo;</a>
-
-
-
- </li>
-
- <li>
- <a href="/account/notifications/send/?receiver=etienne">Send message</a>
- </li>
-
- </ul>
-</div>
-
-
-
-
- <span class="dropdown-right">
-
-
- <a href="/etienne">Etienne Lawlor</a> /
-
- <a href="/etienne">etienne</a>
-
- <br/>
- <small class="dropdown-right">2 months ago</small>
- </span>
-
- </div>
-
- <div class="cb"></div>
-</div>
-
-
-
-
-<div id="source-path" class="layout-box">
- <a href="/etienned/sphinx-autopackage-script/src">sphinx-autopackage-script</a> /
-
-
-
- generate_modules.py
-
-
-
-
-</div>
-
-
-<div id="source-view" class="scroll-x">
- <table class="info-table">
- <tr>
- <th>r0:d20aab0a12b8</th>
- <th>287 loc</th>
- <th>10.7 KB</th>
- <th class="source-view-links">
- <a id="embed-link" href="#" onclick="makeEmbed('#embed-link', 'http://bitbucket.org/etienned/sphinx-autopackage-script/src/d20aab0a12b8/generate_modules.py?embed=t');">embed</a> /
- <a href='/etienned/sphinx-autopackage-script/history/generate_modules.py'>history</a> /
- <a href='/etienned/sphinx-autopackage-script/annotate/d20aab0a12b8/generate_modules.py'>annotate</a> /
- <a href='/etienned/sphinx-autopackage-script/raw/d20aab0a12b8/generate_modules.py'>raw</a> /
- <form action="/etienned/sphinx-autopackage-script/diff/generate_modules.py" method="get" class="source-view-form">
-
- <select name='nothing' class="smaller" disabled="disabled">
- <option>No previous changes</option>
- </select>
-
- </form>
- </th>
- </tr>
- </table>
-
-
- <table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#cl-1"> 1</a>
-<a href="#cl-2"> 2</a>
-<a href="#cl-3"> 3</a>
-<a href="#cl-4"> 4</a>
-<a href="#cl-5"> 5</a>
-<a href="#cl-6"> 6</a>
-<a href="#cl-7"> 7</a>
-<a href="#cl-8"> 8</a>
-<a href="#cl-9"> 9</a>
-<a href="#cl-10"> 10</a>
-<a href="#cl-11"> 11</a>
-<a href="#cl-12"> 12</a>
-<a href="#cl-13"> 13</a>
-<a href="#cl-14"> 14</a>
-<a href="#cl-15"> 15</a>
-<a href="#cl-16"> 16</a>
-<a href="#cl-17"> 17</a>
-<a href="#cl-18"> 18</a>
-<a href="#cl-19"> 19</a>
-<a href="#cl-20"> 20</a>
-<a href="#cl-21"> 21</a>
-<a href="#cl-22"> 22</a>
-<a href="#cl-23"> 23</a>
-<a href="#cl-24"> 24</a>
-<a href="#cl-25"> 25</a>
-<a href="#cl-26"> 26</a>
-<a href="#cl-27"> 27</a>
-<a href="#cl-28"> 28</a>
-<a href="#cl-29"> 29</a>
-<a href="#cl-30"> 30</a>
-<a href="#cl-31"> 31</a>
-<a href="#cl-32"> 32</a>
-<a href="#cl-33"> 33</a>
-<a href="#cl-34"> 34</a>
-<a href="#cl-35"> 35</a>
-<a href="#cl-36"> 36</a>
-<a href="#cl-37"> 37</a>
-<a href="#cl-38"> 38</a>
-<a href="#cl-39"> 39</a>
-<a href="#cl-40"> 40</a>
-<a href="#cl-41"> 41</a>
-<a href="#cl-42"> 42</a>
-<a href="#cl-43"> 43</a>
-<a href="#cl-44"> 44</a>
-<a href="#cl-45"> 45</a>
-<a href="#cl-46"> 46</a>
-<a href="#cl-47"> 47</a>
-<a href="#cl-48"> 48</a>
-<a href="#cl-49"> 49</a>
-<a href="#cl-50"> 50</a>
-<a href="#cl-51"> 51</a>
-<a href="#cl-52"> 52</a>
-<a href="#cl-53"> 53</a>
-<a href="#cl-54"> 54</a>
-<a href="#cl-55"> 55</a>
-<a href="#cl-56"> 56</a>
-<a href="#cl-57"> 57</a>
-<a href="#cl-58"> 58</a>
-<a href="#cl-59"> 59</a>
-<a href="#cl-60"> 60</a>
-<a href="#cl-61"> 61</a>
-<a href="#cl-62"> 62</a>
-<a href="#cl-63"> 63</a>
-<a href="#cl-64"> 64</a>
-<a href="#cl-65"> 65</a>
-<a href="#cl-66"> 66</a>
-<a href="#cl-67"> 67</a>
-<a href="#cl-68"> 68</a>
-<a href="#cl-69"> 69</a>
-<a href="#cl-70"> 70</a>
-<a href="#cl-71"> 71</a>
-<a href="#cl-72"> 72</a>
-<a href="#cl-73"> 73</a>
-<a href="#cl-74"> 74</a>
-<a href="#cl-75"> 75</a>
-<a href="#cl-76"> 76</a>
-<a href="#cl-77"> 77</a>
-<a href="#cl-78"> 78</a>
-<a href="#cl-79"> 79</a>
-<a href="#cl-80"> 80</a>
-<a href="#cl-81"> 81</a>
-<a href="#cl-82"> 82</a>
-<a href="#cl-83"> 83</a>
-<a href="#cl-84"> 84</a>
-<a href="#cl-85"> 85</a>
-<a href="#cl-86"> 86</a>
-<a href="#cl-87"> 87</a>
-<a href="#cl-88"> 88</a>
-<a href="#cl-89"> 89</a>
-<a href="#cl-90"> 90</a>
-<a href="#cl-91"> 91</a>
-<a href="#cl-92"> 92</a>
-<a href="#cl-93"> 93</a>
-<a href="#cl-94"> 94</a>
-<a href="#cl-95"> 95</a>
-<a href="#cl-96"> 96</a>
-<a href="#cl-97"> 97</a>
-<a href="#cl-98"> 98</a>
-<a href="#cl-99"> 99</a>
-<a href="#cl-100">100</a>
-<a href="#cl-101">101</a>
-<a href="#cl-102">102</a>
-<a href="#cl-103">103</a>
-<a href="#cl-104">104</a>
-<a href="#cl-105">105</a>
-<a href="#cl-106">106</a>
-<a href="#cl-107">107</a>
-<a href="#cl-108">108</a>
-<a href="#cl-109">109</a>
-<a href="#cl-110">110</a>
-<a href="#cl-111">111</a>
-<a href="#cl-112">112</a>
-<a href="#cl-113">113</a>
-<a href="#cl-114">114</a>
-<a href="#cl-115">115</a>
-<a href="#cl-116">116</a>
-<a href="#cl-117">117</a>
-<a href="#cl-118">118</a>
-<a href="#cl-119">119</a>
-<a href="#cl-120">120</a>
-<a href="#cl-121">121</a>
-<a href="#cl-122">122</a>
-<a href="#cl-123">123</a>
-<a href="#cl-124">124</a>
-<a href="#cl-125">125</a>
-<a href="#cl-126">126</a>
-<a href="#cl-127">127</a>
-<a href="#cl-128">128</a>
-<a href="#cl-129">129</a>
-<a href="#cl-130">130</a>
-<a href="#cl-131">131</a>
-<a href="#cl-132">132</a>
-<a href="#cl-133">133</a>
-<a href="#cl-134">134</a>
-<a href="#cl-135">135</a>
-<a href="#cl-136">136</a>
-<a href="#cl-137">137</a>
-<a href="#cl-138">138</a>
-<a href="#cl-139">139</a>
-<a href="#cl-140">140</a>
-<a href="#cl-141">141</a>
-<a href="#cl-142">142</a>
-<a href="#cl-143">143</a>
-<a href="#cl-144">144</a>
-<a href="#cl-145">145</a>
-<a href="#cl-146">146</a>
-<a href="#cl-147">147</a>
-<a href="#cl-148">148</a>
-<a href="#cl-149">149</a>
-<a href="#cl-150">150</a>
-<a href="#cl-151">151</a>
-<a href="#cl-152">152</a>
-<a href="#cl-153">153</a>
-<a href="#cl-154">154</a>
-<a href="#cl-155">155</a>
-<a href="#cl-156">156</a>
-<a href="#cl-157">157</a>
-<a href="#cl-158">158</a>
-<a href="#cl-159">159</a>
-<a href="#cl-160">160</a>
-<a href="#cl-161">161</a>
-<a href="#cl-162">162</a>
-<a href="#cl-163">163</a>
-<a href="#cl-164">164</a>
-<a href="#cl-165">165</a>
-<a href="#cl-166">166</a>
-<a href="#cl-167">167</a>
-<a href="#cl-168">168</a>
-<a href="#cl-169">169</a>
-<a href="#cl-170">170</a>
-<a href="#cl-171">171</a>
-<a href="#cl-172">172</a>
-<a href="#cl-173">173</a>
-<a href="#cl-174">174</a>
-<a href="#cl-175">175</a>
-<a href="#cl-176">176</a>
-<a href="#cl-177">177</a>
-<a href="#cl-178">178</a>
-<a href="#cl-179">179</a>
-<a href="#cl-180">180</a>
-<a href="#cl-181">181</a>
-<a href="#cl-182">182</a>
-<a href="#cl-183">183</a>
-<a href="#cl-184">184</a>
-<a href="#cl-185">185</a>
-<a href="#cl-186">186</a>
-<a href="#cl-187">187</a>
-<a href="#cl-188">188</a>
-<a href="#cl-189">189</a>
-<a href="#cl-190">190</a>
-<a href="#cl-191">191</a>
-<a href="#cl-192">192</a>
-<a href="#cl-193">193</a>
-<a href="#cl-194">194</a>
-<a href="#cl-195">195</a>
-<a href="#cl-196">196</a>
-<a href="#cl-197">197</a>
-<a href="#cl-198">198</a>
-<a href="#cl-199">199</a>
-<a href="#cl-200">200</a>
-<a href="#cl-201">201</a>
-<a href="#cl-202">202</a>
-<a href="#cl-203">203</a>
-<a href="#cl-204">204</a>
-<a href="#cl-205">205</a>
-<a href="#cl-206">206</a>
-<a href="#cl-207">207</a>
-<a href="#cl-208">208</a>
-<a href="#cl-209">209</a>
-<a href="#cl-210">210</a>
-<a href="#cl-211">211</a>
-<a href="#cl-212">212</a>
-<a href="#cl-213">213</a>
-<a href="#cl-214">214</a>
-<a href="#cl-215">215</a>
-<a href="#cl-216">216</a>
-<a href="#cl-217">217</a>
-<a href="#cl-218">218</a>
-<a href="#cl-219">219</a>
-<a href="#cl-220">220</a>
-<a href="#cl-221">221</a>
-<a href="#cl-222">222</a>
-<a href="#cl-223">223</a>
-<a href="#cl-224">224</a>
-<a href="#cl-225">225</a>
-<a href="#cl-226">226</a>
-<a href="#cl-227">227</a>
-<a href="#cl-228">228</a>
-<a href="#cl-229">229</a>
-<a href="#cl-230">230</a>
-<a href="#cl-231">231</a>
-<a href="#cl-232">232</a>
-<a href="#cl-233">233</a>
-<a href="#cl-234">234</a>
-<a href="#cl-235">235</a>
-<a href="#cl-236">236</a>
-<a href="#cl-237">237</a>
-<a href="#cl-238">238</a>
-<a href="#cl-239">239</a>
-<a href="#cl-240">240</a>
-<a href="#cl-241">241</a>
-<a href="#cl-242">242</a>
-<a href="#cl-243">243</a>
-<a href="#cl-244">244</a>
-<a href="#cl-245">245</a>
-<a href="#cl-246">246</a>
-<a href="#cl-247">247</a>
-<a href="#cl-248">248</a>
-<a href="#cl-249">249</a>
-<a href="#cl-250">250</a>
-<a href="#cl-251">251</a>
-<a href="#cl-252">252</a>
-<a href="#cl-253">253</a>
-<a href="#cl-254">254</a>
-<a href="#cl-255">255</a>
-<a href="#cl-256">256</a>
-<a href="#cl-257">257</a>
-<a href="#cl-258">258</a>
-<a href="#cl-259">259</a>
-<a href="#cl-260">260</a>
-<a href="#cl-261">261</a>
-<a href="#cl-262">262</a>
-<a href="#cl-263">263</a>
-<a href="#cl-264">264</a>
-<a href="#cl-265">265</a>
-<a href="#cl-266">266</a>
-<a href="#cl-267">267</a>
-<a href="#cl-268">268</a>
-<a href="#cl-269">269</a>
-<a href="#cl-270">270</a>
-<a href="#cl-271">271</a>
-<a href="#cl-272">272</a>
-<a href="#cl-273">273</a>
-<a href="#cl-274">274</a>
-<a href="#cl-275">275</a>
-<a href="#cl-276">276</a>
-<a href="#cl-277">277</a>
-<a href="#cl-278">278</a>
-<a href="#cl-279">279</a>
-<a href="#cl-280">280</a>
-<a href="#cl-281">281</a>
-<a href="#cl-282">282</a>
-<a href="#cl-283">283</a>
-<a href="#cl-284">284</a>
-<a href="#cl-285">285</a>
-<a href="#cl-286">286</a>
-<a href="#cl-287">287</a>
-<a href="#cl-288">288</a>
-</pre></div></td><td class="code"><div class="highlight"><pre><a name="cl-1"></a><span class="c">#!/usr/bin/env python</span>
-<a name="cl-2"></a><span class="c"># -*- coding: utf-8 -*-</span>
-<a name="cl-3"></a>
-<a name="cl-4"></a><span class="c"># Miville</span>
-<a name="cl-5"></a><span class="c"># Copyright (C) 2008 Société des arts technologiques (SAT)</span>
-<a name="cl-6"></a><span class="c"># http://www.sat.qc.ca</span>
-<a name="cl-7"></a><span class="c"># All rights reserved.</span>
-<a name="cl-8"></a><span class="c">#</span>
-<a name="cl-9"></a><span class="c"># This file is free software: you can redistribute it and/or modify</span>
-<a name="cl-10"></a><span class="c"># it under the terms of the GNU General Public License as published by</span>
-<a name="cl-11"></a><span class="c"># the Free Software Foundation, either version 2 of the License, or</span>
-<a name="cl-12"></a><span class="c"># (at your option) any later version.</span>
-<a name="cl-13"></a><span class="c">#</span>
-<a name="cl-14"></a><span class="c"># Miville is distributed in the hope that it will be useful,</span>
-<a name="cl-15"></a><span class="c"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="cl-16"></a><span class="c"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="cl-17"></a><span class="c"># GNU General Public License for more details.</span>
-<a name="cl-18"></a><span class="c">#</span>
-<a name="cl-19"></a><span class="c"># You should have received a copy of the GNU General Public License</span>
-<a name="cl-20"></a><span class="c"># along with Miville. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
-<a name="cl-21"></a>
-<a name="cl-22"></a><span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-23"></a><span class="sd">This script parse a directory tree looking for python modules and packages and</span>
-<a name="cl-24"></a><span class="sd">create ReST files appropriately to create code documentation with Sphinx.</span>
-<a name="cl-25"></a><span class="sd">It also create a modules index. </span>
-<a name="cl-26"></a><span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-27"></a>
-<a name="cl-28"></a><span class="kn">import</span> <span class="nn">os</span>
-<a name="cl-29"></a><span class="kn">import</span> <span class="nn">optparse</span>
-<a name="cl-30"></a>
-<a name="cl-31"></a>
-<a name="cl-32"></a><span class="c"># automodule options</span>
-<a name="cl-33"></a><span class="n">OPTIONS</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;members&#39;</span><span class="p">,</span>
-<a name="cl-34"></a> <span class="s">&#39;undoc-members&#39;</span><span class="p">,</span>
-<a name="cl-35"></a><span class="c"># &#39;inherited-members&#39;, # disable because there&#39;s a bug in sphinx</span>
-<a name="cl-36"></a> <span class="s">&#39;show-inheritance&#39;</span><span class="p">]</span>
-<a name="cl-37"></a>
-<a name="cl-38"></a>
-<a name="cl-39"></a><span class="k">def</span> <span class="nf">create_file_name</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="n">opts</span><span class="p">):</span>
-<a name="cl-40"></a> <span class="sd">&quot;&quot;&quot;Create file name from base name, path and suffix&quot;&quot;&quot;</span>
-<a name="cl-41"></a> <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">destdir</span><span class="p">,</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">suffix</span><span class="p">))</span>
-<a name="cl-42"></a>
-<a name="cl-43"></a><span class="k">def</span> <span class="nf">write_directive</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">package</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-<a name="cl-44"></a> <span class="sd">&quot;&quot;&quot;Create the automodule directive and add the options&quot;&quot;&quot;</span>
-<a name="cl-45"></a> <span class="k">if</span> <span class="n">package</span><span class="p">:</span>
-<a name="cl-46"></a> <span class="n">directive</span> <span class="o">=</span> <span class="s">&#39;.. automodule:: </span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">package</span><span class="p">,</span> <span class="n">module</span><span class="p">)</span>
-<a name="cl-47"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-48"></a> <span class="n">directive</span> <span class="o">=</span> <span class="s">&#39;.. automodule:: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">module</span>
-<a name="cl-49"></a> <span class="k">for</span> <span class="n">option</span> <span class="ow">in</span> <span class="n">OPTIONS</span><span class="p">:</span>
-<a name="cl-50"></a> <span class="n">directive</span> <span class="o">+=</span> <span class="s">&#39; :</span><span class="si">%s</span><span class="s">:</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">option</span>
-<a name="cl-51"></a> <span class="k">return</span> <span class="n">directive</span>
-<a name="cl-52"></a>
-<a name="cl-53"></a><span class="k">def</span> <span class="nf">write_heading</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s">&#39;Module&#39;</span><span class="p">):</span>
-<a name="cl-54"></a> <span class="sd">&quot;&quot;&quot;Create the page heading.&quot;&quot;&quot;</span>
-<a name="cl-55"></a> <span class="n">module</span> <span class="o">=</span> <span class="n">module</span><span class="o">.</span><span class="n">title</span><span class="p">()</span>
-<a name="cl-56"></a> <span class="n">heading</span> <span class="o">=</span> <span class="n">title_line</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s">&#39; Documentation&#39;</span><span class="p">,</span> <span class="s">&#39;=&#39;</span><span class="p">)</span>
-<a name="cl-57"></a> <span class="n">heading</span> <span class="o">+=</span> <span class="s">&#39;This page contains the </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s"> documentation.</span><span class="se">\n\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span>
-<a name="cl-58"></a> <span class="k">return</span> <span class="n">heading</span>
-<a name="cl-59"></a>
-<a name="cl-60"></a><span class="k">def</span> <span class="nf">write_sub</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s">&#39;Module&#39;</span><span class="p">):</span>
-<a name="cl-61"></a> <span class="sd">&quot;&quot;&quot;Create the module subtitle&quot;&quot;&quot;</span>
-<a name="cl-62"></a> <span class="n">sub</span> <span class="o">=</span> <span class="n">title_line</span><span class="p">(</span><span class="s">&#39;The :mod:`</span><span class="si">%s</span><span class="s">` </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">kind</span><span class="p">),</span> <span class="s">&#39;-&#39;</span><span class="p">)</span>
-<a name="cl-63"></a> <span class="k">return</span> <span class="n">sub</span>
-<a name="cl-64"></a>
-<a name="cl-65"></a><span class="k">def</span> <span class="nf">title_line</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">char</span><span class="p">):</span>
-<a name="cl-66"></a> <span class="sd">&quot;&quot;&quot; Underline the title with the character pass, with the right length.&quot;&quot;&quot;</span>
-<a name="cl-67"></a> <span class="k">return</span> <span class="s">&#39;</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">title</span><span class="p">)</span> <span class="o">*</span> <span class="n">char</span><span class="p">)</span>
-<a name="cl-68"></a>
-<a name="cl-69"></a><span class="k">def</span> <span class="nf">create_module_file</span><span class="p">(</span><span class="n">package</span><span class="p">,</span> <span class="n">module</span><span class="p">,</span> <span class="n">opts</span><span class="p">):</span>
-<a name="cl-70"></a> <span class="sd">&quot;&quot;&quot;Build the text of the file and write the file.&quot;&quot;&quot;</span>
-<a name="cl-71"></a> <span class="n">name</span> <span class="o">=</span> <span class="n">create_file_name</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">opts</span><span class="p">)</span>
-<a name="cl-72"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">force</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
-<a name="cl-73"></a> <span class="k">print</span> <span class="s">&#39;File </span><span class="si">%s</span><span class="s"> already exists.&#39;</span> <span class="o">%</span> <span class="n">name</span>
-<a name="cl-74"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-75"></a> <span class="k">print</span> <span class="s">&#39;Creating file </span><span class="si">%s</span><span class="s"> (module).&#39;</span> <span class="o">%</span> <span class="n">name</span>
-<a name="cl-76"></a> <span class="n">text</span> <span class="o">=</span> <span class="n">write_heading</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
-<a name="cl-77"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">write_sub</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
-<a name="cl-78"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">write_directive</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">package</span><span class="p">)</span>
-<a name="cl-79"></a>
-<a name="cl-80"></a> <span class="c"># write the file</span>
-<a name="cl-81"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">dryrun</span><span class="p">:</span>
-<a name="cl-82"></a> <span class="n">fd</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">)</span>
-<a name="cl-83"></a> <span class="n">fd</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
-<a name="cl-84"></a> <span class="n">fd</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-<a name="cl-85"></a>
-<a name="cl-86"></a><span class="k">def</span> <span class="nf">create_package_file</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">master_package</span><span class="p">,</span> <span class="n">subroot</span><span class="p">,</span> <span class="n">py_files</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">subs</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-<a name="cl-87"></a> <span class="sd">&quot;&quot;&quot;Build the text of the file and write the file.&quot;&quot;&quot;</span>
-<a name="cl-88"></a> <span class="n">package</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
-<a name="cl-89"></a> <span class="n">name</span> <span class="o">=</span> <span class="n">create_file_name</span><span class="p">(</span><span class="n">subroot</span><span class="p">,</span> <span class="n">opts</span><span class="p">)</span>
-<a name="cl-90"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">force</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
-<a name="cl-91"></a> <span class="k">print</span> <span class="s">&#39;File </span><span class="si">%s</span><span class="s"> already exists.&#39;</span> <span class="o">%</span> <span class="n">name</span>
-<a name="cl-92"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-93"></a> <span class="k">print</span> <span class="s">&#39;Creating file </span><span class="si">%s</span><span class="s"> (package).&#39;</span> <span class="o">%</span> <span class="n">name</span>
-<a name="cl-94"></a> <span class="n">text</span> <span class="o">=</span> <span class="n">write_heading</span><span class="p">(</span><span class="n">package</span><span class="p">,</span> <span class="s">&#39;Package&#39;</span><span class="p">)</span>
-<a name="cl-95"></a> <span class="k">if</span> <span class="n">subs</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
-<a name="cl-96"></a> <span class="n">subs</span> <span class="o">=</span> <span class="p">[]</span>
-<a name="cl-97"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-98"></a> <span class="c"># build a list of directories that are package (they contain an __init_.py file)</span>
-<a name="cl-99"></a> <span class="n">subs</span> <span class="o">=</span> <span class="p">[</span><span class="n">sub</span> <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">subs</span> <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">sub</span><span class="p">,</span> <span class="s">&#39;__init__.py&#39;</span><span class="p">))]</span>
-<a name="cl-100"></a> <span class="c"># if there&#39;s some package directories, add a TOC for theses subpackages</span>
-<a name="cl-101"></a> <span class="k">if</span> <span class="n">subs</span><span class="p">:</span>
-<a name="cl-102"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">title_line</span><span class="p">(</span><span class="s">&#39;Subpackages&#39;</span><span class="p">,</span> <span class="s">&#39;-&#39;</span><span class="p">)</span>
-<a name="cl-103"></a> <span class="n">text</span> <span class="o">+=</span> <span class="s">&#39;.. toctree::</span><span class="se">\n\n</span><span class="s">&#39;</span>
-<a name="cl-104"></a> <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">subs</span><span class="p">:</span>
-<a name="cl-105"></a> <span class="n">text</span> <span class="o">+=</span> <span class="s">&#39; </span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">subroot</span><span class="p">,</span> <span class="n">sub</span><span class="p">)</span>
-<a name="cl-106"></a> <span class="n">text</span> <span class="o">+=</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
-<a name="cl-107"></a>
-<a name="cl-108"></a> <span class="c"># add each package&#39;s module</span>
-<a name="cl-109"></a> <span class="k">for</span> <span class="n">py_file</span> <span class="ow">in</span> <span class="n">py_files</span><span class="p">:</span>
-<a name="cl-110"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">check_for_code</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">py_file</span><span class="p">)):</span>
-<a name="cl-111"></a> <span class="c"># don&#39;t build the file if there&#39;s no code in it</span>
-<a name="cl-112"></a> <span class="k">continue</span>
-<a name="cl-113"></a> <span class="n">py_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">py_file</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-<a name="cl-114"></a> <span class="n">py_path</span> <span class="o">=</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">subroot</span><span class="p">,</span> <span class="n">py_file</span><span class="p">)</span>
-<a name="cl-115"></a> <span class="n">kind</span> <span class="o">=</span> <span class="s">&quot;Module&quot;</span>
-<a name="cl-116"></a> <span class="k">if</span> <span class="n">py_file</span> <span class="o">==</span> <span class="s">&#39;__init__&#39;</span><span class="p">:</span>
-<a name="cl-117"></a> <span class="n">kind</span> <span class="o">=</span> <span class="s">&quot;Package&quot;</span>
-<a name="cl-118"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">write_sub</span><span class="p">(</span><span class="n">kind</span> <span class="o">==</span> <span class="s">&#39;Package&#39;</span> <span class="ow">and</span> <span class="n">package</span> <span class="ow">or</span> <span class="n">py_file</span><span class="p">,</span> <span class="n">kind</span><span class="p">)</span>
-<a name="cl-119"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">write_directive</span><span class="p">(</span><span class="n">kind</span> <span class="o">==</span> <span class="s">&quot;Package&quot;</span> <span class="ow">and</span> <span class="n">subroot</span> <span class="ow">or</span> <span class="n">py_path</span><span class="p">,</span> <span class="n">master_package</span><span class="p">)</span>
-<a name="cl-120"></a> <span class="n">text</span> <span class="o">+=</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
-<a name="cl-121"></a>
-<a name="cl-122"></a> <span class="c"># write the file</span>
-<a name="cl-123"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">dryrun</span><span class="p">:</span>
-<a name="cl-124"></a> <span class="n">fd</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">)</span>
-<a name="cl-125"></a> <span class="n">fd</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
-<a name="cl-126"></a> <span class="n">fd</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-<a name="cl-127"></a>
-<a name="cl-128"></a><span class="k">def</span> <span class="nf">check_for_code</span><span class="p">(</span><span class="n">module</span><span class="p">):</span>
-<a name="cl-129"></a> <span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-130"></a><span class="sd"> Check if there&#39;s at least one class or one function in the module.</span>
-<a name="cl-131"></a><span class="sd"> &quot;&quot;&quot;</span>
-<a name="cl-132"></a> <span class="n">fd</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="s">&#39;r&#39;</span><span class="p">)</span>
-<a name="cl-133"></a> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">fd</span><span class="p">:</span>
-<a name="cl-134"></a> <span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;def &#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;class &#39;</span><span class="p">):</span>
-<a name="cl-135"></a> <span class="n">fd</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-<a name="cl-136"></a> <span class="k">return</span> <span class="bp">True</span>
-<a name="cl-137"></a> <span class="n">fd</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-<a name="cl-138"></a> <span class="k">return</span> <span class="bp">False</span>
-<a name="cl-139"></a>
-<a name="cl-140"></a><span class="k">def</span> <span class="nf">recurse_tree</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">excludes</span><span class="p">,</span> <span class="n">opts</span><span class="p">):</span>
-<a name="cl-141"></a> <span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-142"></a><span class="sd"> Look for every file in the directory tree and create the corresponding</span>
-<a name="cl-143"></a><span class="sd"> ReST files.</span>
-<a name="cl-144"></a><span class="sd"> &quot;&quot;&quot;</span>
-<a name="cl-145"></a> <span class="n">package_name</span> <span class="o">=</span> <span class="bp">None</span>
-<a name="cl-146"></a> <span class="c"># check if the base directory is a package and get is name</span>
-<a name="cl-147"></a> <span class="k">if</span> <span class="s">&#39;__init__.py&#39;</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
-<a name="cl-148"></a> <span class="n">package_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">path</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">sep</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
-<a name="cl-149"></a>
-<a name="cl-150"></a> <span class="n">toc</span> <span class="o">=</span> <span class="p">[]</span>
-<a name="cl-151"></a> <span class="n">excludes</span> <span class="o">=</span> <span class="n">format_excludes</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">excludes</span><span class="p">)</span>
-<a name="cl-152"></a> <span class="n">tree</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
-<a name="cl-153"></a> <span class="k">for</span> <span class="n">root</span><span class="p">,</span> <span class="n">subs</span><span class="p">,</span> <span class="n">files</span> <span class="ow">in</span> <span class="n">tree</span><span class="p">:</span>
-<a name="cl-154"></a> <span class="c"># keep only the Python script files</span>
-<a name="cl-155"></a> <span class="n">py_files</span> <span class="o">=</span> <span class="n">check_py_file</span><span class="p">(</span><span class="n">files</span><span class="p">)</span>
-<a name="cl-156"></a> <span class="c"># remove hidden (&#39;.&#39;) and private (&#39;_&#39;) directories</span>
-<a name="cl-157"></a> <span class="n">subs</span> <span class="o">=</span> <span class="p">[</span><span class="n">sub</span> <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">subs</span> <span class="k">if</span> <span class="n">sub</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;.&#39;</span><span class="p">,</span> <span class="s">&#39;_&#39;</span><span class="p">]]</span>
-<a name="cl-158"></a> <span class="c"># check if there&#39;s valid files to process</span>
-<a name="cl-159"></a> <span class="c"># TODO: could add check for windows hidden files</span>
-<a name="cl-160"></a> <span class="k">if</span> <span class="s">&quot;/.&quot;</span> <span class="ow">in</span> <span class="n">root</span> <span class="ow">or</span> <span class="s">&quot;/_&quot;</span> <span class="ow">in</span> <span class="n">root</span> \
-<a name="cl-161"></a> <span class="ow">or</span> <span class="ow">not</span> <span class="n">py_files</span> \
-<a name="cl-162"></a> <span class="ow">or</span> <span class="n">check_excludes</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">excludes</span><span class="p">):</span>
-<a name="cl-163"></a> <span class="k">continue</span>
-<a name="cl-164"></a> <span class="n">subroot</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">path</span><span class="p">):]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">sep</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">sep</span><span class="p">,</span> <span class="s">&#39;.&#39;</span><span class="p">)</span>
-<a name="cl-165"></a> <span class="k">if</span> <span class="n">root</span> <span class="o">==</span> <span class="n">path</span><span class="p">:</span>
-<a name="cl-166"></a> <span class="c"># we are at the root level so we create only modules</span>
-<a name="cl-167"></a> <span class="k">for</span> <span class="n">py_file</span> <span class="ow">in</span> <span class="n">py_files</span><span class="p">:</span>
-<a name="cl-168"></a> <span class="n">module</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">py_file</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
-<a name="cl-169"></a> <span class="c"># add the module if it contains code</span>
-<a name="cl-170"></a> <span class="k">if</span> <span class="n">check_for_code</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s">.py&#39;</span> <span class="o">%</span> <span class="n">module</span><span class="p">)):</span>
-<a name="cl-171"></a> <span class="n">create_module_file</span><span class="p">(</span><span class="n">package_name</span><span class="p">,</span> <span class="n">module</span><span class="p">,</span> <span class="n">opts</span><span class="p">)</span>
-<a name="cl-172"></a> <span class="n">toc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
-<a name="cl-173"></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">subs</span> <span class="ow">and</span> <span class="s">&quot;__init__.py&quot;</span> <span class="ow">in</span> <span class="n">py_files</span><span class="p">:</span>
-<a name="cl-174"></a> <span class="c"># we are in a package without sub package</span>
-<a name="cl-175"></a> <span class="c"># check if there&#39;s only an __init__.py file</span>
-<a name="cl-176"></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">py_files</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-<a name="cl-177"></a> <span class="c"># check if there&#39;s code in the __init__.py file</span>
-<a name="cl-178"></a> <span class="k">if</span> <span class="n">check_for_code</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&#39;__init__.py&#39;</span><span class="p">)):</span>
-<a name="cl-179"></a> <span class="n">create_package_file</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">package_name</span><span class="p">,</span> <span class="n">subroot</span><span class="p">,</span> <span class="n">py_files</span><span class="p">,</span> <span class="n">opts</span><span class="o">=</span><span class="n">opts</span><span class="p">)</span>
-<a name="cl-180"></a> <span class="n">toc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">subroot</span><span class="p">)</span>
-<a name="cl-181"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-182"></a> <span class="n">create_package_file</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">package_name</span><span class="p">,</span> <span class="n">subroot</span><span class="p">,</span> <span class="n">py_files</span><span class="p">,</span> <span class="n">opts</span><span class="o">=</span><span class="n">opts</span><span class="p">)</span>
-<a name="cl-183"></a> <span class="n">toc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">subroot</span><span class="p">)</span>
-<a name="cl-184"></a> <span class="k">elif</span> <span class="s">&quot;__init__.py&quot;</span> <span class="ow">in</span> <span class="n">py_files</span><span class="p">:</span>
-<a name="cl-185"></a> <span class="c"># we are in package with subpackage(s)</span>
-<a name="cl-186"></a> <span class="n">create_package_file</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">package_name</span><span class="p">,</span> <span class="n">subroot</span><span class="p">,</span> <span class="n">py_files</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">subs</span><span class="p">)</span>
-<a name="cl-187"></a> <span class="n">toc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">subroot</span><span class="p">)</span>
-<a name="cl-188"></a>
-<a name="cl-189"></a> <span class="c"># create the module&#39;s index</span>
-<a name="cl-190"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">notoc</span><span class="p">:</span>
-<a name="cl-191"></a> <span class="n">modules_toc</span><span class="p">(</span><span class="n">toc</span><span class="p">,</span> <span class="n">opts</span><span class="p">)</span>
-<a name="cl-192"></a>
-<a name="cl-193"></a><span class="k">def</span> <span class="nf">modules_toc</span><span class="p">(</span><span class="n">modules</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;modules&#39;</span><span class="p">):</span>
-<a name="cl-194"></a> <span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-195"></a><span class="sd"> Create the module&#39;s index.</span>
-<a name="cl-196"></a><span class="sd"> &quot;&quot;&quot;</span>
-<a name="cl-197"></a> <span class="n">fname</span> <span class="o">=</span> <span class="n">create_file_name</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">opts</span><span class="p">)</span>
-<a name="cl-198"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">force</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">fname</span><span class="p">):</span>
-<a name="cl-199"></a> <span class="k">print</span> <span class="s">&quot;File </span><span class="si">%s</span><span class="s"> already exists.&quot;</span> <span class="o">%</span> <span class="n">name</span>
-<a name="cl-200"></a> <span class="k">return</span>
-<a name="cl-201"></a>
-<a name="cl-202"></a> <span class="k">print</span> <span class="s">&quot;Creating module&#39;s index modules.txt.&quot;</span>
-<a name="cl-203"></a> <span class="n">text</span> <span class="o">=</span> <span class="n">write_heading</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">header</span><span class="p">,</span> <span class="s">&#39;Modules&#39;</span><span class="p">)</span>
-<a name="cl-204"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">title_line</span><span class="p">(</span><span class="s">&#39;Modules:&#39;</span><span class="p">,</span> <span class="s">&#39;-&#39;</span><span class="p">)</span>
-<a name="cl-205"></a> <span class="n">text</span> <span class="o">+=</span> <span class="s">&#39;.. toctree::</span><span class="se">\n</span><span class="s">&#39;</span>
-<a name="cl-206"></a> <span class="n">text</span> <span class="o">+=</span> <span class="s">&#39; :maxdepth: </span><span class="si">%s</span><span class="se">\n\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">opts</span><span class="o">.</span><span class="n">maxdepth</span>
-<a name="cl-207"></a>
-<a name="cl-208"></a> <span class="n">modules</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
-<a name="cl-209"></a> <span class="n">prev_module</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
-<a name="cl-210"></a> <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
-<a name="cl-211"></a> <span class="c"># look if the module is a subpackage and, if yes, ignore it</span>
-<a name="cl-212"></a> <span class="k">if</span> <span class="n">module</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">prev_module</span> <span class="o">+</span> <span class="s">&#39;.&#39;</span><span class="p">):</span>
-<a name="cl-213"></a> <span class="k">continue</span>
-<a name="cl-214"></a> <span class="n">prev_module</span> <span class="o">=</span> <span class="n">module</span>
-<a name="cl-215"></a> <span class="n">text</span> <span class="o">+=</span> <span class="s">&#39; </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">module</span>
-<a name="cl-216"></a>
-<a name="cl-217"></a> <span class="c"># write the file</span>
-<a name="cl-218"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">dryrun</span><span class="p">:</span>
-<a name="cl-219"></a> <span class="n">fd</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fname</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">)</span>
-<a name="cl-220"></a> <span class="n">fd</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
-<a name="cl-221"></a> <span class="n">fd</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-<a name="cl-222"></a>
-<a name="cl-223"></a><span class="k">def</span> <span class="nf">format_excludes</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">excludes</span><span class="p">):</span>
-<a name="cl-224"></a> <span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-225"></a><span class="sd"> Format the excluded directory list.</span>
-<a name="cl-226"></a><span class="sd"> (verify that the path is not from the root of the volume or the root of the</span>
-<a name="cl-227"></a><span class="sd"> package)</span>
-<a name="cl-228"></a><span class="sd"> &quot;&quot;&quot;</span>
-<a name="cl-229"></a> <span class="n">f_excludes</span> <span class="o">=</span> <span class="p">[]</span>
-<a name="cl-230"></a> <span class="k">for</span> <span class="n">exclude</span> <span class="ow">in</span> <span class="n">excludes</span><span class="p">:</span>
-<a name="cl-231"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isabs</span><span class="p">(</span><span class="n">exclude</span><span class="p">)</span> <span class="ow">and</span> <span class="n">exclude</span><span class="p">[:</span><span class="nb">len</span><span class="p">(</span><span class="n">path</span><span class="p">)]</span> <span class="o">!=</span> <span class="n">path</span><span class="p">:</span>
-<a name="cl-232"></a> <span class="n">exclude</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exclude</span><span class="p">)</span>
-<a name="cl-233"></a> <span class="c"># remove trailing slash</span>
-<a name="cl-234"></a> <span class="n">f_excludes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exclude</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">sep</span><span class="p">))</span>
-<a name="cl-235"></a> <span class="k">return</span> <span class="n">f_excludes</span>
-<a name="cl-236"></a>
-<a name="cl-237"></a><span class="k">def</span> <span class="nf">check_excludes</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">excludes</span><span class="p">):</span>
-<a name="cl-238"></a> <span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-239"></a><span class="sd"> Check if the directory is in the exclude list.</span>
-<a name="cl-240"></a><span class="sd"> &quot;&quot;&quot;</span>
-<a name="cl-241"></a> <span class="k">for</span> <span class="n">exclude</span> <span class="ow">in</span> <span class="n">excludes</span><span class="p">:</span>
-<a name="cl-242"></a> <span class="k">if</span> <span class="n">root</span><span class="p">[:</span><span class="nb">len</span><span class="p">(</span><span class="n">exclude</span><span class="p">)]</span> <span class="o">==</span> <span class="n">exclude</span><span class="p">:</span>
-<a name="cl-243"></a> <span class="k">return</span> <span class="bp">True</span>
-<a name="cl-244"></a> <span class="k">return</span> <span class="bp">False</span>
-<a name="cl-245"></a>
-<a name="cl-246"></a><span class="k">def</span> <span class="nf">check_py_file</span><span class="p">(</span><span class="n">files</span><span class="p">):</span>
-<a name="cl-247"></a> <span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-248"></a><span class="sd"> Return a list with only the python scripts (remove all other files). </span>
-<a name="cl-249"></a><span class="sd"> &quot;&quot;&quot;</span>
-<a name="cl-250"></a> <span class="n">py_files</span> <span class="o">=</span> <span class="p">[</span><span class="n">fich</span> <span class="k">for</span> <span class="n">fich</span> <span class="ow">in</span> <span class="n">files</span> <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">fich</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;.py&#39;</span><span class="p">]</span>
-<a name="cl-251"></a> <span class="k">return</span> <span class="n">py_files</span>
-<a name="cl-252"></a>
-<a name="cl-253"></a>
-<a name="cl-254"></a><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
-<a name="cl-255"></a> <span class="sd">&quot;&quot;&quot;</span>
-<a name="cl-256"></a><span class="sd"> Parse and check the command line arguments</span>
-<a name="cl-257"></a><span class="sd"> &quot;&quot;&quot;</span>
-<a name="cl-258"></a> <span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s">&quot;&quot;&quot;usage: %prog [options] &lt;package path&gt; [exclude paths, ...]</span>
-<a name="cl-259"></a><span class="s"> </span>
-<a name="cl-260"></a><span class="s">Note: By default this script will not overwrite already created files.&quot;&quot;&quot;</span><span class="p">)</span>
-<a name="cl-261"></a> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&quot;-n&quot;</span><span class="p">,</span> <span class="s">&quot;--doc-header&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&quot;store&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&quot;header&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">&quot;Documentation Header (default=Project)&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s">&quot;Project&quot;</span><span class="p">)</span>
-<a name="cl-262"></a> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&quot;-d&quot;</span><span class="p">,</span> <span class="s">&quot;--dest-dir&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&quot;store&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&quot;destdir&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">&quot;Output destination directory&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">)</span>
-<a name="cl-263"></a> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&quot;-s&quot;</span><span class="p">,</span> <span class="s">&quot;--suffix&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&quot;store&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&quot;suffix&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">&quot;module suffix (default=txt)&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s">&quot;txt&quot;</span><span class="p">)</span>
-<a name="cl-264"></a> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&quot;-m&quot;</span><span class="p">,</span> <span class="s">&quot;--maxdepth&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&quot;store&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&quot;maxdepth&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">&quot;Maximum depth of submodules to show in the TOC (default=4)&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">&quot;int&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
-<a name="cl-265"></a> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&quot;-r&quot;</span><span class="p">,</span> <span class="s">&quot;--dry-run&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&quot;dryrun&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">&quot;Run the script without creating the files&quot;</span><span class="p">)</span>
-<a name="cl-266"></a> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&quot;-f&quot;</span><span class="p">,</span> <span class="s">&quot;--force&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&quot;force&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">&quot;Overwrite all the files&quot;</span><span class="p">)</span>
-<a name="cl-267"></a> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">&quot;-t&quot;</span><span class="p">,</span> <span class="s">&quot;--no-toc&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&quot;notoc&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s">&quot;Don&#39;t create the table of content file&quot;</span><span class="p">)</span>
-<a name="cl-268"></a> <span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
-<a name="cl-269"></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
-<a name="cl-270"></a> <span class="n">parser</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;package path is required.&quot;</span><span class="p">)</span>
-<a name="cl-271"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-272"></a> <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
-<a name="cl-273"></a> <span class="c"># check if the output destination is a valid directory</span>
-<a name="cl-274"></a> <span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">destdir</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">destdir</span><span class="p">):</span>
-<a name="cl-275"></a> <span class="c"># if there&#39;s some exclude arguments, build the list of excludes</span>
-<a name="cl-276"></a> <span class="n">excludes</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
-<a name="cl-277"></a> <span class="n">recurse_tree</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">excludes</span><span class="p">,</span> <span class="n">opts</span><span class="p">)</span>
-<a name="cl-278"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-279"></a> <span class="k">print</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s"> is not a valid output destination directory.&#39;</span> <span class="o">%</span> <span class="n">opts</span><span class="o">.</span><span class="n">destdir</span>
-<a name="cl-280"></a> <span class="k">else</span><span class="p">:</span>
-<a name="cl-281"></a> <span class="k">print</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s"> is not a valid directory.&#39;</span> <span class="o">%</span> <span class="n">args</span>
-<a name="cl-282"></a>
-<a name="cl-283"></a>
-<a name="cl-284"></a>
-<a name="cl-285"></a>
-<a name="cl-286"></a><span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
-<a name="cl-287"></a> <span class="n">main</span><span class="p">()</span>
-<a name="cl-288"></a>
-</pre></div>
-</td></tr></table>
-
-
-</div>
-
-
-
- <div class="cb"></div>
- </div>
- <div class="cb footer-placeholder"></div>
- </div>
- <div id="footer-wrapper">
- <div id="footer">
- <a href="/site/terms/">TOS</a> | <a href="/site/privacy/">Privacy Policy</a> | <a href="http://blog.bitbucket.org/">Blog</a> | <a href="http://bitbucket.org/jespern/bitbucket/issues/new/">Report Bug</a> | <a href="http://groups.google.com/group/bitbucket-users">Discuss</a> | <a href="http://avantlumiere.com/">&copy; 2008-2010</a>
- | We run <small><b>
- <a href="http://www.djangoproject.com/">Django 1.2.1</a> /
- <a href="http://bitbucket.org/jespern/django-piston/">Piston 0.2.3rc1</a> /
- <a href="http://www.selenic.com/mercurial/">Hg 1.3.1</a> /
- <a href="http://www.python.org">Python 2.5.2</a> /
- r3049| fe02
- </b></small>
- </div>
- </div>
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-2456069-3'], ['_trackPageview']);
-
- var _gaq = _gaq || [];
- _gaq.push(['atl._setAccount', 'UA-6032469-33'], ['atl._trackPageview']);
- (function() {
- var ga = document.createElement('script');
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
- 'http://www') + '.google-analytics.com/ga.js';
- ga.setAttribute('async', 'true');
- document.documentElement.firstChild.appendChild(ga);
- })();
- </script>
-
-</body>
-</html>
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Miville
+# Copyright (C) 2008 Société des arts technologiques (SAT)
+# http://www.sat.qc.ca
+# All rights reserved.
+#
+# This file 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.
+#
+# Miville 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 Miville. If not, see <http://www.gnu.org/licenses/>.
+
+"""
+This script parse a directory tree looking for python modules and packages and
+create ReST files appropriately to create code documentation with Sphinx.
+It also create a modules index.
+"""
+
+import os
+import optparse
+
+
+# automodule options
+OPTIONS = ['members',
+ 'undoc-members',
+# 'inherited-members', # disable because there's a bug in sphinx
+ 'show-inheritance']
+
+
+def create_file_name(base, opts):
+ """Create file name from base name, path and suffix"""
+ return os.path.join(opts.destdir, "%s.%s" % (base, opts.suffix))
+
+def write_automodule_directive(module):
+ """Create the automodule directive and add the options"""
+ directive = '.. automodule:: %s\n' % module
+ for option in OPTIONS:
+ directive += ' :%s:\n' % option
+ directive += '\n'
+ return directive
+
+def write_heading(module, kind='Module'):
+ """Create the page heading."""
+ heading = '.. _%s:\n' % module
+ heading += '\n'
+ heading += title_line(module, '=')
+ return heading
+
+def write_sub(module, kind='Module'):
+ """Create the module subtitle"""
+ sub = title_line('The :mod:`%s` %s' % (module, kind), '-')
+ return sub
+
+def title_line(title, char):
+ """ Underline the title with the character pass, with the right length."""
+ return ':mod:`%s`\n%s\n\n' % (title, len(title) * char)
+
+def create_module_content(module):
+ """Build the text of the module file."""
+ text = write_heading(module)
+ #text += write_sub(module)
+ text += write_automodule_directive(module)
+ return text
+
+def is_python_package(path):
+ """returns True if directory is Python package
+ - that is - contains the __index__.py file
+ returns False otherwise
+ """
+ return os.path.isfile(os.path.join(path, '__init__.py'))
+
+def create_package_content(package, py_files, sub_packages):
+ """Build the text of the file"""
+
+ text = write_heading(package, 'Package')
+ text += write_automodule_directive(package)
+
+ #if has py_files or sub_packages
+ # output Package summary:
+ # has #modules, #sub-packages, #members
+
+ #create links to sub-module files
+ if py_files:
+ text += '.. _modules::\n'
+ text += '\n'
+ text += title_line('Modules', '-')
+ text += '\n'
+ for py_file in py_files:
+ if py_file == '__init__.py':
+ #continue, because this file is being created for
+ #__init__.py of the current module
+ continue
+ py_file = os.path.splitext(py_file)[0]
+ text += '* :ref:`%s.%s`\n' % (package, py_file)
+ text += '\n'
+
+ #create links to sub-packages
+ if sub_packages:
+ text += '.. _packages::\n'
+ text += '\n'
+ text += title_line('Subpackages', '-')
+ text += '\n'
+ for sub in sub_packages:
+ #todo - add description here
+ text += '* :ref:`%s.%s`\n' % (package, sub)
+ return text
+ #build toctree for the package page
+ #text += '.. toctree::\n\n'
+ #for sub in subs:
+ # text += ' %s.%s\n' % (package, sub)
+
+def write_file(module_name, text_content, opts):
+ """Saves file for the module uses text_content for content
+ and information within options to determine where to save
+
+ respects options "dry run" and "force"
+ """
+ file_path = create_file_name(module_name, opts)
+ if not opts.force and os.path.isfile(file_path):
+ print 'File %s already exists.' % file_path
+ else:
+ print 'Writing file %s' % file_path
+ # write the file
+ if not opts.dryrun:
+ fd = open(file_path, 'w')
+ fd.write(text_content)
+ fd.close()
+
+
+def check_for_code(module):
+ """
+ Check if there's at least one class or one function in the module.
+ """
+ fd = open(module, 'r')
+ for line in fd:
+ if line.startswith('def ') or line.startswith('class '):
+ fd.close()
+ return True
+ fd.close()
+ return False
+
+def select_public_names(name_list):
+ """goes through the list and discards names
+ that match pattern for hidden and private directory and file names
+ returns the list of those items that pass the "publicity" test
+ """
+ public_names = []
+ for name in name_list:
+ if name.startswith('.') or name.startswith('_'):
+ continue
+ else:
+ public_names.append(name)
+ return public_names
+
+def select_python_packages(package_path, sub_directory_names):
+ """returns list of subdimodule_name directories (only basenames) of package_path
+ which are themselves python packages
+ """
+ python_packages = []
+ for sub_name in sub_directory_names:
+ sub_path = os.path.join(package_path, sub_name)
+ if is_python_package(sub_path):
+ python_packages.append(sub_name)
+ return python_packages
+
+def recurse_tree(path, excludes, opts):
+ """
+ Look for every file in the directory tree and create the corresponding
+ ReST files.
+ """
+ print path
+ base_package_name = None
+ # check if the base directory is a package and get is name
+ if '__init__.py' in os.listdir(path):
+ base_package_name = os.path.basename(path)
+
+ toc = []
+ excludes = format_excludes(path, excludes)
+ tree = os.walk(path, False)
+ for directory, subs, files in tree:
+
+ py_files = select_py_files(files)
+ if len(py_files) < 1:
+ continue
+
+ if is_directory_excluded(directory, excludes):
+ continue
+
+ # TODO: could add check for windows hidden files
+ subs = select_public_names(subs)
+ subs = select_python_packages(directory, subs)
+
+ #calculate dotted python package name - like proj.pack.subpackage
+ package_name = directory.replace(os.path.sep, '.')
+
+ if is_python_package(directory):
+ text = create_package_content(package_name, py_files, subs)
+ write_file(package_name, text, opts)
+ toc.append(os.path.basename(directory))
+
+ for py_file in py_files:
+ if py_file == '__init__.py':
+ continue
+ module_name = os.path.splitext(py_file)[0]
+ module_package_name = package_name + '.' + module_name
+ text = create_module_content(module_package_name)
+ write_file(module_package_name, text, opts)
+ toc.append(module_package_name)
+
+ # create the module's index
+ if not opts.notoc:
+ modules_toc(toc, opts)
+
+def modules_toc(modules, opts, name='modules'):
+ """
+ Create the module's index.
+ """
+ fname = create_file_name(name, opts)
+ if not opts.force and os.path.exists(fname):
+ print "File %s already exists." % name
+ return
+
+ print "Creating module's index modules.txt."
+ text = write_heading(opts.header, 'Modules')
+ text += title_line('Modules:', '-')
+ text += '.. toctree::\n'
+ text += ' :maxdepth: %s\n\n' % opts.maxdepth
+
+ modules.sort()
+ prev_module = ''
+ for module in modules:
+ # look if the module is a subpackage and, if yes, ignore it
+ if module.startswith(prev_module + '.'):
+ continue
+ prev_module = module
+ text += ' %s\n' % module
+
+ # write the file
+ if not opts.dryrun:
+ fd = open(fname, 'w')
+ fd.write(text)
+ fd.close()
+
+def format_excludes(path, excludes):
+ """
+ Format the excluded directory list.
+ (verify that the path is not from the root of the volume or the root of the
+ package)
+ """
+ f_excludes = []
+ for exclude in excludes:
+ #not sure about the "not startswith" part
+ if not os.path.isabs(exclude) and not exclude.startswith(path):
+ exclude = os.path.join(path, exclude)
+ # remove trailing slash
+ f_excludes.append(exclude.rstrip(os.path.sep))
+ return f_excludes
+
+def is_directory_excluded(directory, excludes):
+ """Returns true if directory is in the exclude list
+ otherwise returns false
+ """
+ for exclude in excludes:
+ if directory.startswith(exclude):
+ return True
+ return False
+
+def select_py_files(files):
+ """
+ Return a list with only the python scripts (remove all other files).
+ """
+ py_files = [fich for fich in files if os.path.splitext(fich)[1] == '.py']
+ return py_files
+
+
+def main():
+ """
+ Parse and check the command line arguments
+ """
+ parser = optparse.OptionParser(usage="""usage: %prog [options] <package path> [exclude paths, ...]
+
+Note: By default this script will not overwrite already created files.""")
+ parser.add_option("-n", "--doc-header", action="store", dest="header", help="Documentation Header (default=Project)", default="Project")
+ parser.add_option("-d", "--dest-dir", action="store", dest="destdir", help="Output destination directory", default="")
+ parser.add_option("-s", "--suffix", action="store", dest="suffix", help="module suffix (default=txt)", default="txt")
+ parser.add_option("-m", "--maxdepth", action="store", dest="maxdepth", help="Maximum depth of submodules to show in the TOC (default=4)", type="int", default=4)
+ parser.add_option("-r", "--dry-run", action="store_true", dest="dryrun", help="Run the script without creating the files")
+ parser.add_option("-f", "--force", action="store_true", dest="force", help="Overwrite all the files")
+ parser.add_option("-t", "--no-toc", action="store_true", dest="notoc", help="Don't create the table of content file")
+ (opts, args) = parser.parse_args()
+ if len(args) < 1:
+ parser.error("package path is required.")
+ else:
+ if os.path.isdir(args[0]):
+ # check if the output destination is a valid directory
+ if opts.destdir and os.path.isdir(opts.destdir):
+ # if there's some exclude arguments, build the list of excludes
+ excludes = args[1:]
+ recurse_tree(args[0], excludes, opts)
+ else:
+ print '%s is not a valid output destination directory.' % opts.destdir
+ else:
+ print '%s is not a valid directory.' % args
+
+
+
+
+if __name__ == '__main__':
+ main()
+
diff --git a/askbot/doc/source/conf.py b/askbot/doc/source/conf.py
index da743b4f..0062228b 100644
--- a/askbot/doc/source/conf.py
+++ b/askbot/doc/source/conf.py
@@ -46,7 +46,7 @@ print sys.path
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode']
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage',]# 'sphinx.ext.viewcode']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
diff --git a/askbot/doc/source/devel/__init__.rst b/askbot/doc/source/devel/__init__.rst
deleted file mode 100644
index 3eae5545..00000000
--- a/askbot/doc/source/devel/__init__.rst
+++ /dev/null
@@ -1 +0,0 @@
-.. automodule:: askbot
diff --git a/askbot/doc/source/devel/admin.rst b/askbot/doc/source/devel/admin.rst
deleted file mode 100644
index 0a1337d3..00000000
--- a/askbot/doc/source/devel/admin.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-.. automodule:: askbot.admin
- :members:
- :undoc-members:
diff --git a/askbot/doc/source/devel/askbot.admin.rst b/askbot/doc/source/devel/askbot.admin.rst
new file mode 100644
index 00000000..335ec444
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.admin.rst
@@ -0,0 +1,10 @@
+.. _askbot.admin:
+
+:mod:`askbot.admin`
+============
+
+.. automodule:: askbot.admin
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.auth.rst b/askbot/doc/source/devel/askbot.auth.rst
new file mode 100644
index 00000000..90137cb3
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.auth.rst
@@ -0,0 +1,10 @@
+.. _askbot.auth:
+
+:mod:`askbot.auth`
+===========
+
+.. automodule:: askbot.auth
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.bin.generate_modules.rst b/askbot/doc/source/devel/askbot.bin.generate_modules.rst
new file mode 100644
index 00000000..ff5c8c91
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.bin.generate_modules.rst
@@ -0,0 +1,10 @@
+.. _askbot.bin.generate_modules:
+
+:mod:`askbot.bin.generate_modules`
+===========================
+
+.. automodule:: askbot.bin.generate_modules
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.bin.rst b/askbot/doc/source/devel/askbot.bin.rst
new file mode 100644
index 00000000..84d99ee7
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.bin.rst
@@ -0,0 +1,19 @@
+.. _askbot.bin:
+
+:mod:`askbot.bin`
+==========
+
+.. automodule:: askbot.bin
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.bin.generate_modules`
+* :ref:`askbot.bin.show_profile_stats`
+
diff --git a/askbot/doc/source/devel/askbot.bin.show_profile_stats.rst b/askbot/doc/source/devel/askbot.bin.show_profile_stats.rst
new file mode 100644
index 00000000..53ba36bf
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.bin.show_profile_stats.rst
@@ -0,0 +1,10 @@
+.. _askbot.bin.show_profile_stats:
+
+:mod:`askbot.bin.show_profile_stats`
+=============================
+
+.. automodule:: askbot.bin.show_profile_stats
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.email.rst b/askbot/doc/source/devel/askbot.conf.email.rst
new file mode 100644
index 00000000..01dd0693
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.email.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.email:
+
+:mod:`askbot.conf.email`
+=================
+
+.. automodule:: askbot.conf.email
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.external_keys.rst b/askbot/doc/source/devel/askbot.conf.external_keys.rst
new file mode 100644
index 00000000..8c0d5861
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.external_keys.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.external_keys:
+
+:mod:`askbot.conf.external_keys`
+=========================
+
+.. automodule:: askbot.conf.external_keys
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.flatpages.rst b/askbot/doc/source/devel/askbot.conf.flatpages.rst
new file mode 100644
index 00000000..a33b5f64
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.flatpages.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.flatpages:
+
+:mod:`askbot.conf.flatpages`
+=====================
+
+.. automodule:: askbot.conf.flatpages
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.forum_data_rules.rst b/askbot/doc/source/devel/askbot.conf.forum_data_rules.rst
new file mode 100644
index 00000000..f373c2a0
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.forum_data_rules.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.forum_data_rules:
+
+:mod:`askbot.conf.forum_data_rules`
+============================
+
+.. automodule:: askbot.conf.forum_data_rules
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.minimum_reputation.rst b/askbot/doc/source/devel/askbot.conf.minimum_reputation.rst
new file mode 100644
index 00000000..17a84e0f
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.minimum_reputation.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.minimum_reputation:
+
+:mod:`askbot.conf.minimum_reputation`
+==============================
+
+.. automodule:: askbot.conf.minimum_reputation
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.reputation_changes.rst b/askbot/doc/source/devel/askbot.conf.reputation_changes.rst
new file mode 100644
index 00000000..0d7879bf
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.reputation_changes.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.reputation_changes:
+
+:mod:`askbot.conf.reputation_changes`
+==============================
+
+.. automodule:: askbot.conf.reputation_changes
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.rst b/askbot/doc/source/devel/askbot.conf.rst
new file mode 100644
index 00000000..3aab757d
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.rst
@@ -0,0 +1,29 @@
+.. _askbot.conf:
+
+:mod:`askbot.conf`
+===========
+
+.. automodule:: askbot.conf
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.conf.email`
+* :ref:`askbot.conf.external_keys`
+* :ref:`askbot.conf.flatpages`
+* :ref:`askbot.conf.forum_data_rules`
+* :ref:`askbot.conf.minimum_reputation`
+* :ref:`askbot.conf.reputation_changes`
+* :ref:`askbot.conf.settings_wrapper`
+* :ref:`askbot.conf.site_settings`
+* :ref:`askbot.conf.skin_counter_settings`
+* :ref:`askbot.conf.skin_general_settings`
+* :ref:`askbot.conf.user_settings`
+* :ref:`askbot.conf.vote_rules`
+
diff --git a/askbot/doc/source/devel/askbot.conf.settings_wrapper.rst b/askbot/doc/source/devel/askbot.conf.settings_wrapper.rst
new file mode 100644
index 00000000..af95d15c
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.settings_wrapper.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.settings_wrapper:
+
+:mod:`askbot.conf.settings_wrapper`
+============================
+
+.. automodule:: askbot.conf.settings_wrapper
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.site_settings.rst b/askbot/doc/source/devel/askbot.conf.site_settings.rst
new file mode 100644
index 00000000..0cff38e4
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.site_settings.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.site_settings:
+
+:mod:`askbot.conf.site_settings`
+=========================
+
+.. automodule:: askbot.conf.site_settings
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.skin_counter_settings.rst b/askbot/doc/source/devel/askbot.conf.skin_counter_settings.rst
new file mode 100644
index 00000000..843a4e5b
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.skin_counter_settings.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.skin_counter_settings:
+
+:mod:`askbot.conf.skin_counter_settings`
+=================================
+
+.. automodule:: askbot.conf.skin_counter_settings
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.skin_general_settings.rst b/askbot/doc/source/devel/askbot.conf.skin_general_settings.rst
new file mode 100644
index 00000000..e6b7070f
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.skin_general_settings.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.skin_general_settings:
+
+:mod:`askbot.conf.skin_general_settings`
+=================================
+
+.. automodule:: askbot.conf.skin_general_settings
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.user_settings.rst b/askbot/doc/source/devel/askbot.conf.user_settings.rst
new file mode 100644
index 00000000..7a02b95e
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.user_settings.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.user_settings:
+
+:mod:`askbot.conf.user_settings`
+=========================
+
+.. automodule:: askbot.conf.user_settings
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.conf.vote_rules.rst b/askbot/doc/source/devel/askbot.conf.vote_rules.rst
new file mode 100644
index 00000000..613af098
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.conf.vote_rules.rst
@@ -0,0 +1,10 @@
+.. _askbot.conf.vote_rules:
+
+:mod:`askbot.conf.vote_rules`
+======================
+
+.. automodule:: askbot.conf.vote_rules
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.const.message_keys.rst b/askbot/doc/source/devel/askbot.const.message_keys.rst
new file mode 100644
index 00000000..29e9b8b1
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.const.message_keys.rst
@@ -0,0 +1,10 @@
+.. _askbot.const.message_keys:
+
+:mod:`askbot.const.message_keys`
+=========================
+
+.. automodule:: askbot.const.message_keys
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.const.rst b/askbot/doc/source/devel/askbot.const.rst
new file mode 100644
index 00000000..c9e77558
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.const.rst
@@ -0,0 +1,18 @@
+.. _askbot.const:
+
+:mod:`askbot.const`
+============
+
+.. automodule:: askbot.const
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.const.message_keys`
+
diff --git a/askbot/doc/source/devel/askbot.context.rst b/askbot/doc/source/devel/askbot.context.rst
new file mode 100644
index 00000000..991e0775
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.context.rst
@@ -0,0 +1,10 @@
+.. _askbot.context:
+
+:mod:`askbot.context`
+==============
+
+.. automodule:: askbot.context
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.deployment.dialogs.rst b/askbot/doc/source/devel/askbot.deployment.dialogs.rst
new file mode 100644
index 00000000..2389a475
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.deployment.dialogs.rst
@@ -0,0 +1,10 @@
+.. _askbot.deployment.dialogs:
+
+:mod:`askbot.deployment.dialogs`
+=========================
+
+.. automodule:: askbot.deployment.dialogs
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.deployment.messages.rst b/askbot/doc/source/devel/askbot.deployment.messages.rst
new file mode 100644
index 00000000..b4133d86
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.deployment.messages.rst
@@ -0,0 +1,10 @@
+.. _askbot.deployment.messages:
+
+:mod:`askbot.deployment.messages`
+==========================
+
+.. automodule:: askbot.deployment.messages
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.deployment.path_utils.rst b/askbot/doc/source/devel/askbot.deployment.path_utils.rst
new file mode 100644
index 00000000..d3fba5a3
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.deployment.path_utils.rst
@@ -0,0 +1,10 @@
+.. _askbot.deployment.path_utils:
+
+:mod:`askbot.deployment.path_utils`
+============================
+
+.. automodule:: askbot.deployment.path_utils
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.deployment.rst b/askbot/doc/source/devel/askbot.deployment.rst
new file mode 100644
index 00000000..d2b6fe92
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.deployment.rst
@@ -0,0 +1,20 @@
+.. _askbot.deployment:
+
+:mod:`askbot.deployment`
+=================
+
+.. automodule:: askbot.deployment
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.deployment.dialogs`
+* :ref:`askbot.deployment.messages`
+* :ref:`askbot.deployment.path_utils`
+
diff --git a/askbot/doc/source/devel/askbot.deps.grapefruit.rst b/askbot/doc/source/devel/askbot.deps.grapefruit.rst
new file mode 100644
index 00000000..eaa3dbbe
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.deps.grapefruit.rst
@@ -0,0 +1,10 @@
+.. _askbot.deps.grapefruit:
+
+:mod:`askbot.deps.grapefruit`
+======================
+
+.. automodule:: askbot.deps.grapefruit
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.deps.rst b/askbot/doc/source/devel/askbot.deps.rst
new file mode 100644
index 00000000..6c0df669
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.deps.rst
@@ -0,0 +1,28 @@
+.. _askbot.deps:
+
+:mod:`askbot.deps`
+===========
+
+.. automodule:: askbot.deps
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.deps.grapefruit`
+
+.. _packages::
+
+:mod:`Subpackages`
+-----------
+
+
+* :ref:`askbot.deps.django_authopenid`
+* :ref:`askbot.deps.livesettings`
+* :ref:`askbot.deps.openid`
+* :ref:`askbot.deps.recaptcha_django`
diff --git a/askbot/doc/source/devel/askbot.doc.source.conf.rst b/askbot/doc/source/devel/askbot.doc.source.conf.rst
new file mode 100644
index 00000000..bf78752b
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.doc.source.conf.rst
@@ -0,0 +1,10 @@
+.. _askbot.doc.source.conf:
+
+:mod:`askbot.doc.source.conf`
+======================
+
+.. automodule:: askbot.doc.source.conf
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.feed.rst b/askbot/doc/source/devel/askbot.feed.rst
new file mode 100644
index 00000000..96e944a1
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.feed.rst
@@ -0,0 +1,10 @@
+.. _askbot.feed:
+
+:mod:`askbot.feed`
+===========
+
+.. automodule:: askbot.feed
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.forms.rst b/askbot/doc/source/devel/askbot.forms.rst
new file mode 100644
index 00000000..20558ec4
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.forms.rst
@@ -0,0 +1,10 @@
+.. _askbot.forms:
+
+:mod:`askbot.forms`
+============
+
+.. automodule:: askbot.forms
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.importers.rst b/askbot/doc/source/devel/askbot.importers.rst
new file mode 100644
index 00000000..d1c20053
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.importers.rst
@@ -0,0 +1,24 @@
+.. _askbot.importers:
+
+:mod:`askbot.importers`
+================
+
+.. automodule:: askbot.importers
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+
+.. _packages::
+
+:mod:`Subpackages`
+-----------
+
+
+* :ref:`askbot.importers.stackexchange`
diff --git a/askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.load_stackexchange.rst b/askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.load_stackexchange.rst
new file mode 100644
index 00000000..56e2c198
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.load_stackexchange.rst
@@ -0,0 +1,10 @@
+.. _askbot.importers.stackexchange.management.commands.load_stackexchange:
+
+:mod:`askbot.importers.stackexchange.management.commands.load_stackexchange`
+=====================================================================
+
+.. automodule:: askbot.importers.stackexchange.management.commands.load_stackexchange
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.rst b/askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.rst
new file mode 100644
index 00000000..c7d5a0e4
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.importers.stackexchange.management.commands.rst
@@ -0,0 +1,18 @@
+.. _askbot.importers.stackexchange.management.commands:
+
+:mod:`askbot.importers.stackexchange.management.commands`
+==================================================
+
+.. automodule:: askbot.importers.stackexchange.management.commands
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.importers.stackexchange.management.commands.load_stackexchange`
+
diff --git a/askbot/doc/source/devel/askbot.importers.stackexchange.management.rst b/askbot/doc/source/devel/askbot.importers.stackexchange.management.rst
new file mode 100644
index 00000000..d399d809
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.importers.stackexchange.management.rst
@@ -0,0 +1,24 @@
+.. _askbot.importers.stackexchange.management:
+
+:mod:`askbot.importers.stackexchange.management`
+=========================================
+
+.. automodule:: askbot.importers.stackexchange.management
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+
+.. _packages::
+
+:mod:`Subpackages`
+-----------
+
+
+* :ref:`askbot.importers.stackexchange.management.commands`
diff --git a/askbot/doc/source/devel/askbot.importers.stackexchange.models.rst b/askbot/doc/source/devel/askbot.importers.stackexchange.models.rst
new file mode 100644
index 00000000..62a77703
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.importers.stackexchange.models.rst
@@ -0,0 +1,10 @@
+.. _askbot.importers.stackexchange.models:
+
+:mod:`askbot.importers.stackexchange.models`
+=====================================
+
+.. automodule:: askbot.importers.stackexchange.models
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.importers.stackexchange.parse_models.rst b/askbot/doc/source/devel/askbot.importers.stackexchange.parse_models.rst
new file mode 100644
index 00000000..57ffe6c3
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.importers.stackexchange.parse_models.rst
@@ -0,0 +1,10 @@
+.. _askbot.importers.stackexchange.parse_models:
+
+:mod:`askbot.importers.stackexchange.parse_models`
+===========================================
+
+.. automodule:: askbot.importers.stackexchange.parse_models
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.importers.stackexchange.rst b/askbot/doc/source/devel/askbot.importers.stackexchange.rst
new file mode 100644
index 00000000..1a38a173
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.importers.stackexchange.rst
@@ -0,0 +1,26 @@
+.. _askbot.importers.stackexchange:
+
+:mod:`askbot.importers.stackexchange`
+==============================
+
+.. automodule:: askbot.importers.stackexchange
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.importers.stackexchange.models`
+* :ref:`askbot.importers.stackexchange.parse_models`
+
+.. _packages::
+
+:mod:`Subpackages`
+-----------
+
+
+* :ref:`askbot.importers.stackexchange.management`
diff --git a/askbot/doc/source/devel/askbot.management.commands.add_admin.rst b/askbot/doc/source/devel/askbot.management.commands.add_admin.rst
new file mode 100644
index 00000000..e4ea3cfe
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.add_admin.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.add_admin:
+
+:mod:`askbot.management.commands.add_admin`
+====================================
+
+.. automodule:: askbot.management.commands.add_admin
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.base_command.rst b/askbot/doc/source/devel/askbot.management.commands.base_command.rst
new file mode 100644
index 00000000..85122b16
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.base_command.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.base_command:
+
+:mod:`askbot.management.commands.base_command`
+=======================================
+
+.. automodule:: askbot.management.commands.base_command
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.clean_award_badges.rst b/askbot/doc/source/devel/askbot.management.commands.clean_award_badges.rst
new file mode 100644
index 00000000..6cc9ad43
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.clean_award_badges.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.clean_award_badges:
+
+:mod:`askbot.management.commands.clean_award_badges`
+=============================================
+
+.. automodule:: askbot.management.commands.clean_award_badges
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.message_to_everyone.rst b/askbot/doc/source/devel/askbot.management.commands.message_to_everyone.rst
new file mode 100644
index 00000000..398f3550
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.message_to_everyone.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.message_to_everyone:
+
+:mod:`askbot.management.commands.message_to_everyone`
+==============================================
+
+.. automodule:: askbot.management.commands.message_to_everyone
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.multi_award_badges.rst b/askbot/doc/source/devel/askbot.management.commands.multi_award_badges.rst
new file mode 100644
index 00000000..510763f8
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.multi_award_badges.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.multi_award_badges:
+
+:mod:`askbot.management.commands.multi_award_badges`
+=============================================
+
+.. automodule:: askbot.management.commands.multi_award_badges
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.once_award_badges.rst b/askbot/doc/source/devel/askbot.management.commands.once_award_badges.rst
new file mode 100644
index 00000000..8f270dd6
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.once_award_badges.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.once_award_badges:
+
+:mod:`askbot.management.commands.once_award_badges`
+============================================
+
+.. automodule:: askbot.management.commands.once_award_badges
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.pg_base_command.rst b/askbot/doc/source/devel/askbot.management.commands.pg_base_command.rst
new file mode 100644
index 00000000..76ec2827
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.pg_base_command.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.pg_base_command:
+
+:mod:`askbot.management.commands.pg_base_command`
+==========================================
+
+.. automodule:: askbot.management.commands.pg_base_command
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.pg_clean_award_badges.rst b/askbot/doc/source/devel/askbot.management.commands.pg_clean_award_badges.rst
new file mode 100644
index 00000000..cda44a1c
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.pg_clean_award_badges.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.pg_clean_award_badges:
+
+:mod:`askbot.management.commands.pg_clean_award_badges`
+================================================
+
+.. automodule:: askbot.management.commands.pg_clean_award_badges
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.pg_multi_award_badges.rst b/askbot/doc/source/devel/askbot.management.commands.pg_multi_award_badges.rst
new file mode 100644
index 00000000..eba77abe
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.pg_multi_award_badges.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.pg_multi_award_badges:
+
+:mod:`askbot.management.commands.pg_multi_award_badges`
+================================================
+
+.. automodule:: askbot.management.commands.pg_multi_award_badges
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.pg_once_award_badges.rst b/askbot/doc/source/devel/askbot.management.commands.pg_once_award_badges.rst
new file mode 100644
index 00000000..837b92c9
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.pg_once_award_badges.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.pg_once_award_badges:
+
+:mod:`askbot.management.commands.pg_once_award_badges`
+===============================================
+
+.. automodule:: askbot.management.commands.pg_once_award_badges
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.remove_admin.rst b/askbot/doc/source/devel/askbot.management.commands.remove_admin.rst
new file mode 100644
index 00000000..aceef408
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.remove_admin.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.remove_admin:
+
+:mod:`askbot.management.commands.remove_admin`
+=======================================
+
+.. automodule:: askbot.management.commands.remove_admin
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.rst b/askbot/doc/source/devel/askbot.management.commands.rst
new file mode 100644
index 00000000..e8dbde06
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.rst
@@ -0,0 +1,31 @@
+.. _askbot.management.commands:
+
+:mod:`askbot.management.commands`
+==========================
+
+.. automodule:: askbot.management.commands
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.management.commands.base_command`
+* :ref:`askbot.management.commands.clean_award_badges`
+* :ref:`askbot.management.commands.message_to_everyone`
+* :ref:`askbot.management.commands.multi_award_badges`
+* :ref:`askbot.management.commands.once_award_badges`
+* :ref:`askbot.management.commands.pg_base_command`
+* :ref:`askbot.management.commands.pg_clean_award_badges`
+* :ref:`askbot.management.commands.pg_multi_award_badges`
+* :ref:`askbot.management.commands.pg_once_award_badges`
+* :ref:`askbot.management.commands.sample_command`
+* :ref:`askbot.management.commands.send_email_alerts`
+* :ref:`askbot.management.commands.subscribe_everyone`
+* :ref:`askbot.management.commands.add_admin`
+* :ref:`askbot.management.commands.remove_admin`
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.sample_command.rst b/askbot/doc/source/devel/askbot.management.commands.sample_command.rst
new file mode 100644
index 00000000..87cae37f
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.sample_command.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.sample_command:
+
+:mod:`askbot.management.commands.sample_command`
+=========================================
+
+.. automodule:: askbot.management.commands.sample_command
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.send_email_alerts.rst b/askbot/doc/source/devel/askbot.management.commands.send_email_alerts.rst
new file mode 100644
index 00000000..03319f61
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.send_email_alerts.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.send_email_alerts:
+
+:mod:`askbot.management.commands.send_email_alerts`
+============================================
+
+.. automodule:: askbot.management.commands.send_email_alerts
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.commands.subscribe_everyone.rst b/askbot/doc/source/devel/askbot.management.commands.subscribe_everyone.rst
new file mode 100644
index 00000000..7527cb8e
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.commands.subscribe_everyone.rst
@@ -0,0 +1,10 @@
+.. _askbot.management.commands.subscribe_everyone:
+
+:mod:`askbot.management.commands.subscribe_everyone`
+=============================================
+
+.. automodule:: askbot.management.commands.subscribe_everyone
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.management.rst b/askbot/doc/source/devel/askbot.management.rst
new file mode 100644
index 00000000..0bc0b21b
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.management.rst
@@ -0,0 +1,24 @@
+.. _askbot.management:
+
+:mod:`askbot.management`
+=================
+
+.. automodule:: askbot.management
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+
+.. _packages::
+
+:mod:`Subpackages`
+-----------
+
+
+* :ref:`askbot.management.commands`
diff --git a/askbot/doc/source/devel/askbot.middleware.anon_user.rst b/askbot/doc/source/devel/askbot.middleware.anon_user.rst
new file mode 100644
index 00000000..5dc10faf
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.middleware.anon_user.rst
@@ -0,0 +1,10 @@
+.. _askbot.middleware.anon_user:
+
+:mod:`askbot.middleware.anon_user`
+===========================
+
+.. automodule:: askbot.middleware.anon_user
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.middleware.cancel.rst b/askbot/doc/source/devel/askbot.middleware.cancel.rst
new file mode 100644
index 00000000..f00cab02
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.middleware.cancel.rst
@@ -0,0 +1,10 @@
+.. _askbot.middleware.cancel:
+
+:mod:`askbot.middleware.cancel`
+========================
+
+.. automodule:: askbot.middleware.cancel
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.middleware.pagesize.rst b/askbot/doc/source/devel/askbot.middleware.pagesize.rst
new file mode 100644
index 00000000..36170298
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.middleware.pagesize.rst
@@ -0,0 +1,10 @@
+.. _askbot.middleware.pagesize:
+
+:mod:`askbot.middleware.pagesize`
+==========================
+
+.. automodule:: askbot.middleware.pagesize
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.middleware.rst b/askbot/doc/source/devel/askbot.middleware.rst
new file mode 100644
index 00000000..ce1551fc
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.middleware.rst
@@ -0,0 +1,22 @@
+.. _askbot.middleware:
+
+:mod:`askbot.middleware`
+=================
+
+.. automodule:: askbot.middleware
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.middleware.anon_user`
+* :ref:`askbot.middleware.cancel`
+* :ref:`askbot.middleware.pagesize`
+* :ref:`askbot.middleware.spaceless`
+* :ref:`askbot.middleware.view_log`
+
diff --git a/askbot/doc/source/devel/askbot.middleware.spaceless.rst b/askbot/doc/source/devel/askbot.middleware.spaceless.rst
new file mode 100644
index 00000000..e75f217f
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.middleware.spaceless.rst
@@ -0,0 +1,10 @@
+.. _askbot.middleware.spaceless:
+
+:mod:`askbot.middleware.spaceless`
+===========================
+
+.. automodule:: askbot.middleware.spaceless
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.middleware.view_log.rst b/askbot/doc/source/devel/askbot.middleware.view_log.rst
new file mode 100644
index 00000000..d0779fc0
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.middleware.view_log.rst
@@ -0,0 +1,10 @@
+.. _askbot.middleware.view_log:
+
+:mod:`askbot.middleware.view_log`
+==========================
+
+.. automodule:: askbot.middleware.view_log
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0001_initial.rst b/askbot/doc/source/devel/askbot.migrations.0001_initial.rst
new file mode 100644
index 00000000..f0a8907d
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0001_initial.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0001_initial:
+
+:mod:`askbot.migrations.0001_initial`
+==============================
+
+.. automodule:: askbot.migrations.0001_initial
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question.rst b/askbot/doc/source/devel/askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question.rst
new file mode 100644
index 00000000..50cd7f22
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question:
+
+:mod:`askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question`
+=============================================================================================
+
+.. automodule:: askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search.rst b/askbot/doc/source/devel/askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search.rst
new file mode 100644
index 00000000..e5c50e94
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search:
+
+:mod:`askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search`
+===========================================================================
+
+.. automodule:: askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0004_install_full_text_indexes_for_mysql.rst b/askbot/doc/source/devel/askbot.migrations.0004_install_full_text_indexes_for_mysql.rst
new file mode 100644
index 00000000..6a58f829
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0004_install_full_text_indexes_for_mysql.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0004_install_full_text_indexes_for_mysql:
+
+:mod:`askbot.migrations.0004_install_full_text_indexes_for_mysql`
+==========================================================
+
+.. automodule:: askbot.migrations.0004_install_full_text_indexes_for_mysql
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0005_install_badges.rst b/askbot/doc/source/devel/askbot.migrations.0005_install_badges.rst
new file mode 100644
index 00000000..763913a0
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0005_install_badges.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0005_install_badges:
+
+:mod:`askbot.migrations.0005_install_badges`
+=====================================
+
+.. automodule:: askbot.migrations.0005_install_badges
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions.rst b/askbot/doc/source/devel/askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions.rst
new file mode 100644
index 00000000..fc4528fc
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions:
+
+:mod:`askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions`
+=========================================================================
+
+.. automodule:: askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0007_install_mentions_model.rst b/askbot/doc/source/devel/askbot.migrations.0007_install_mentions_model.rst
new file mode 100644
index 00000000..f8126b25
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0007_install_mentions_model.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0007_install_mentions_model:
+
+:mod:`askbot.migrations.0007_install_mentions_model`
+=============================================
+
+.. automodule:: askbot.migrations.0007_install_mentions_model
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0008_add_html_field_to_comments.rst b/askbot/doc/source/devel/askbot.migrations.0008_add_html_field_to_comments.rst
new file mode 100644
index 00000000..66194d8a
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0008_add_html_field_to_comments.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0008_add_html_field_to_comments:
+
+:mod:`askbot.migrations.0008_add_html_field_to_comments`
+=================================================
+
+.. automodule:: askbot.migrations.0008_add_html_field_to_comments
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0009_calculate_html_field_for_comments.rst b/askbot/doc/source/devel/askbot.migrations.0009_calculate_html_field_for_comments.rst
new file mode 100644
index 00000000..ac7b0454
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0009_calculate_html_field_for_comments.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0009_calculate_html_field_for_comments:
+
+:mod:`askbot.migrations.0009_calculate_html_field_for_comments`
+========================================================
+
+.. automodule:: askbot.migrations.0009_calculate_html_field_for_comments
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0010_add_receiving_user_to_activity_model.rst b/askbot/doc/source/devel/askbot.migrations.0010_add_receiving_user_to_activity_model.rst
new file mode 100644
index 00000000..e57701a6
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0010_add_receiving_user_to_activity_model.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0010_add_receiving_user_to_activity_model:
+
+:mod:`askbot.migrations.0010_add_receiving_user_to_activity_model`
+===========================================================
+
+.. automodule:: askbot.migrations.0010_add_receiving_user_to_activity_model
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0011_merge_mentions_into_activity.rst b/askbot/doc/source/devel/askbot.migrations.0011_merge_mentions_into_activity.rst
new file mode 100644
index 00000000..58dd8304
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0011_merge_mentions_into_activity.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0011_merge_mentions_into_activity:
+
+:mod:`askbot.migrations.0011_merge_mentions_into_activity`
+===================================================
+
+.. automodule:: askbot.migrations.0011_merge_mentions_into_activity
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0012_delete_some_unused_models.rst b/askbot/doc/source/devel/askbot.migrations.0012_delete_some_unused_models.rst
new file mode 100644
index 00000000..b7c25ed4
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0012_delete_some_unused_models.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0012_delete_some_unused_models:
+
+:mod:`askbot.migrations.0012_delete_some_unused_models`
+================================================
+
+.. automodule:: askbot.migrations.0012_delete_some_unused_models
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0013_add_response_count__to_user.rst b/askbot/doc/source/devel/askbot.migrations.0013_add_response_count__to_user.rst
new file mode 100644
index 00000000..e594d785
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0013_add_response_count__to_user.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0013_add_response_count__to_user:
+
+:mod:`askbot.migrations.0013_add_response_count__to_user`
+==================================================
+
+.. automodule:: askbot.migrations.0013_add_response_count__to_user
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0014_rename_schema_from_forum_to_askbot.rst b/askbot/doc/source/devel/askbot.migrations.0014_rename_schema_from_forum_to_askbot.rst
new file mode 100644
index 00000000..bad3504b
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0014_rename_schema_from_forum_to_askbot.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0014_rename_schema_from_forum_to_askbot:
+
+:mod:`askbot.migrations.0014_rename_schema_from_forum_to_askbot`
+=========================================================
+
+.. automodule:: askbot.migrations.0014_rename_schema_from_forum_to_askbot
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0015_rename_forum_contenttypes_to_askbot.rst b/askbot/doc/source/devel/askbot.migrations.0015_rename_forum_contenttypes_to_askbot.rst
new file mode 100644
index 00000000..632d0144
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0015_rename_forum_contenttypes_to_askbot.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0015_rename_forum_contenttypes_to_askbot:
+
+:mod:`askbot.migrations.0015_rename_forum_contenttypes_to_askbot`
+==========================================================
+
+.. automodule:: askbot.migrations.0015_rename_forum_contenttypes_to_askbot
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0016_auto__del_validationhash.rst b/askbot/doc/source/devel/askbot.migrations.0016_auto__del_validationhash.rst
new file mode 100644
index 00000000..2b572d80
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0016_auto__del_validationhash.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0016_auto__del_validationhash:
+
+:mod:`askbot.migrations.0016_auto__del_validationhash`
+===============================================
+
+.. automodule:: askbot.migrations.0016_auto__del_validationhash
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.0017_add_group__moderators.rst b/askbot/doc/source/devel/askbot.migrations.0017_add_group__moderators.rst
new file mode 100644
index 00000000..d36165ab
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.0017_add_group__moderators.rst
@@ -0,0 +1,10 @@
+.. _askbot.migrations.0017_add_group__moderators:
+
+:mod:`askbot.migrations.0017_add_group__moderators`
+============================================
+
+.. automodule:: askbot.migrations.0017_add_group__moderators
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.migrations.rst b/askbot/doc/source/devel/askbot.migrations.rst
new file mode 100644
index 00000000..bffa748b
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.migrations.rst
@@ -0,0 +1,34 @@
+.. _askbot.migrations:
+
+:mod:`askbot.migrations`
+=================
+
+.. automodule:: askbot.migrations
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.migrations.0001_initial`
+* :ref:`askbot.migrations.0002_auto__add_field_answer_text__chg_field_answer_html__add_field_question`
+* :ref:`askbot.migrations.0003_copy_denorm_text_record_to_posts_for_fulltext_search`
+* :ref:`askbot.migrations.0004_install_full_text_indexes_for_mysql`
+* :ref:`askbot.migrations.0005_install_badges`
+* :ref:`askbot.migrations.0006_add_subscription_setting_for_comments_and_mentions`
+* :ref:`askbot.migrations.0007_install_mentions_model`
+* :ref:`askbot.migrations.0008_add_html_field_to_comments`
+* :ref:`askbot.migrations.0009_calculate_html_field_for_comments`
+* :ref:`askbot.migrations.0010_add_receiving_user_to_activity_model`
+* :ref:`askbot.migrations.0011_merge_mentions_into_activity`
+* :ref:`askbot.migrations.0012_delete_some_unused_models`
+* :ref:`askbot.migrations.0013_add_response_count__to_user`
+* :ref:`askbot.migrations.0014_rename_schema_from_forum_to_askbot`
+* :ref:`askbot.migrations.0015_rename_forum_contenttypes_to_askbot`
+* :ref:`askbot.migrations.0016_auto__del_validationhash`
+* :ref:`askbot.migrations.0017_add_group__moderators`
+
diff --git a/askbot/doc/source/devel/askbot.models.answer.rst b/askbot/doc/source/devel/askbot.models.answer.rst
new file mode 100644
index 00000000..e1db344c
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.answer.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.answer:
+
+:mod:`askbot.models.answer`
+====================
+
+.. automodule:: askbot.models.answer
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.base.rst b/askbot/doc/source/devel/askbot.models.base.rst
new file mode 100644
index 00000000..85c2715d
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.base.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.base:
+
+:mod:`askbot.models.base`
+==================
+
+.. automodule:: askbot.models.base
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.content.rst b/askbot/doc/source/devel/askbot.models.content.rst
new file mode 100644
index 00000000..5d919add
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.content.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.content:
+
+:mod:`askbot.models.content`
+=====================
+
+.. automodule:: askbot.models.content
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.meta.rst b/askbot/doc/source/devel/askbot.models.meta.rst
new file mode 100644
index 00000000..b048a180
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.meta.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.meta:
+
+:mod:`askbot.models.meta`
+==================
+
+.. automodule:: askbot.models.meta
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.question.rst b/askbot/doc/source/devel/askbot.models.question.rst
new file mode 100644
index 00000000..e7f3ecd3
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.question.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.question:
+
+:mod:`askbot.models.question`
+======================
+
+.. automodule:: askbot.models.question
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.repute.rst b/askbot/doc/source/devel/askbot.models.repute.rst
new file mode 100644
index 00000000..d3d69865
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.repute.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.repute:
+
+:mod:`askbot.models.repute`
+====================
+
+.. automodule:: askbot.models.repute
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.rst b/askbot/doc/source/devel/askbot.models.rst
new file mode 100644
index 00000000..148f2dd5
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.rst
@@ -0,0 +1,26 @@
+.. _askbot.models:
+
+:mod:`askbot.models`
+=============
+
+.. automodule:: askbot.models
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.models.answer`
+* :ref:`askbot.models.base`
+* :ref:`askbot.models.content`
+* :ref:`askbot.models.meta`
+* :ref:`askbot.models.question`
+* :ref:`askbot.models.repute`
+* :ref:`askbot.models.signals`
+* :ref:`askbot.models.tag`
+* :ref:`askbot.models.user`
+
diff --git a/askbot/doc/source/devel/askbot.models.signals.rst b/askbot/doc/source/devel/askbot.models.signals.rst
new file mode 100644
index 00000000..2b57a61e
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.signals.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.signals:
+
+:mod:`askbot.models.signals`
+=====================
+
+.. automodule:: askbot.models.signals
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.tag.rst b/askbot/doc/source/devel/askbot.models.tag.rst
new file mode 100644
index 00000000..4c7d74f5
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.tag.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.tag:
+
+:mod:`askbot.models.tag`
+=================
+
+.. automodule:: askbot.models.tag
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.models.user.rst b/askbot/doc/source/devel/askbot.models.user.rst
new file mode 100644
index 00000000..ac62f9bc
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.models.user.rst
@@ -0,0 +1,10 @@
+.. _askbot.models.user:
+
+:mod:`askbot.models.user`
+==================
+
+.. automodule:: askbot.models.user
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.rst b/askbot/doc/source/devel/askbot.rst
new file mode 100644
index 00000000..df988cdc
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.rst
@@ -0,0 +1,48 @@
+.. _askbot:
+
+:mod:`askbot`
+======
+
+.. automodule:: askbot
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.admin`
+* :ref:`askbot.auth`
+* :ref:`askbot.context`
+* :ref:`askbot.feed`
+* :ref:`askbot.forms`
+* :ref:`askbot.sitemap`
+* :ref:`askbot.tests`
+* :ref:`askbot.urls`
+
+.. _packages::
+
+:mod:`Subpackages`
+-----------
+
+
+* :ref:`askbot.bin`
+* :ref:`askbot.conf`
+* :ref:`askbot.const`
+* :ref:`askbot.deployment`
+* :ref:`askbot.importers`
+* :ref:`askbot.management`
+* :ref:`askbot.middleware`
+* :ref:`askbot.migrations`
+* :ref:`askbot.models`
+* :ref:`askbot.search`
+* :ref:`askbot.skins`
+* :ref:`askbot.templatetags`
+* :ref:`askbot.user_messages`
+* :ref:`askbot.utils`
+* :ref:`askbot.views`
+* :ref:`askbot.deps`
+* :ref:`askbot.setup_templates`
diff --git a/askbot/doc/source/devel/askbot.search.indexer.rst b/askbot/doc/source/devel/askbot.search.indexer.rst
new file mode 100644
index 00000000..dc7cac21
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.search.indexer.rst
@@ -0,0 +1,10 @@
+.. _askbot.search.indexer:
+
+:mod:`askbot.search.indexer`
+=====================
+
+.. automodule:: askbot.search.indexer
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.search.rst b/askbot/doc/source/devel/askbot.search.rst
new file mode 100644
index 00000000..cdfa3f6d
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.search.rst
@@ -0,0 +1,19 @@
+.. _askbot.search:
+
+:mod:`askbot.search`
+=============
+
+.. automodule:: askbot.search
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.search.indexer`
+* :ref:`askbot.search.state_manager`
+
diff --git a/askbot/doc/source/devel/askbot.search.state_manager.rst b/askbot/doc/source/devel/askbot.search.state_manager.rst
new file mode 100644
index 00000000..a315f954
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.search.state_manager.rst
@@ -0,0 +1,10 @@
+.. _askbot.search.state_manager:
+
+:mod:`askbot.search.state_manager`
+===========================
+
+.. automodule:: askbot.search.state_manager
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.setup_templates.manage.rst b/askbot/doc/source/devel/askbot.setup_templates.manage.rst
new file mode 100644
index 00000000..e9c4775e
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.setup_templates.manage.rst
@@ -0,0 +1,10 @@
+.. _askbot.setup_templates.manage:
+
+:mod:`askbot.setup_templates.manage`
+=============================
+
+.. automodule:: askbot.setup_templates.manage
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.setup_templates.rst b/askbot/doc/source/devel/askbot.setup_templates.rst
new file mode 100644
index 00000000..58d0b704
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.setup_templates.rst
@@ -0,0 +1,20 @@
+.. _askbot.setup_templates:
+
+:mod:`askbot.setup_templates`
+======================
+
+.. automodule:: askbot.setup_templates
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.setup_templates.manage`
+* :ref:`askbot.setup_templates.settings`
+* :ref:`askbot.setup_templates.urls`
+
diff --git a/askbot/doc/source/devel/askbot.setup_templates.settings.rst b/askbot/doc/source/devel/askbot.setup_templates.settings.rst
new file mode 100644
index 00000000..230a1474
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.setup_templates.settings.rst
@@ -0,0 +1,10 @@
+.. _askbot.setup_templates.settings:
+
+:mod:`askbot.setup_templates.settings`
+===============================
+
+.. automodule:: askbot.setup_templates.settings
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.setup_templates.urls.rst b/askbot/doc/source/devel/askbot.setup_templates.urls.rst
new file mode 100644
index 00000000..4844502d
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.setup_templates.urls.rst
@@ -0,0 +1,10 @@
+.. _askbot.setup_templates.urls:
+
+:mod:`askbot.setup_templates.urls`
+===========================
+
+.. automodule:: askbot.setup_templates.urls
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.sitemap.rst b/askbot/doc/source/devel/askbot.sitemap.rst
new file mode 100644
index 00000000..373d88c7
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.sitemap.rst
@@ -0,0 +1,10 @@
+.. _askbot.sitemap:
+
+:mod:`askbot.sitemap`
+==============
+
+.. automodule:: askbot.sitemap
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.skins.loaders.rst b/askbot/doc/source/devel/askbot.skins.loaders.rst
new file mode 100644
index 00000000..e55c8472
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.skins.loaders.rst
@@ -0,0 +1,10 @@
+.. _askbot.skins.loaders:
+
+:mod:`askbot.skins.loaders`
+====================
+
+.. automodule:: askbot.skins.loaders
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.skins.rst b/askbot/doc/source/devel/askbot.skins.rst
new file mode 100644
index 00000000..ad2b3368
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.skins.rst
@@ -0,0 +1,19 @@
+.. _askbot.skins:
+
+:mod:`askbot.skins`
+============
+
+.. automodule:: askbot.skins
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.skins.loaders`
+* :ref:`askbot.skins.utils`
+
diff --git a/askbot/doc/source/devel/askbot.skins.utils.rst b/askbot/doc/source/devel/askbot.skins.utils.rst
new file mode 100644
index 00000000..71a989e5
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.skins.utils.rst
@@ -0,0 +1,10 @@
+.. _askbot.skins.utils:
+
+:mod:`askbot.skins.utils`
+==================
+
+.. automodule:: askbot.skins.utils
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.templatetags.extra_filters.rst b/askbot/doc/source/devel/askbot.templatetags.extra_filters.rst
new file mode 100644
index 00000000..75933393
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.templatetags.extra_filters.rst
@@ -0,0 +1,10 @@
+.. _askbot.templatetags.extra_filters:
+
+:mod:`askbot.templatetags.extra_filters`
+=================================
+
+.. automodule:: askbot.templatetags.extra_filters
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.templatetags.extra_tags.rst b/askbot/doc/source/devel/askbot.templatetags.extra_tags.rst
new file mode 100644
index 00000000..c4a2fca3
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.templatetags.extra_tags.rst
@@ -0,0 +1,10 @@
+.. _askbot.templatetags.extra_tags:
+
+:mod:`askbot.templatetags.extra_tags`
+==============================
+
+.. automodule:: askbot.templatetags.extra_tags
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.templatetags.rst b/askbot/doc/source/devel/askbot.templatetags.rst
new file mode 100644
index 00000000..c3887952
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.templatetags.rst
@@ -0,0 +1,20 @@
+.. _askbot.templatetags:
+
+:mod:`askbot.templatetags`
+===================
+
+.. automodule:: askbot.templatetags
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.templatetags.extra_filters`
+* :ref:`askbot.templatetags.extra_tags`
+* :ref:`askbot.templatetags.smart_if`
+
diff --git a/askbot/doc/source/devel/askbot.templatetags.smart_if.rst b/askbot/doc/source/devel/askbot.templatetags.smart_if.rst
new file mode 100644
index 00000000..ea43b691
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.templatetags.smart_if.rst
@@ -0,0 +1,10 @@
+.. _askbot.templatetags.smart_if:
+
+:mod:`askbot.templatetags.smart_if`
+============================
+
+.. automodule:: askbot.templatetags.smart_if
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.tests.rst b/askbot/doc/source/devel/askbot.tests.rst
new file mode 100644
index 00000000..3bf28167
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.tests.rst
@@ -0,0 +1,10 @@
+.. _askbot.tests:
+
+:mod:`askbot.tests`
+============
+
+.. automodule:: askbot.tests
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.urls.rst b/askbot/doc/source/devel/askbot.urls.rst
new file mode 100644
index 00000000..17ebd08d
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.urls.rst
@@ -0,0 +1,10 @@
+.. _askbot.urls:
+
+:mod:`askbot.urls`
+===========
+
+.. automodule:: askbot.urls
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.user_messages.context_processors.rst b/askbot/doc/source/devel/askbot.user_messages.context_processors.rst
new file mode 100644
index 00000000..f6499f2e
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.user_messages.context_processors.rst
@@ -0,0 +1,10 @@
+.. _askbot.user_messages.context_processors:
+
+:mod:`askbot.user_messages.context_processors`
+=======================================
+
+.. automodule:: askbot.user_messages.context_processors
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.user_messages.rst b/askbot/doc/source/devel/askbot.user_messages.rst
new file mode 100644
index 00000000..3426b363
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.user_messages.rst
@@ -0,0 +1,18 @@
+.. _askbot.user_messages:
+
+:mod:`askbot.user_messages`
+====================
+
+.. automodule:: askbot.user_messages
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.user_messages.context_processors`
+
diff --git a/askbot/doc/source/devel/askbot.utils.cache.rst b/askbot/doc/source/devel/askbot.utils.cache.rst
new file mode 100644
index 00000000..583c7ec9
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.cache.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.cache:
+
+:mod:`askbot.utils.cache`
+==================
+
+.. automodule:: askbot.utils.cache
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.colors.rst b/askbot/doc/source/devel/askbot.utils.colors.rst
new file mode 100644
index 00000000..df271c9a
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.colors.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.colors:
+
+:mod:`askbot.utils.colors`
+===================
+
+.. automodule:: askbot.utils.colors
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.decorators.rst b/askbot/doc/source/devel/askbot.utils.decorators.rst
new file mode 100644
index 00000000..7c7468c1
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.decorators.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.decorators:
+
+:mod:`askbot.utils.decorators`
+=======================
+
+.. automodule:: askbot.utils.decorators
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.diff.rst b/askbot/doc/source/devel/askbot.utils.diff.rst
new file mode 100644
index 00000000..0d3fb719
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.diff.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.diff:
+
+:mod:`askbot.utils.diff`
+=================
+
+.. automodule:: askbot.utils.diff
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.email.rst b/askbot/doc/source/devel/askbot.utils.email.rst
new file mode 100644
index 00000000..02ef238c
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.email.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.email:
+
+:mod:`askbot.utils.email`
+==================
+
+.. automodule:: askbot.utils.email
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.forms.rst b/askbot/doc/source/devel/askbot.utils.forms.rst
new file mode 100644
index 00000000..3e24bad4
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.forms.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.forms:
+
+:mod:`askbot.utils.forms`
+==================
+
+.. automodule:: askbot.utils.forms
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.functions.rst b/askbot/doc/source/devel/askbot.utils.functions.rst
new file mode 100644
index 00000000..f1fa1c12
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.functions.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.functions:
+
+:mod:`askbot.utils.functions`
+======================
+
+.. automodule:: askbot.utils.functions
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.html.rst b/askbot/doc/source/devel/askbot.utils.html.rst
new file mode 100644
index 00000000..50ce9854
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.html.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.html:
+
+:mod:`askbot.utils.html`
+=================
+
+.. automodule:: askbot.utils.html
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.lists.rst b/askbot/doc/source/devel/askbot.utils.lists.rst
new file mode 100644
index 00000000..080e696b
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.lists.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.lists:
+
+:mod:`askbot.utils.lists`
+==================
+
+.. automodule:: askbot.utils.lists
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.markup.rst b/askbot/doc/source/devel/askbot.utils.markup.rst
new file mode 100644
index 00000000..fd4627e5
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.markup.rst
@@ -0,0 +1,10 @@
+.. _askbot.utils.markup:
+
+:mod:`askbot.utils.markup`
+===================
+
+.. automodule:: askbot.utils.markup
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.utils.rst b/askbot/doc/source/devel/askbot.utils.rst
new file mode 100644
index 00000000..0ba8ed25
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.utils.rst
@@ -0,0 +1,27 @@
+.. _askbot.utils:
+
+:mod:`askbot.utils`
+============
+
+.. automodule:: askbot.utils
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.utils.cache`
+* :ref:`askbot.utils.colors`
+* :ref:`askbot.utils.decorators`
+* :ref:`askbot.utils.diff`
+* :ref:`askbot.utils.email`
+* :ref:`askbot.utils.forms`
+* :ref:`askbot.utils.functions`
+* :ref:`askbot.utils.html`
+* :ref:`askbot.utils.lists`
+* :ref:`askbot.utils.markup`
+
diff --git a/askbot/doc/source/devel/askbot.views.commands.rst b/askbot/doc/source/devel/askbot.views.commands.rst
new file mode 100644
index 00000000..610c32ae
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.views.commands.rst
@@ -0,0 +1,10 @@
+.. _askbot.views.commands:
+
+:mod:`askbot.views.commands`
+=====================
+
+.. automodule:: askbot.views.commands
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.views.meta.rst b/askbot/doc/source/devel/askbot.views.meta.rst
new file mode 100644
index 00000000..493dbfb4
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.views.meta.rst
@@ -0,0 +1,10 @@
+.. _askbot.views.meta:
+
+:mod:`askbot.views.meta`
+=================
+
+.. automodule:: askbot.views.meta
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.views.readers.rst b/askbot/doc/source/devel/askbot.views.readers.rst
new file mode 100644
index 00000000..f264d1e4
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.views.readers.rst
@@ -0,0 +1,10 @@
+.. _askbot.views.readers:
+
+:mod:`askbot.views.readers`
+====================
+
+.. automodule:: askbot.views.readers
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.views.rst b/askbot/doc/source/devel/askbot.views.rst
new file mode 100644
index 00000000..e47782d5
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.views.rst
@@ -0,0 +1,22 @@
+.. _askbot.views:
+
+:mod:`askbot.views`
+============
+
+.. automodule:: askbot.views
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+.. _modules::
+
+:mod:`Modules`
+-------
+
+
+* :ref:`askbot.views.commands`
+* :ref:`askbot.views.meta`
+* :ref:`askbot.views.readers`
+* :ref:`askbot.views.users`
+* :ref:`askbot.views.writers`
+
diff --git a/askbot/doc/source/devel/askbot.views.users.rst b/askbot/doc/source/devel/askbot.views.users.rst
new file mode 100644
index 00000000..fd2d47bf
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.views.users.rst
@@ -0,0 +1,10 @@
+.. _askbot.views.users:
+
+:mod:`askbot.views.users`
+==================
+
+.. automodule:: askbot.views.users
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/askbot.views.writers.rst b/askbot/doc/source/devel/askbot.views.writers.rst
new file mode 100644
index 00000000..5f643f32
--- /dev/null
+++ b/askbot/doc/source/devel/askbot.views.writers.rst
@@ -0,0 +1,10 @@
+.. _askbot.views.writers:
+
+:mod:`askbot.views.writers`
+====================
+
+.. automodule:: askbot.views.writers
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/askbot/doc/source/devel/models.rst b/askbot/doc/source/devel/models.rst
deleted file mode 100644
index 81ee38f5..00000000
--- a/askbot/doc/source/devel/models.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-.. automodule:: askbot.models
- :members:
- :undoc-members:
diff --git a/askbot/doc/source/devel/modules.rst b/askbot/doc/source/devel/modules.rst
new file mode 100644
index 00000000..71f888f5
--- /dev/null
+++ b/askbot/doc/source/devel/modules.rst
@@ -0,0 +1,33 @@
+.. _Project:
+
+:mod:`Project`
+=======
+
+:mod:`Modules:`
+--------
+
+.. toctree::
+ :maxdepth: 4
+
+ askbot
+ bin
+ commands
+ commands
+ conf
+ const
+ deployment
+ deps
+ importers
+ management
+ management
+ middleware
+ migrations
+ models
+ search
+ setup_templates
+ skins
+ stackexchange
+ templatetags
+ user_messages
+ utils
+ views
diff --git a/askbot/doc/source/devel/views/__init__.rst b/askbot/doc/source/devel/views/__init__.rst
deleted file mode 100644
index bd1f79e5..00000000
--- a/askbot/doc/source/devel/views/__init__.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-.. automodule:: askbot.views
- :members:
- :undoc-members:
diff --git a/askbot/doc/source/devel/views/commands.rst b/askbot/doc/source/devel/views/commands.rst
deleted file mode 100644
index 565ce5c4..00000000
--- a/askbot/doc/source/devel/views/commands.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-.. automodule:: askbot.views.commands
- :members:
- :undoc-members:
diff --git a/askbot/doc/source/devel/views/meta.rst b/askbot/doc/source/devel/views/meta.rst
deleted file mode 100644
index 452dac10..00000000
--- a/askbot/doc/source/devel/views/meta.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-.. automodule:: askbot.views.meta
- :members:
- :undoc-members:
diff --git a/askbot/doc/source/devel/views/readers.rst b/askbot/doc/source/devel/views/readers.rst
deleted file mode 100644
index 63a99eb4..00000000
--- a/askbot/doc/source/devel/views/readers.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-.. automodule:: askbot.views.readers
- :members:
- :undoc-members:
diff --git a/askbot/doc/source/devel/views/users.rst b/askbot/doc/source/devel/views/users.rst
deleted file mode 100644
index e6271404..00000000
--- a/askbot/doc/source/devel/views/users.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-.. automodule:: askbot.views.users
- :members:
- :undoc-members:
-
diff --git a/askbot/doc/source/devel/views/writers.rst b/askbot/doc/source/devel/views/writers.rst
deleted file mode 100644
index 1e5f8a7d..00000000
--- a/askbot/doc/source/devel/views/writers.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-.. automodule:: askbot.views.writers
- :members:
- :undoc-members:
-
diff --git a/askbot/views/__init__.py b/askbot/views/__init__.py
index 05fb0319..578bd1a5 100644
--- a/askbot/views/__init__.py
+++ b/askbot/views/__init__.py
@@ -1,19 +1,5 @@
"""
-.. _askbot.views:
-
-:mod:`askbot.views` - Django views for askbot
-=============================================
-
-This module provides `django view functions`_ necessary for the askbot project.
-
-Askbot views are subdivided into the following sub-modules:
-
-* :ref:`readers <askbot.views.readers>` - views that display but do not modify main textual content (Questions, Answers, Comments and Tag)
-* :ref:`writers <askbot.views.writers>` - generate forms that change main content
-* :ref:`commands <askbot.views.commands>` - most Ajax command processors
-* :ref:`users <askbot.views.users>` - views generating user-specific content and the listing of site users
-* :ref:`meta <askbot.views.meta>` - remaining views (for example - badges, faq, privacy, etc. - may require some cleanup)
-
+:synopsis: django view functions for the askbot project
"""
from askbot.views import readers
from askbot.views import writers
diff --git a/askbot/views/commands.py b/askbot/views/commands.py
index 7151ead1..8d49ec9e 100644
--- a/askbot/views/commands.py
+++ b/askbot/views/commands.py
@@ -1,8 +1,5 @@
"""
-.. _askbot.views.commands:
-
-:mod:`askbot.views.commands` - most ajax processors for askbot
-===============================================================
+:synopsis: most ajax processors for askbot
This module contains most (but not all) processors for Ajax requests.
Not so clear if this subdivision was necessary as separation of Ajax and non-ajax views
diff --git a/askbot/views/meta.py b/askbot/views/meta.py
index aa806096..b4a22932 100644
--- a/askbot/views/meta.py
+++ b/askbot/views/meta.py
@@ -1,8 +1,5 @@
"""
-.. _askbot.views.meta:
-
-:mod:`askbot.views.meta` - "secondary" views for askbot
-===============================================================
+:synopsis: remaining "secondary" views for askbot
This module contains a collection of views displaying all sorts of secondary and mostly static content.
"""
diff --git a/askbot/views/readers.py b/askbot/views/readers.py
index 9bcd435f..592f8bd5 100644
--- a/askbot/views/readers.py
+++ b/askbot/views/readers.py
@@ -1,9 +1,6 @@
# encoding:utf-8
"""
-.. _askbot.views.readers:
-
-:mod:`askbot.views.readers` - read-only views for main textual content
-========================================================================
+:synopsis: views "read-only" for main textual content
By main textual content is meant - text of Questions, Answers and Comments.
The "read-only" requirement here is not 100% strict, as for example "question" view does
diff --git a/askbot/views/users.py b/askbot/views/users.py
index ca71328c..2b20ccc7 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -1,8 +1,5 @@
"""
-.. _askbot.views.users:
-
-:mod:`askbot.views.users` - user-centric views for askbot
-===========================================================
+:synopsis: user-centric views for askbot
This module includes all views that are specific to a given user - his or her profile,
and other views showing profile-related information.
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index 2aa77a2c..03707205 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -1,9 +1,6 @@
# encoding:utf-8
"""
-.. _askbot.views.writers:
-
-:mod:`askbot.views.writers` - views diplaying and processing post forms
-=========================================================================
+:synopsis: views diplaying and processing main content post forms
This module contains views that allow adding, editing, and deleting main textual content.
"""
diff --git a/setup.py b/setup.py
index 377cae1f..7be009ac 100644
--- a/setup.py
+++ b/setup.py
@@ -20,7 +20,7 @@ if sys.platform not in WIN_PLATFORMS:
setup(
name = "askbot",
- version = "0.6.4",
+ version = "0.6.5",
description = 'Question and Answer forum, like StackOverflow, written in python and Django',
packages = find_packages(),
author = 'Evgeny.Fadeev',