Skip to content

Commit 4bcfec2

Browse files
committed
Full documentation of yajl-py using sphinx.
1 parent 0d1b42a commit 4bcfec2

File tree

11 files changed

+599
-56
lines changed

11 files changed

+599
-56
lines changed

doc/Makefile

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

doc/source/conf.py

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
# -*- coding: utf-8 -*-
2+
#
3+
# Yajl-Py documentation build configuration file, created by
4+
# sphinx-quickstart on Wed May 26 00:07:17 2010.
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 = [os.path.abspath('../../')] + sys.path
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 = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage']
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'Yajl-Py'
41+
copyright = u'2010, Hatem Nassrat'
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 = '1.0.10'
49+
# The full version, including alpha/beta/rc tags.
50+
release = '1.0.10'
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+
# html_theme = 'sphinxdoc'
96+
97+
# Theme options are theme-specific and customize the look and feel of a theme
98+
# further. For a list of options available for each theme, see the
99+
# documentation.
100+
#html_theme_options = {}
101+
html_theme_options = {
102+
"stickysidebar": "true",
103+
}
104+
105+
# Add any paths that contain custom themes here, relative to this directory.
106+
#html_theme_path = []
107+
108+
# The name for this set of Sphinx documents. If None, it defaults to
109+
# "<project> v<release> documentation".
110+
#html_title = None
111+
112+
# A shorter title for the navigation bar. Default is the same as html_title.
113+
#html_short_title = None
114+
115+
# The name of an image file (relative to this directory) to place at the top
116+
# of the sidebar.
117+
#html_logo = None
118+
119+
# The name of an image file (within the static path) to use as favicon of the
120+
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
121+
# pixels large.
122+
#html_favicon = None
123+
124+
# Add any paths that contain custom static files (such as style sheets) here,
125+
# relative to this directory. They are copied after the builtin static files,
126+
# so a file named "default.css" will overwrite the builtin "default.css".
127+
html_static_path = ['_static']
128+
129+
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
130+
# using the given strftime format.
131+
#html_last_updated_fmt = '%b %d, %Y'
132+
133+
# If true, SmartyPants will be used to convert quotes and dashes to
134+
# typographically correct entities.
135+
#html_use_smartypants = True
136+
137+
# Custom sidebar templates, maps document names to template names.
138+
#html_sidebars = {}
139+
140+
# Additional templates that should be rendered to pages, maps page names to
141+
# template names.
142+
#html_additional_pages = {}
143+
144+
# If false, no module index is generated.
145+
#html_use_modindex = True
146+
147+
# If false, no index is generated.
148+
#html_use_index = True
149+
150+
# If true, the index is split into individual pages for each letter.
151+
#html_split_index = False
152+
153+
# If true, links to the reST sources are added to the pages.
154+
#html_show_sourcelink = True
155+
156+
# If true, an OpenSearch description file will be output, and all pages will
157+
# contain a <link> tag referring to it. The value of this option must be the
158+
# base URL from which the finished HTML is served.
159+
#html_use_opensearch = ''
160+
161+
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
162+
#html_file_suffix = ''
163+
164+
# Output file base name for HTML help builder.
165+
htmlhelp_basename = 'Yajl-Pydoc'
166+
167+
168+
# -- Options for LaTeX output --------------------------------------------------
169+
170+
# The paper size ('letter' or 'a4').
171+
#latex_paper_size = 'letter'
172+
173+
# The font size ('10pt', '11pt' or '12pt').
174+
#latex_font_size = '10pt'
175+
176+
# Grouping the document tree into LaTeX files. List of tuples
177+
# (source start file, target name, title, author, documentclass [howto/manual]).
178+
latex_documents = [
179+
('index', 'Yajl-Py.tex', u'Yajl-Py Documentation',
180+
u'Hatem Nassrat', 'manual'),
181+
]
182+
183+
# The name of an image file (relative to this directory) to place at the top of
184+
# the title page.
185+
#latex_logo = None
186+
187+
# For "manual" documents, if this is true, then toplevel headings are parts,
188+
# not chapters.
189+
#latex_use_parts = False
190+
191+
# Additional stuff for the LaTeX preamble.
192+
#latex_preamble = ''
193+
194+
# Documents to append as an appendix to all manuals.
195+
#latex_appendices = []
196+
197+
# If false, no module index is generated.
198+
#latex_use_modindex = True
199+
200+
# Custom Config
201+
autoclass_content = "both"
202+
autodoc_member_order = "groupwise"
203+
modindex_common_prefix = ['yajl']
204+
205+
def setup(app):
206+
def autodoc_skip_member(app, what, name, obj, skip, options):
207+
# show private class members
208+
if (what == "class" and
209+
name.startswith('_') and
210+
not name.startswith('__')):
211+
skip = False
212+
return skip
213+
app.connect('autodoc-skip-member', autodoc_skip_member)
214+

