diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..73658c9 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,153 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + -rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pagure.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pagure.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/pagure" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pagure" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." diff --git a/doc/_static/site.css b/doc/_static/site.css new file mode 100644 index 0000000..44dc318 --- /dev/null +++ b/doc/_static/site.css @@ -0,0 +1,16 @@ +@import url("cloud.css"); +@import url("http://fonts.googleapis.com/css?family=Comfortaa"); + +.pagure-logo span { + background: url("pagure.png") no-repeat scroll 50% 0 transparent; + display: block; + width: 134px; + height: 64px; + margin-bottom: 10px; + } + +h1.pagure-logo { + font-family: 'Comfortaa', sans-serif; + margin-top: -10px; + margin-bottom: 12px; +} diff --git a/doc/_templates/pagure-logo.html b/doc/_templates/pagure-logo.html new file mode 100644 index 0000000..5a2a0be --- /dev/null +++ b/doc/_templates/pagure-logo.html @@ -0,0 +1 @@ +

PackageDB

diff --git a/doc/api.rst b/doc/api.rst new file mode 100644 index 0000000..12eace6 --- /dev/null +++ b/doc/api.rst @@ -0,0 +1,17 @@ +The PackageDB API +================= + +.. automethod:: pkgdb.api.api_version + + +.. automodule:: pkgdb.api.collections + :members: + +.. automodule:: pkgdb.api.packagers + :members: + +.. automodule:: pkgdb.api.packages + :members: + +.. automodule:: pkgdb.api.acls + :members: diff --git a/doc/conf.py b/doc/conf.py new file mode 100644 index 0000000..52be776 --- /dev/null +++ b/doc/conf.py @@ -0,0 +1,317 @@ +# -*- coding: utf-8 -*- +# +# pagure documentation build configuration file, created by +# sphinx-quickstart on Wed Mar 1 10:30:13 2015. +# +# This file is execfile()d with the current directory set to its containing +# dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import os +import re + +pagurefile = os.path.join( + os.path.dirname(__file__), '..', 'pagure', '__init__.py') + +# Thanks to SQLAlchemy: +# https://github.com/zzzeek/sqlalchemy/blob/master/setup.py#L104 +with open(pagurefile) as stream: + VERSION = re.compile( + r".*__version__ = '(.*?)'", re.S + ).match(stream.read()).group(1) + +# If extensions (or modules to document with autodoc) are in another +# directory, add these directories to sys.path here. If the directory is +# relative to the documentation root, use os.path.abspath to make it +# absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# 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.coverage', 'sphinx.ext.viewcode' +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'pagure' +copyright = u'2015, Red Hat Inc, Pierre-Yves Chibon ' + +# The version info for the project you're documenting, acts as replacement +# for |version| and |release|, also used in various other places throughout +# the built documents. +# +# The short X.Y version. +#version = __version__ +version = VERSION +# The full version, including alpha/beta/rc tags. +#release = '1' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output ---------------------------------------------- + +import cloud_sptheme as csp + +html_style = 'site.css' + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +#html_theme = 'default' +html_theme = "cloud" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +html_theme_options = { + "sidebarwidth": "200px", + "max_width": "900px", + "compact_width": "800px", + "minimal_width": "700px", + + # Style it like Fedora.. + "bodyfont": "Cantarell", + + "highlightcolor": "#79db32", # First Green + + "sidebarbgcolor": "#FEFEFE", + "sidebartrimcolor": "#FEFEFE", + + "sectionbgcolor": "#FEFEFE", + "sectiontrimcolor": "#FEFEFE", + "sectiontextcolor": "#444444", + + "relbarbgcolor": "#FEFEFE", + "relbartextcolor": "#444444", + "relbarlinkcolor": "#444444", + + "bgcolor": "#FEFEFE", + "textcolor": "#444444", + #"linkcolor": "#79db32", # First Green + "linkcolor": "#00009d", + + "headtextcolor": "#444444", + "headlinkcolor": "#444444", + + #"codebgcolor" + #"codetextcolor" + "codetrimcolor": "#79db32", # First Green + + "footerbgcolor": "#FEFEFE", +} +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] +html_theme_path = [csp.get_theme_dir()] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +html_sidebars = { + '**': [ + 'pagure-logo.html', + 'localtoc.html', + 'relations.html', + 'sourcelink.html', + 'searchbox.html', + ] +} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'pagure' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + #'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass +# [howto/manual]). +latex_documents = [ + ( + 'index', 'pagure.tex', u'Pagure Documentation', + u'Pierre-Yves Chibon \\textless{}pingou@pingoured.fr\\textgreater{}', + 'manual' + ), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ( + 'index', 'pagure', u'Pagure Documentation', + [u'Pierre-Yves Chibon '], + 1 + ) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + 'index', 'pagure', u'Pagure Documentation', + u'Pierre-Yves Chibon ', 'pagure', + 'Small git-centric forge', + 'Miscellaneous' + ), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' diff --git a/doc/contributing.rst b/doc/contributing.rst new file mode 100644 index 0000000..bd6a999 --- /dev/null +++ b/doc/contributing.rst @@ -0,0 +1,27 @@ +Contributing +============ + +If you're submitting patches to pagure, please observe the following: + +- Check that your python code is `PEP8-compliant + `_. There is a `pep8 tool + `_ that can automatically check + your source. + +- Check that your code doesn't break the test suite. The test suite can be + run using the ``runtests.sh`` shell script at the top of the sources. + See :doc:`development` for more information about the test suite. + +- If you are adding new code, please write tests for them in ``tests/``, + the ``runtests.sh`` script will help you to see the coverage of your code + in unit-tests. + +- If your change warrants a modification to the docs in ``doc/`` or any + docstrings in ``pagure/`` please make that modification. + +.. note:: You have a doubt, you don't know how to do something, you have an + idea but don't know how to implement it, you just have something bugging + you? + + Come to see us on IRC: ``#fedora-apps`` on irc.freenode.net or directly on + `the project `_. diff --git a/doc/contributors.rst b/doc/contributors.rst new file mode 100644 index 0000000..1e17a51 --- /dev/null +++ b/doc/contributors.rst @@ -0,0 +1,26 @@ +Contributors to pagure +========================= + +Pagure would be nothing without its contributors. + +On April 1, 2015 (release -), the list looks as follow: + +================= =========== +Number of commits Contributor +================= =========== + 1659 Pierre-Yves Chibon + 59 Johan Cwiklinski + 13 Mathieu Bridon + 8 Ralph Bean + 3 Ghost-script + 3 Kushal Khandelwal + 1 Stanislav Ochotnicky + +================= =========== + +This list is generated using + +:: + + git shortlog -s -n -e + diff --git a/doc/deployment.rst b/doc/deployment.rst new file mode 100644 index 0000000..506e517 --- /dev/null +++ b/doc/deployment.rst @@ -0,0 +1,89 @@ +Deployment +========== + +From sources +------------ + +Clone the source:: + + git clone http://git.fedorahosted.org/git/pagure.git + +Install the dependencies listed in the ``requirements.txt`` file. + + +Copy the configuration files:: + + cp pagure.cfg.sample pagure.cfg + +Adjust the configuration files (secret key, database URL, admin group...). +See :doc:`configuration` for detailed information about the configuration. + + +Create the database scheme:: + + PAGURE_CONFIG=/path/to/pagure.cfg python createdb.py + +Create the folder that will receive the different git repositories: + +:: + + mkdir {repos,docs,forks,tickets} + + +Set up the WSGI as described below. + + +From system-wide packages +------------------------- + +Start by install pagure:: + + yum install pagure + +Adjust the configuration files: ``/etc/pagure/pagure.cfg``. +See :doc:`configuration` for detailed information about the configuration. + +Find the file used to create the database:: + + rpm -ql pagure |grep createdb.py + +Create the database scheme:: + + PAGURE_CONFIG=/etc/pagure/pagure.cfg python path/to/createdb.py + +Set up the WSGI as described below. + + +Set-up WSGI +----------- + +Start by installing ``mod_wsgi``:: + + yum install mod_wsgi + + +Then configure apache:: + + sudo vim /etc/httd/conf.d/pagure.conf + +uncomment the content of the file and adjust as desired. + + +Then edit the file ``/usr/share/pagure/pagure.wsgi`` and +adjust as needed. + + +Then restart apache and you should be able to access the website on +http://localhost/pkgdb + + +.. note:: `Flask `_ provides also some documentation + on how to `deploy Flask application with WSGI and apache + `_. + + +For testing +----------- + +See :doc:`development` if you want to run pagure just to test it. + diff --git a/doc/development.rst b/doc/development.rst new file mode 100644 index 0000000..9e7a866 --- /dev/null +++ b/doc/development.rst @@ -0,0 +1,167 @@ +Development +=========== + +Get the sources +--------------- + +Anonymous: + +:: + + git clone git://pagure.io/pagure.git + +Contributors: + +:: + + git clone ssh://git@pagure.io:pagure.git + + +Dependencies +------------ + +The dependencies of pagure are listed in the file ``requirements.txt`` +at the top level of the sources. + + +.. note:: working in a `virtualenv `_ + is tricky due to the dependency on `pygit2 `_ + and thus on `libgit2 `_ + but the pygit2 `documentation has a solution for this + `_. + + +Run pagure for development +------------------------- +Adjust the configuration file (secret key, database URL, admin group...) +See :doc:`configuration` for more detailed information about the +configuration. + + +Create the database scheme:: + + ./createdb + +Create the folder that will receive the different git repositories: + +:: + + mkdir {repos,docs,forks,tickets} + + +Run the server: + +:: + + ./runserver + +To get some profiling information you can also run it as: + +:: + ./runserver.py --profile + + +You should be able to access the server at http://localhost:5000 + + +Every time you save a file, the project will be automatically restarted +so you can see your change immediatly. + + + +Coding standards +---------------- + +We are trying to make the code `PEP8-compliant +`_. There is a `pep8 tool +`_ that can automatically check +your source. + + +We are also inspecting the code using `pylint +`_ and aim of course for a 10/10 code +(but it is an assymptotic goal). + +.. note:: both pep8 and pylint are available in Fedora via yum: + + :: + + yum install python-pep8 pylint + + +Send patch +---------- + +The easiest way to work on pagure is to make your own branch in git, make +your changes to this branch, commit whenever you want, rebase on master, +whenever you need and when you are done, send the patch either by email, +via the trac or a pull-request (using git or github). + + +The workflow would therefore be something like: + +:: + + git branch + git checkout + + git commit file1 file2 + + git commit file3 file4 + git checkout master + git pull + git checkout + git rebase master + git format-patch -2 + +This will create two patch files that you can send by email to submit in a ticket +on pagure, by email or after forking the project on pagure by submitting a +pull-request (in which case the last step above ``git format-patch -2`` is not +needed. + + +Unit-tests +---------- + +Pagure has a number of unit-tests. + + +We aim at having a full (100%) coverage of the whole code (including the +Flask application) and of course a smart coverage as in we want to check +that the functions work the way we want but also that they fail when we +expect it and the way we expect it. + + +Tests checking that function are failing when/how we want are as important +as tests checking they work the way they are intended to. + +``runtests.sh``, located at the top of the sources, helps to run the +unit-tests of the project with coverage information using `python-nose +`_. + + +.. note:: You can specify additional arguments to the nose command used + in this script by just passing arguments to the script. + + For example you can specify the ``-x`` / ``--stop`` argument: + `Stop running tests after the first error or failure` by just doing + + :: + + ./runtests.sh --stop + + +Each unit-tests files (located under ``tests/``) can be called +by alone, allowing easier debugging of the tests. For example: + +:: + + python tests/test_pragure_lib.py + + +.. note:: In order to have coverage information you might have to install + ``python-coverage`` + + :: + + yum install python-coverage diff --git a/doc/index.rst b/doc/index.rst new file mode 100644 index 0000000..931137a --- /dev/null +++ b/doc/index.rst @@ -0,0 +1,41 @@ +Pagure +======= + +Pagure is a light-weight git-centered forge based on pygit2. + +Currently, Pagure offers a decent web-interface for git repositories, a simple +ticket system and supports open collaboration by offering the possibility to +create new projects, fork existing ones and create/merge pull-requests across +or within projects. + + +Resources: + +- `Home page `_ +- `Git repository `_ +- `Github mirror `_ +- `Discussion mailing-list + `_ + + +Contents: + +.. toctree:: + :maxdepth: 2 + + development + contributing + deployment + configuration + contributors + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/doc/requirements.txt b/doc/requirements.txt new file mode 100644 index 0000000..c577a66 --- /dev/null +++ b/doc/requirements.txt @@ -0,0 +1,2 @@ +sphinx +cloud_sptheme