[epydoc] # Epydoc section marker (required by ConfigParser)

# The list of objects to document.  Objects can be named using
# dotted names, module filenames, or package directory names.
# Alases for this option include "objects" and "values".
modules: src/com/dtmilano/android/

# The type of output that should be generated.  Should be one
# of: html, text, latex, dvi, ps, pdf.
output: html

# The path to the output directory.  May be relative or absolute.
target: doc/

# An integer indicating how verbose epydoc should be.  The default
# value is 0; negative values will supress warnings and errors;
# positive values will give more verbose output.
verbosity: 1

# A boolean value indicating that Epydoc should show a tracaback
# in case of unexpected error. By default don't show tracebacks
debug: 0

# If True, don't try to use colors or cursor control when doing
# textual output. The default False assumes a rich text prompt
simple-term: 1


### Generation options

# The default markup language for docstrings, for modules that do
# not define __docformat__.  Defaults to epytext.
docformat: epytext

# Whether or not parsing should be used to examine objects.
parse: yes

# Whether or not introspection should be used to examine objects.
introspect: yes

# Don't examine in any way the modules whose dotted name match this
# regular expression pattern.
#exclude

# Don't perform introspection on the modules whose dotted name match this
# regular expression pattern.
#exclude-introspect

# Don't perform parsing on the modules whose dotted name match this
# regular expression pattern.
#exclude-parse

# The format for showing inheritance objects.
# It should be one of: 'grouped', 'listed', 'included'.
inheritance: listed

# Whether or not to inclue private variables.  (Even if included,
# private variables will be hidden by default.)
private: yes

# Whether or not to list each module's imports.
imports: no

# Whether or not to include syntax highlighted source code in
# the output (HTML only).
sourcecode: yes

# Whether or not to includea a page with Epydoc log, containing
# effective option at the time of generation and the reported logs.
include-log: no


### Output options

# The documented project's name.
#name: Example

# The CSS stylesheet for HTML output.  Can be the name of a builtin
# stylesheet, or the name of a file.
css: white

# The documented project's URL.
url: http://dtmilano.com/viewclient

# HTML code for the project link in the navigation bar.  If left
# unspecified, the project link will be generated based on the
# project's name and URL.
#link: <a href="somewhere">My Cool Project</a>

# The "top" page for the documentation.  Can be a URL, the name
# of a module or class, or one of the special names "trees.html",
# "indices.html", or "help.html"
#top: os.path

# An alternative help file.  The named file should contain the
# body of an HTML file; navigation bars will be added to it.
#help: my_helpfile.html

# Whether or not to include a frames-based table of contents.
frames: yes

# Whether each class should be listed in its own section when
# generating LaTeX or PDF output.
separate-classes: no


### API linking options

# Define a new API document.  A new interpreted text role
# will be created
#external-api: epydoc

# Use the records in this file to resolve objects in the API named NAME.
#external-api-file: epydoc:api-objects.txt

# Use this URL prefix to configure the string returned for external API.
#external-api-root: epydoc:http://epydoc.sourceforge.net/api


### Graph options

# The list of graph types that should be automatically included
# in the output.  Graphs are generated using the Graphviz "dot"
# executable.  Graph types include: "classtree", "callgraph",
# "umlclass".  Use "all" to include all graph types
graph: all

# The path to the Graphviz "dot" executable, used to generate
# graphs.
dotpath: /usr/local/bin/dot

# The name of one or more pstat files (generated by the profile
# or hotshot module).  These are used to generate call graphs.
pstat: profile.out

# Specify the font used to generate Graphviz graphs.
# (e.g., helvetica or times).
graph-font: Helvetica

# Specify the font size used to generate Graphviz graphs.
graph-font-size: 10


### Return value options

# The condition upon which Epydoc should exit with a non-zero
# exit status. Possible values are error, warning, docstring_warning
#fail-on: error