doc/source/index.rst

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
Welcome to Yajl-Py's documentation!
2+
===================================
3+
4+
`yajl-py <http://github.com/pykler/yajl-py>`_ is a pure python wrapper
5+
to the `yajl <http://lloyd.github.com/yajl/>`_ C Library.
6+
7+
Description
8+
-----------
9+
10+
A library that allows sax-like parsing of JSON. It is a thin wrapper
11+
around the yajl C library that aims to enable all yajl's features. It
12+
uses ctypes to interface with yajl's routines, and thus allows for using
13+
any yajl routine even if it isn't explicitly wrapped in yajl-py. yajl-py
14+
aims to be as pythonic as possible and still be consistent with the
15+
general style of yajl itself. This can be seen by comparing
16+
:ref:`yajl-py examples <yajl-py-examples>` with the
17+
`examples of yajl <http://lloyd.github.com/yajl/>`_ itself.
18+
19+
Installation
20+
------------
21+
22+
To install the latest version of yajl-py, run::
23+
24+
easy_install yajl-py
25+
26+
For the development version you may visit
27+
`yajl-py at github <http://github.com/pykler/yajl-py>`_.
28+
29+
Alternatives
30+
------------
31+
32+
Another python library that wraps yajl for python is
33+
`py-yajl <http://github.com/rtyler/py-yajl/>`_. py-yajl creates an
34+
alternative to the built in json.loads and json.dumps using yajl. On the
35+
other hand, yajl-py wraps only yajl's functionality giving the user the
36+
flexibility of defining their callbacks and thus benifiting from yajl's
37+
stream parsing.
38+
39+
.. _yajl-py-examples:
40+
41+
Versioning
42+
----------
43+
44+
To maintain compatibility, yajl-py version numbering follows yajl's version
45+
numbers, where releases of yajl-py are fully compatible with the same numbered
46+
releases of yajl. This document reflects yajl-py version |release|.
47+
48+
Examples
49+
--------
50+
51+
`Examples of how to use yajl-py
52+
<http://github.com/pykler/yajl-py/tree/master/examples/>`_ quickly show
53+
how much slimmer the python versions are than their C counterparts. Each
54+
of the examples in that directory perform the same actions as the C
55+
versions. The code is layed out in a similar fashion to the C code such
56+
that one can follow the logic.
57+
58+
Quick Example
59+
.............
60+
61+
.. write some quick example here
62+
63+
Documentaion
64+
------------
65+
66+
yajl-py internally is divided in a similar way as yajl's C api. However,
67+
for flexibility all the classes, methods and structures implemented in
68+
each of the submodules is directly available under the main yajl module.
69+
Therefore using ``yajl.yajl_parse.YajlParser`` is the same as using
70+
``yajl.YajlParser`` and similarly ``yajl.yajl_gen.YajlGen`` is the same as
71+
using ``yajl.YajlGen``. The shared object (dll in windows, and dylib for
72+
bsd/MacOSX) is accessible as ``yajl.yajl_common.yajl`` or simply
73+
``yajl.yajl``. Generally, you will not need to interact with the shared
74+
object directly, if this is the case then it is a short-comming of
75+
yajl-py.
76+
77+
The following links lead to documentation generated from the yajl-py
78+
docstrings:
79+
80+
.. toctree::
81+
82+
yajl/index
83+
84+
Indices and tables
85+
==================
86+
87+
* :ref:`genindex`
88+
* :ref:`modindex`
89+
* :ref:`search`
90+

0 commit comments

Comments
 (0)