Skip to content

Commit 0fc5dc0

Browse files
committed
Python tutorial
0 parents  commit 0fc5dc0

11 files changed

+2351
-0
lines changed

Makefile

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Makefile for Sphinx documentation
2+
#
3+
4+
# You can set these variables from the command line.
5+
SPHINXOPTS =
6+
SPHINXBUILD = sphinx-build
7+
PAPER =
8+
9+
# Internal variables.
10+
PAPEROPT_a4 = -D latex_paper_size=a4
11+
PAPEROPT_letter = -D latex_paper_size=letter
12+
ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
13+
14+
.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
15+
16+
help:
17+
@echo "Please use \`make <target>' where <target> is one of"
18+
@echo " html to make standalone HTML files"
19+
@echo " dirhtml to make HTML files named index.html in directories"
20+
@echo " pickle to make pickle files"
21+
@echo " json to make JSON files"
22+
@echo " htmlhelp to make HTML files and a HTML help project"
23+
@echo " qthelp to make HTML files and a qthelp project"
24+
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
25+
@echo " changes to make an overview of all changed/added/deprecated items"
26+
@echo " linkcheck to check all external links for integrity"
27+
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
28+
29+
clean:
30+
-rm -rf build/*
31+
32+
html:
33+
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
34+
@echo
35+
@echo "Build finished. The HTML pages are in build/html."
36+
37+
dirhtml:
38+
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) build/dirhtml
39+
@echo
40+
@echo "Build finished. The HTML pages are in build/dirhtml."
41+
42+
pickle:
43+
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle
44+
@echo
45+
@echo "Build finished; now you can process the pickle files."
46+
47+
json:
48+
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) build/json
49+
@echo
50+
@echo "Build finished; now you can process the JSON files."
51+
52+
htmlhelp:
53+
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp
54+
@echo
55+
@echo "Build finished; now you can run HTML Help Workshop with the" \
56+
".hhp project file in build/htmlhelp."
57+
58+
qthelp:
59+
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) build/qthelp
60+
@echo
61+
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
62+
".qhcp project file in build/qthelp, like this:"
63+
@echo "# qcollectiongenerator build/qthelp/Python Tutorial.qhcp"
64+
@echo "To view the help file:"
65+
@echo "# assistant -collectionFile build/qthelp/Python Tutorial.qhc"
66+
67+
latex:
68+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex
69+
@echo
70+
@echo "Build finished; the LaTeX files are in build/latex."
71+
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
72+
"run these through (pdf)latex."
73+
74+
changes:
75+
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes
76+
@echo
77+
@echo "The overview file is in build/changes."
78+
79+
linkcheck:
80+
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck
81+
@echo
82+
@echo "Link check complete; look for any errors in the above output " \
83+
"or in build/linkcheck/output.txt."
84+
85+
doctest:
86+
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) build/doctest
87+
@echo "Testing of doctests in the sources finished, look at the " \
88+
"results in build/doctest/output.txt."

problem.py

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
"""Sphinx extension for adding problem directive.
2+
"""
3+
4+
from sphinx.util.compat import Directive
5+
from docutils import nodes
6+
import sys
7+
8+
9+
class problem(nodes.Element):
10+
pass
11+
12+
13+
class example(nodes.Element):
14+
pass
15+
16+
17+
class ProblemDirective(Directive):
18+
has_content = True
19+
required_arguments = 1
20+
optional_arguments = 0
21+
final_argument_whitespace = True
22+
option_spec = {}
23+
24+
def run(self):
25+
node = self._create_node()
26+
node.document = self.state.document
27+
node.line = self.lineno
28+
29+
inodes, messages = self.state.inline_text(self.arguments[0],
30+
self.lineno)
31+
node.extend(inodes)
32+
33+
self.state.nested_parse(self.content, self.content_offset, node)
34+
return [node] + messages
35+
36+
def _create_node(self):
37+
return problem()
38+
39+
40+
class ExampleDirective(ProblemDirective):
41+
def _create_node(self):
42+
return example()
43+
44+
45+
def process_problem_nodes(app, doctree, docname):
46+
def process(nodecls, label):
47+
index = 1
48+
for node in doctree.traverse(nodecls):
49+
out = [nodes.strong(None, "%s %d: " % (label, index))] + node.children
50+
p = nodes.paragraph()
51+
p.document = node.document
52+
p.line = node.line
53+
p.children = out
54+
node.replace_self(p)
55+
index += 1
56+
process(problem, "Problem")
57+
process(example, "Example")
58+
59+
60+
def setup(app):
61+
app.add_node(problem)
62+
app.add_directive('problem', ProblemDirective)
63+
app.add_node(example)
64+
app.add_directive('example', ExampleDirective)
65+
app.connect('doctree-resolved', process_problem_nodes)

source/conf.py

+199
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
# -*- coding: utf-8 -*-
2+
#
3+
# Python Tutorial documentation build configuration file, created by
4+
# sphinx-quickstart on Sun Sep 20 07:54:56 2009.
5+
#
6+
# This file is execfile()d with the current directory set to its containing dir.
7+
#
8+
# Note that not all possible configuration values are present in this
9+
# autogenerated file.
10+
#
11+
# All configuration values have a default; values that are commented out
12+
# serve to show the default.
13+
14+
import sys, os
15+
16+
# If extensions (or modules to document with autodoc) are in another directory,
17+
# add these directories to sys.path here. If the directory is relative to the
18+
# documentation root, use os.path.abspath to make it absolute, like shown here.
19+
#sys.path.append(os.path.abspath('.'))
20+
21+
# -- General configuration -----------------------------------------------------
22+
23+
# Add any Sphinx extension module names here, as strings. They can be extensions
24+
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
25+
extensions = ['problem']
26+
27+
# Add any paths that contain templates here, relative to this directory.
28+
templates_path = ['_templates']
29+
30+
# The suffix of source filenames.
31+
source_suffix = '.rst'
32+
33+
# The encoding of source files.
34+
#source_encoding = 'utf-8'
35+
36+
# The master toctree document.
37+
master_doc = 'index'
38+
39+
# General information about the project.
40+
project = u'Python Tutorial'
41+
copyright = u'2009, Anand Chitipothu'
42+
43+
# The version info for the project you're documenting, acts as replacement for
44+
# |version| and |release|, also used in various other places throughout the
45+
# built documents.
46+
#
47+
# The short X.Y version.
48+
version = '0.1'
49+
# The full version, including alpha/beta/rc tags.
50+
release = '0.1'
51+
52+
# The language for content autogenerated by Sphinx. Refer to documentation
53+
# for a list of supported languages.
54+
#language = None
55+
56+
# There are two options for replacing |today|: either, you set today to some
57+
# non-false value, then it is used:
58+
#today = ''
59+
# Else, today_fmt is used as the format for a strftime call.
60+
#today_fmt = '%B %d, %Y'
61+
62+
# List of documents that shouldn't be included in the build.
63+
#unused_docs = []
64+
65+
# List of directories, relative to source directory, that shouldn't be searched
66+
# for source files.
67+
exclude_trees = []
68+
69+
# The reST default role (used for this markup: `text`) to use for all documents.
70+
#default_role = None
71+
72+
# If true, '()' will be appended to :func: etc. cross-reference text.
73+
#add_function_parentheses = True
74+
75+
# If true, the current module name will be prepended to all description
76+
# unit titles (such as .. function::).
77+
#add_module_names = True
78+
79+
# If true, sectionauthor and moduleauthor directives will be shown in the
80+
# output. They are ignored by default.
81+
#show_authors = False
82+
83+
# The name of the Pygments (syntax highlighting) style to use.
84+
pygments_style = 'sphinx'
85+
86+
# A list of ignored prefixes for module index sorting.
87+
#modindex_common_prefix = []
88+
89+
90+
# -- Options for HTML output ---------------------------------------------------
91+
92+
# The theme to use for HTML and HTML Help pages. Major themes that come with
93+
# Sphinx are currently 'default' and 'sphinxdoc'.
94+
html_theme = 'default'
95+
96+
# Theme options are theme-specific and customize the look and feel of a theme
97+
# further. For a list of options available for each theme, see the
98+
# documentation.
99+
#html_theme_options = {}
100+
101+
# Add any paths that contain custom themes here, relative to this directory.
102+
#html_theme_path = []
103+
104+
# The name for this set of Sphinx documents. If None, it defaults to
105+
# "<project> v<release> documentation".
106+
#html_title = None
107+
108+
# A shorter title for the navigation bar. Default is the same as html_title.
109+
#html_short_title = None
110+
111+
# The name of an image file (relative to this directory) to place at the top
112+
# of the sidebar.
113+
#html_logo = None
114+
115+
# The name of an image file (within the static path) to use as favicon of the
116+
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
117+
# pixels large.
118+
#html_favicon = None
119+
120+
# Add any paths that contain custom static files (such as style sheets) here,
121+
# relative to this directory. They are copied after the builtin static files,
122+
# so a file named "default.css" will overwrite the builtin "default.css".
123+
html_static_path = ['_static']
124+
125+
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
126+
# using the given strftime format.
127+
#html_last_updated_fmt = '%b %d, %Y'
128+
129+
# If true, SmartyPants will be used to convert quotes and dashes to
130+
# typographically correct entities.
131+
#html_use_smartypants = True
132+
133+
# Custom sidebar templates, maps document names to template names.
134+
#html_sidebars = {}
135+
136+
# Additional templates that should be rendered to pages, maps page names to
137+
# template names.
138+
#html_additional_pages = {}
139+
140+
# If false, no module index is generated.
141+
#html_use_modindex = True
142+
143+
# If false, no index is generated.
144+
#html_use_index = True
145+
146+
# If true, the index is split into individual pages for each letter.
147+
#html_split_index = False
148+
149+
# If true, links to the reST sources are added to the pages.
150+
#html_show_sourcelink = True
151+
152+
# If true, an OpenSearch description file will be output, and all pages will
153+
# contain a <link> tag referring to it. The value of this option must be the
154+
# base URL from which the finished HTML is served.
155+
#html_use_opensearch = ''
156+
157+
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
158+
#html_file_suffix = ''
159+
160+
# Output file base name for HTML help builder.
161+
htmlhelp_basename = 'PythonTutorialdoc'
162+
163+
html_title = "Python Tutorial"
164+
165+
166+
# -- Options for LaTeX output --------------------------------------------------
167+
168+
# The paper size ('letter' or 'a4').
169+
#latex_paper_size = 'letter'
170+
171+
# The font size ('10pt', '11pt' or '12pt').
172+
#latex_font_size = '10pt'
173+
174+
# Grouping the document tree into LaTeX files. List of tuples
175+
# (source start file, target name, title, author, documentclass [howto/manual]).
176+
latex_documents = [
177+
('index', 'PythonTutorial.tex', u'Python Tutorial Documentation',
178+
u'Anand Chitipothu', 'manual'),
179+
]
180+
181+
# The name of an image file (relative to this directory) to place at the top of
182+
# the title page.
183+
#latex_logo = None
184+
185+
# For "manual" documents, if this is true, then toplevel headings are parts,
186+
# not chapters.
187+
#latex_use_parts = False
188+
189+
# Additional stuff for the LaTeX preamble.
190+
#latex_preamble = ''
191+
192+
# Documents to append as an appendix to all manuals.
193+
#latex_appendices = []
194+
195+
# If false, no module index is generated.
196+
#latex_use_modindex = True
197+
198+
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
199+

0 commit comments

Comments
 (0)