Commits

Jeffrey Goettsch  committed f891778

Added Sphinx docs in place of epydoc docs.

  • Participants
  • Parent commits aba2c31

Comments (0)

Files changed (73)

 syntax: regexp
 (^|/)\..*
+^docs/_build/.*
 ^MANIFEST
 ^pushnotify/tests/nmakeys.py
 ^pushnotify/tests/prowlkeys.py

File CHANGELOG.rst

 Changelog
----------
+=========
 
 For a full history of changes see the commit history:
 
 * **license-change:** this and future versions are now licensed under
   the GNU GPL v3.
 
-* now uses the Requests package instead of urllib2
+* now uses the Requests instead of urllib2
 
 version 0.5
 
+Copying
+=======
+
+py-pushnotify is licensed under the GNU General Public License:
+
 .. _gpl:
 
 GNU General Public License
-==========================
+--------------------------
 
 ::
 
 Installation
-------------
+============
 
 If you have already downloaded pushnotify, run the following
 command inside this directory::
 
     $ pip install pushnotify
 
-Either method will install pushnotify into your current environment.
+Either method will install pushnotify into your current environment.
-==========
-pushnotify
-==========
-
 pushnotify is a package for sending push notifications. It currently
 supports Android devices running Notify My Android and Pushover, and iOS
 devices running Pushover and Prowl.
 for more details about these applications.
 
 Development
------------
+===========
 
 All development for pushnotify takes place on bitbucket:
 

File docs/Makefile

+# 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 <target>' where <target> 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/py-pushnotify.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/py-pushnotify.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/py-pushnotify"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/py-pushnotify"
+	@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."

File docs/api-objects.txt

-pushnotify	pushnotify-module.html
-pushnotify.__package__	pushnotify-module.html#__package__
-pushnotify.logger	pushnotify-module.html#logger
-pushnotify.get_client	pushnotify-module.html#get_client
-pushnotify._version	pushnotify._version-module.html
-pushnotify._version.__package__	pushnotify._version-module.html#__package__
-pushnotify.abstract	pushnotify.abstract-module.html
-pushnotify.abstract.__package__	pushnotify.abstract-module.html#__package__
-pushnotify.exceptions	pushnotify.exceptions-module.html
-pushnotify.exceptions.__package__	pushnotify.exceptions-module.html#__package__
-pushnotify.nma	pushnotify.nma-module.html
-pushnotify.nma.PUBLIC_API_URL	pushnotify.nma-module.html#PUBLIC_API_URL
-pushnotify.nma.DESC_LIMIT	pushnotify.nma-module.html#DESC_LIMIT
-pushnotify.nma.__package__	pushnotify.nma-module.html#__package__
-pushnotify.nma.NOTIFY_URL	pushnotify.nma-module.html#NOTIFY_URL
-pushnotify.nma.VERIFY_URL	pushnotify.nma-module.html#VERIFY_URL
-pushnotify.prowl	pushnotify.prowl-module.html
-pushnotify.prowl.PUBLIC_API_URL	pushnotify.prowl-module.html#PUBLIC_API_URL
-pushnotify.prowl.RETRIEVE_TOKEN_URL	pushnotify.prowl-module.html#RETRIEVE_TOKEN_URL
-pushnotify.prowl.DESC_LIMIT	pushnotify.prowl-module.html#DESC_LIMIT
-pushnotify.prowl.__package__	pushnotify.prowl-module.html#__package__
-pushnotify.prowl.NOTIFY_URL	pushnotify.prowl-module.html#NOTIFY_URL
-pushnotify.prowl.VERIFY_URL	pushnotify.prowl-module.html#VERIFY_URL
-pushnotify.prowl.RETRIEVE_APIKEY_URL	pushnotify.prowl-module.html#RETRIEVE_APIKEY_URL
-pushnotify.pushover	pushnotify.pushover-module.html
-pushnotify.pushover.PUBLIC_API_URL	pushnotify.pushover-module.html#PUBLIC_API_URL
-pushnotify.pushover.DESC_LIMIT	pushnotify.pushover-module.html#DESC_LIMIT
-pushnotify.pushover.__package__	pushnotify.pushover-module.html#__package__
-pushnotify.pushover.NOTIFY_URL	pushnotify.pushover-module.html#NOTIFY_URL
-pushnotify.pushover.VERIFY_URL	pushnotify.pushover-module.html#VERIFY_URL
-pushnotify.tests	pushnotify.tests-module.html
-pushnotify.tests.__package__	pushnotify.tests-module.html#__package__
-pushnotify.tests.tests	pushnotify.tests.tests-module.html
-pushnotify.tests.tests.get_client	pushnotify-module.html#get_client
-pushnotify.tests.tests.__package__	pushnotify.tests.tests-module.html#__package__
-pushnotify.tests.tests.PUSHOVER_DEVICE	pushnotify.tests.tests-module.html#PUSHOVER_DEVICE
-exceptions.AssertionError	exceptions.AssertionError-class.html
-exceptions.AssertionError.__init__	exceptions.AssertionError-class.html#__init__
-exceptions.AssertionError.__new__	exceptions.AssertionError-class.html#__new__
-pushnotify.abstract.AbstractClient	pushnotify.abstract.AbstractClient-class.html
-pushnotify.abstract.AbstractClient.del_key	pushnotify.abstract.AbstractClient-class.html#del_key
-pushnotify.abstract.AbstractClient._post	pushnotify.abstract.AbstractClient-class.html#_post
-pushnotify.abstract.AbstractClient.notify	pushnotify.abstract.AbstractClient-class.html#notify
-pushnotify.abstract.AbstractClient.verify_user	pushnotify.abstract.AbstractClient-class.html#verify_user
-pushnotify.abstract.AbstractClient.__init__	pushnotify.abstract.AbstractClient-class.html#__init__
-pushnotify.abstract.AbstractClient.add_key	pushnotify.abstract.AbstractClient-class.html#add_key
-pushnotify.abstract.AbstractClient.retrieve_token	pushnotify.abstract.AbstractClient-class.html#retrieve_token
-pushnotify.abstract.AbstractClient.retrieve_apikey	pushnotify.abstract.AbstractClient-class.html#retrieve_apikey
-pushnotify.abstract.AbstractClient._get	pushnotify.abstract.AbstractClient-class.html#_get
-pushnotify.abstract.AbstractClient.verify_device	pushnotify.abstract.AbstractClient-class.html#verify_device
-pushnotify.exceptions.ApiKeyError	pushnotify.exceptions.ApiKeyError-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.FormatError	pushnotify.exceptions.FormatError-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.PermissionDenied	pushnotify.exceptions.PermissionDenied-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.ProviderKeyError	pushnotify.exceptions.ProviderKeyError-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.PushNotifyError	pushnotify.exceptions.PushNotifyError-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.RateLimitExceeded	pushnotify.exceptions.RateLimitExceeded-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.ServerError	pushnotify.exceptions.ServerError-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.UnknownError	pushnotify.exceptions.UnknownError-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.exceptions.UnrecognizedResponseError	pushnotify.exceptions.UnrecognizedResponseError-class.html
-pushnotify.exceptions.PushNotifyError.__init__	pushnotify.exceptions.PushNotifyError-class.html#__init__
-pushnotify.nma.Client	pushnotify.nma.Client-class.html
-pushnotify.abstract.AbstractClient.del_key	pushnotify.abstract.AbstractClient-class.html#del_key
-pushnotify.nma.Client._parse_response	pushnotify.nma.Client-class.html#_parse_response
-pushnotify.nma.Client._raise_exception	pushnotify.nma.Client-class.html#_raise_exception
-pushnotify.abstract.AbstractClient._post	pushnotify.abstract.AbstractClient-class.html#_post
-pushnotify.nma.Client.notify	pushnotify.nma.Client-class.html#notify
-pushnotify.nma.Client.verify_user	pushnotify.nma.Client-class.html#verify_user
-pushnotify.nma.Client.__init__	pushnotify.nma.Client-class.html#__init__
-pushnotify.abstract.AbstractClient.add_key	pushnotify.abstract.AbstractClient-class.html#add_key
-pushnotify.nma.Client.verify	pushnotify.nma.Client-class.html#verify
-pushnotify.abstract.AbstractClient.retrieve_token	pushnotify.abstract.AbstractClient-class.html#retrieve_token
-pushnotify.abstract.AbstractClient.retrieve_apikey	pushnotify.abstract.AbstractClient-class.html#retrieve_apikey
-pushnotify.abstract.AbstractClient._get	pushnotify.abstract.AbstractClient-class.html#_get
-pushnotify.abstract.AbstractClient.verify_device	pushnotify.abstract.AbstractClient-class.html#verify_device
-pushnotify.prowl.Client	pushnotify.prowl.Client-class.html
-pushnotify.abstract.AbstractClient.del_key	pushnotify.abstract.AbstractClient-class.html#del_key
-pushnotify.prowl.Client._parse_response	pushnotify.prowl.Client-class.html#_parse_response
-pushnotify.prowl.Client._raise_exception	pushnotify.prowl.Client-class.html#_raise_exception
-pushnotify.abstract.AbstractClient._post	pushnotify.abstract.AbstractClient-class.html#_post
-pushnotify.prowl.Client.notify	pushnotify.prowl.Client-class.html#notify
-pushnotify.prowl.Client.verify_user	pushnotify.prowl.Client-class.html#verify_user
-pushnotify.prowl.Client.__init__	pushnotify.prowl.Client-class.html#__init__
-pushnotify.abstract.AbstractClient.add_key	pushnotify.abstract.AbstractClient-class.html#add_key
-pushnotify.prowl.Client.retrieve_token	pushnotify.prowl.Client-class.html#retrieve_token
-pushnotify.prowl.Client.retrieve_apikey	pushnotify.prowl.Client-class.html#retrieve_apikey
-pushnotify.abstract.AbstractClient._get	pushnotify.abstract.AbstractClient-class.html#_get
-pushnotify.abstract.AbstractClient.verify_device	pushnotify.abstract.AbstractClient-class.html#verify_device
-pushnotify.pushover.Client	pushnotify.pushover.Client-class.html
-pushnotify.abstract.AbstractClient.del_key	pushnotify.abstract.AbstractClient-class.html#del_key
-pushnotify.pushover.Client._parse_response	pushnotify.pushover.Client-class.html#_parse_response
-pushnotify.pushover.Client._raise_exception	pushnotify.pushover.Client-class.html#_raise_exception
-pushnotify.abstract.AbstractClient._post	pushnotify.abstract.AbstractClient-class.html#_post
-pushnotify.pushover.Client.notify	pushnotify.pushover.Client-class.html#notify
-pushnotify.pushover.Client.verify_user	pushnotify.pushover.Client-class.html#verify_user
-pushnotify.pushover.Client.__init__	pushnotify.pushover.Client-class.html#__init__
-pushnotify.abstract.AbstractClient.add_key	pushnotify.abstract.AbstractClient-class.html#add_key
-pushnotify.abstract.AbstractClient.retrieve_token	pushnotify.abstract.AbstractClient-class.html#retrieve_token
-pushnotify.abstract.AbstractClient.retrieve_apikey	pushnotify.abstract.AbstractClient-class.html#retrieve_apikey
-pushnotify.abstract.AbstractClient._get	pushnotify.abstract.AbstractClient-class.html#_get
-pushnotify.pushover.Client.verify_device	pushnotify.pushover.Client-class.html#verify_device
-pushnotify.tests.tests.AbstractClientTest	pushnotify.tests.tests.AbstractClientTest-class.html
-pushnotify.tests.tests.AbstractClientTest.setUp	pushnotify.tests.tests.AbstractClientTest-class.html#setUp
-pushnotify.tests.tests.AbstractClientTest.test_add_key_device_key	pushnotify.tests.tests.AbstractClientTest-class.html#test_add_key_device_key
-pushnotify.tests.tests.AbstractClientTest.test_del_key_device_key	pushnotify.tests.tests.AbstractClientTest-class.html#test_del_key_device_key
-pushnotify.tests.tests.AbstractClientTest.test_del_key_apikey	pushnotify.tests.tests.AbstractClientTest-class.html#test_del_key_apikey
-unittest.case.TestCase.failureException	exceptions.AssertionError-class.html
-pushnotify.tests.tests.AbstractClientTest.test_add_key_apikey	pushnotify.tests.tests.AbstractClientTest-class.html#test_add_key_apikey
-pushnotify.tests.tests.NMATest	pushnotify.tests.tests.NMATest-class.html
-pushnotify.tests.tests.NMATest.test_notify_invalid_apikey	pushnotify.tests.tests.NMATest-class.html#test_notify_invalid_apikey
-pushnotify.tests.tests.NMATest.test_notify_invalid_argument_lengths	pushnotify.tests.tests.NMATest-class.html#test_notify_invalid_argument_lengths
-pushnotify.tests.tests.NMATest.test_notify_valid	pushnotify.tests.tests.NMATest-class.html#test_notify_valid
-pushnotify.tests.tests.NMATest.setUp	pushnotify.tests.tests.NMATest-class.html#setUp
-pushnotify.tests.tests.NMATest.test_verify_user_invalid_apikey	pushnotify.tests.tests.NMATest-class.html#test_verify_user_invalid_apikey
-pushnotify.tests.tests.NMATest.test_notify_valid_split	pushnotify.tests.tests.NMATest-class.html#test_notify_valid_split
-pushnotify.tests.tests.NMATest.test_verify_user_valid	pushnotify.tests.tests.NMATest-class.html#test_verify_user_valid
-unittest.case.TestCase.failureException	exceptions.AssertionError-class.html
-pushnotify.tests.tests.ProwlTest	pushnotify.tests.tests.ProwlTest-class.html
-pushnotify.tests.tests.ProwlTest.test_notify_invalid_apikey	pushnotify.tests.tests.ProwlTest-class.html#test_notify_invalid_apikey
-pushnotify.tests.tests.ProwlTest.test_retrieve_apikey_valid	pushnotify.tests.tests.ProwlTest-class.html#test_retrieve_apikey_valid
-pushnotify.tests.tests.ProwlTest.test_notify_invalid_argument_lengths	pushnotify.tests.tests.ProwlTest-class.html#test_notify_invalid_argument_lengths
-pushnotify.tests.tests.ProwlTest.test_verify_user_invalid	pushnotify.tests.tests.ProwlTest-class.html#test_verify_user_invalid
-pushnotify.tests.tests.ProwlTest.test_retrieve_token_invalid	pushnotify.tests.tests.ProwlTest-class.html#test_retrieve_token_invalid
-pushnotify.tests.tests.ProwlTest.test_notify_valid	pushnotify.tests.tests.ProwlTest-class.html#test_notify_valid
-pushnotify.tests.tests.ProwlTest.test_retrieve_apikey_invalid_reg_token	pushnotify.tests.tests.ProwlTest-class.html#test_retrieve_apikey_invalid_reg_token
-pushnotify.tests.tests.ProwlTest.setUp	pushnotify.tests.tests.ProwlTest-class.html#setUp
-pushnotify.tests.tests.ProwlTest.test_retrieve_apikey_invalid_developerkey	pushnotify.tests.tests.ProwlTest-class.html#test_retrieve_apikey_invalid_developerkey
-pushnotify.tests.tests.ProwlTest.test_notify_valid_split	pushnotify.tests.tests.ProwlTest-class.html#test_notify_valid_split
-pushnotify.tests.tests.ProwlTest.test_verify_user_valid	pushnotify.tests.tests.ProwlTest-class.html#test_verify_user_valid
-unittest.case.TestCase.failureException	exceptions.AssertionError-class.html
-pushnotify.tests.tests.ProwlTest.test_retrieve_token_valid	pushnotify.tests.tests.ProwlTest-class.html#test_retrieve_token_valid
-pushnotify.tests.tests.PushnotifyTest	pushnotify.tests.tests.PushnotifyTest-class.html
-pushnotify.tests.tests.PushnotifyTest.test_get_client_pushover	pushnotify.tests.tests.PushnotifyTest-class.html#test_get_client_pushover
-pushnotify.tests.tests.PushnotifyTest.test_get_client_prowl	pushnotify.tests.tests.PushnotifyTest-class.html#test_get_client_prowl
-pushnotify.tests.tests.PushnotifyTest.setUp	pushnotify.tests.tests.PushnotifyTest-class.html#setUp
-unittest.case.TestCase.failureException	exceptions.AssertionError-class.html
-pushnotify.tests.tests.PushnotifyTest.test_get_client_nma	pushnotify.tests.tests.PushnotifyTest-class.html#test_get_client_nma
-pushnotify.tests.tests.PushoverTest	pushnotify.tests.tests.PushoverTest-class.html
-pushnotify.tests.tests.PushoverTest.test_notify_invalid_developerkey	pushnotify.tests.tests.PushoverTest-class.html#test_notify_invalid_developerkey
-pushnotify.tests.tests.PushoverTest.test_notify_invalid_apikey	pushnotify.tests.tests.PushoverTest-class.html#test_notify_invalid_apikey
-pushnotify.tests.tests.PushoverTest.test_verify_device_valid	pushnotify.tests.tests.PushoverTest-class.html#test_verify_device_valid
-pushnotify.tests.tests.PushoverTest.test_notify_invalid_argument_lengths	pushnotify.tests.tests.PushoverTest-class.html#test_notify_invalid_argument_lengths
-pushnotify.tests.tests.PushoverTest.test_verify_user_invalid	pushnotify.tests.tests.PushoverTest-class.html#test_verify_user_invalid
-pushnotify.tests.tests.PushoverTest.test_notify_valid	pushnotify.tests.tests.PushoverTest-class.html#test_notify_valid
-pushnotify.tests.tests.PushoverTest.test_notify_invalid_device_key	pushnotify.tests.tests.PushoverTest-class.html#test_notify_invalid_device_key
-pushnotify.tests.tests.PushoverTest.setUp	pushnotify.tests.tests.PushoverTest-class.html#setUp
-pushnotify.tests.tests.PushoverTest.test_verify_device_invalid_apikey	pushnotify.tests.tests.PushoverTest-class.html#test_verify_device_invalid_apikey
-pushnotify.tests.tests.PushoverTest.test_notify_valid_split	pushnotify.tests.tests.PushoverTest-class.html#test_notify_valid_split
-pushnotify.tests.tests.PushoverTest.test_verify_user_valid	pushnotify.tests.tests.PushoverTest-class.html#test_verify_user_valid
-unittest.case.TestCase.failureException	exceptions.AssertionError-class.html
-pushnotify.tests.tests.PushoverTest.test_verify_device_invalid	pushnotify.tests.tests.PushoverTest-class.html#test_verify_device_invalid

File docs/changelog.rst

+.. include:: ../CHANGELOG.rst

File docs/class-tree.html

-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Class Hierarchy</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pushnotify-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            ><a class="navbar" target="_top" href="https://bitbucket.org/jgoettsch/py-pushnotify/">pushnotify</a></th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">&nbsp;</td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
-    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
-        <tr><td align="right"><span class="options"
-            >[<a href="frames.html" target="_top">frames</a
-            >]&nbsp;|&nbsp;<a href="class-tree.html"
-            target="_top">no&nbsp;frames</a>]</span></td></tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<center><b>
- [ <a href="module-tree.html">Module Hierarchy</a>
- | <a href="class-tree.html">Class Hierarchy</a> ]
-</b></center><br />
-<h1 class="epydoc">Class Hierarchy</h1>
-<ul class="nomargin-top">
-    <li> <strong class="uidlink">object</strong>:
-      <em class="summary">The most base type</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pushnotify.abstract.AbstractClient-class.html">pushnotify.abstract.AbstractClient</a></strong>:
-      <em class="summary">Abstract client for sending push notifications.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pushnotify.pushover.Client-class.html">pushnotify.pushover.Client</a></strong>:
-      <em class="summary">Client for sending push notifications to Android and iOS devices
-with the Pushover application installed.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.prowl.Client-class.html">pushnotify.prowl.Client</a></strong>:
-      <em class="summary">Client for sending push notificiations to iOS devices with
-the Prowl application installed.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.nma.Client-class.html">pushnotify.nma.Client</a></strong>:
-      <em class="summary">Client for sending push notificiations to Android devices with
-the Notify My Android (NMA) application installed.</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink">exceptions.BaseException</strong>:
-      <em class="summary">Common base class for all exceptions</em>
-    <ul>
-    <li> <strong class="uidlink">exceptions.Exception</strong>:
-      <em class="summary">Common base class for all non-exit exceptions.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.PushNotifyError-class.html">pushnotify.exceptions.PushNotifyError</a></strong>:
-      <em class="summary">Base exception for all pushnotify errors.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.ApiKeyError-class.html">pushnotify.exceptions.ApiKeyError</a></strong>:
-      <em class="summary">Raised when a provided API key is invalid</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.FormatError-class.html">pushnotify.exceptions.FormatError</a></strong>:
-      <em class="summary">Raised when a request is not in the expected format.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.PermissionDenied-class.html">pushnotify.exceptions.PermissionDenied</a></strong>:
-      <em class="summary">Raised when a request had not been approved.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.ProviderKeyError-class.html">pushnotify.exceptions.ProviderKeyError</a></strong>:
-      <em class="summary">Raised when a provided Provider key is invalid.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.RateLimitExceeded-class.html">pushnotify.exceptions.RateLimitExceeded</a></strong>:
-      <em class="summary">Raised when too many requests are submitted in too small a time
-frame.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.ServerError-class.html">pushnotify.exceptions.ServerError</a></strong>:
-      <em class="summary">Raised when the notification server experiences an internal error.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.UnknownError-class.html">pushnotify.exceptions.UnknownError</a></strong>:
-      <em class="summary">Raised when the notification server returns an unknown error.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.exceptions.UnrecognizedResponseError-class.html">pushnotify.exceptions.UnrecognizedResponseError</a></strong>:
-      <em class="summary">Raised when the notification server returns an unrecognized
-response.</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink">exceptions.StandardError</strong>:
-      <em class="summary">Base class for all standard Python exceptions that do not represent
-interpreter exiting.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="exceptions.AssertionError-class.html">exceptions.AssertionError</a></strong>:
-      <em class="summary">Assertion failed.</em>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink">unittest.case.TestCase</strong>:
-      <em class="summary">A class whose instances are single test cases.</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="pushnotify.tests.tests.AbstractClientTest-class.html">pushnotify.tests.tests.AbstractClientTest</a></strong>:
-      <em class="summary">Test the AbstractClient class.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.tests.tests.NMATest-class.html">pushnotify.tests.tests.NMATest</a></strong>:
-      <em class="summary">Test the Notify my Android client.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.tests.tests.ProwlTest-class.html">pushnotify.tests.tests.ProwlTest</a></strong>:
-      <em class="summary">Test the Prowl client.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.tests.tests.PushnotifyTest-class.html">pushnotify.tests.tests.PushnotifyTest</a></strong>
-    </li>
-    <li> <strong class="uidlink"><a href="pushnotify.tests.tests.PushoverTest-class.html">pushnotify.tests.tests.PushoverTest</a></strong>:
-      <em class="summary">Test the Pushover client.</em>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-</ul>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pushnotify-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            ><a class="navbar" target="_top" href="https://bitbucket.org/jgoettsch/py-pushnotify/">pushnotify</a></th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Feb  3 00:24:04 2013
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>

File docs/conf.py

+# -*- coding: utf-8 -*-
+#
+# py-pushnotify documentation build configuration file, created by
+# sphinx-quickstart on Sun Feb 17 12:21:07 2013.
+#
+# 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 sys, os
+
+# 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.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'py-pushnotify'
+copyright = u'2013, Jeffrey Goettsch'
+
+# 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 = '0.5.1'
+# The full version, including alpha/beta/rc tags.
+release = '0.5.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 ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+# 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 = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> 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 = {}
+
+# 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 <link> 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 = 'py-pushnotifydoc'
+
+
+# -- 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', 'py-pushnotify.tex', u'py-pushnotify Documentation',
+   u'Jeffrey Goettsch', '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', 'py-pushnotify', u'py-pushnotify Documentation',
+     [u'Jeffrey Goettsch'], 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', 'py-pushnotify', u'py-pushnotify Documentation',
+   u'Jeffrey Goettsch', 'py-pushnotify', 'One line description of project.',
+   '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'

File docs/copying.rst

+.. include:: ../COPYING.rst

File docs/crarr.png

Removed
Old image

File docs/development.rst

+Development
+===========
+
+All development for pushnotify takes place on bitbucket:
+
+* https://bitbucket.org/jgoettsch/py-pushnotify/
+
+You can follow this project on Twitter:
+
+* https://twitter.com/pypushnotify
+
+To get started you can do the following::
+
+    $ hg clone https://bitbucket.org/jgoettsch/py-pushnotify/
+    $ cd py-pushnotify
+    $ pip install -r requirements_dev.txt
+    $ python setup.py develop
+
+If you discover a bug, please create an issue ticket:
+
+* https://bitbucket.org/jgoettsch/py-pushnotify/issues/new
+
+To run the test suite, you will have to create three modules:
+
+* pushnotify/tests/nmakeys.py:
+
+    This file must contain two global variables: API_KEYS and
+    DEVELOPER_KEY. API_KEYS is a list containing at least one valid API
+    key as a string. DEVELOPER_KEY is a string containing a valid
+    developer key.
+    
+* pushnotify/tests/prowlkeys.py:
+
+    This file must contain two global variables: API_KEYS and
+    PROVIDER_KEY. API_KEYS is a list containing at least one valid API
+    key as a string. PROVIDER_KEY is a string containing a valid
+    provider key. REG_TOKEN is a valid registration token that has
+    already been validated through the retrieve_token/retrieve_apikey
+    process.
+
+* pushnotify/tests/pushoverkeys.py:
+
+    This file must contain two global variables: TOKEN and USER.
+    TOKEN is a string containing a valid API token. USER is a
+    dictionary whose keys are strings containing valid user identifiers.
+    The key values are lists containing strings, where each string
+    contains a valid device identifier for the given API token. There
+    must be one API token, and it must have one device indentifier.

File docs/epydoc.css

-
-
-/* Epydoc CSS Stylesheet
- *
- * This stylesheet can be used to customize the appearance of epydoc's
- * HTML output.
- *
- */
-
-/* Default Colors & Styles
- *   - Set the default foreground & background color with 'body'; and 
- *     link colors with 'a:link' and 'a:visited'.
- *   - Use bold for decision list terms.
- *   - The heading styles defined here are used for headings *within*
- *     docstring descriptions.  All headings used by epydoc itself use
- *     either class='epydoc' or class='toc' (CSS styles for both
- *     defined below).
- */
-body                        { background: #ffffff; color: #000000; }
-p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
-a:link                      { color: #0000ff; }
-a:visited                   { color: #204080; }
-dt                          { font-weight: bold; }
-h1                          { font-size: +140%; font-style: italic;
-                              font-weight: bold; }
-h2                          { font-size: +125%; font-style: italic;
-                              font-weight: bold; }
-h3                          { font-size: +110%; font-style: italic;
-                              font-weight: normal; }
-code                        { font-size: 100%; }
-/* N.B.: class, not pseudoclass */
-a.link                      { font-family: monospace; }
- 
-/* Page Header & Footer
- *   - The standard page header consists of a navigation bar (with
- *     pointers to standard pages such as 'home' and 'trees'); a
- *     breadcrumbs list, which can be used to navigate to containing
- *     classes or modules; options links, to show/hide private
- *     variables and to show/hide frames; and a page title (using
- *     <h1>).  The page title may be followed by a link to the
- *     corresponding source code (using 'span.codelink').
- *   - The footer consists of a navigation bar, a timestamp, and a
- *     pointer to epydoc's homepage.
- */ 
-h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
-h2.epydoc                   { font-size: +130%; font-weight: bold; }
-h3.epydoc                   { font-size: +115%; font-weight: bold;
-                              margin-top: 0.2em; }
-td h3.epydoc                { font-size: +115%; font-weight: bold;
-                              margin-bottom: 0; }
-table.navbar                { background: #a0c0ff; color: #000000;
-                              border: 2px groove #c0d0d0; }
-table.navbar table          { color: #000000; }
-th.navbar-select            { background: #70b0ff;
-                              color: #000000; } 
-table.navbar a              { text-decoration: none; }  
-table.navbar a:link         { color: #0000ff; }
-table.navbar a:visited      { color: #204080; }
-span.breadcrumbs            { font-size: 85%; font-weight: bold; }
-span.options                { font-size: 70%; }
-span.codelink               { font-size: 85%; }
-td.footer                   { font-size: 85%; }
-
-/* Table Headers
- *   - Each summary table and details section begins with a 'header'
- *     row.  This row contains a section title (marked by
- *     'span.table-header') as well as a show/hide private link
- *     (marked by 'span.options', defined above).
- *   - Summary tables that contain user-defined groups mark those
- *     groups using 'group header' rows.
- */
-td.table-header             { background: #70b0ff; color: #000000;
-                              border: 1px solid #608090; }
-td.table-header table       { color: #000000; }
-td.table-header table a:link      { color: #0000ff; }
-td.table-header table a:visited   { color: #204080; }
-span.table-header           { font-size: 120%; font-weight: bold; }
-th.group-header             { background: #c0e0f8; color: #000000;
-                              text-align: left; font-style: italic; 
-                              font-size: 115%; 
-                              border: 1px solid #608090; }
-
-/* Summary Tables (functions, variables, etc)
- *   - Each object is described by a single row of the table with
- *     two cells.  The left cell gives the object's type, and is
- *     marked with 'code.summary-type'.  The right cell gives the
- *     object's name and a summary description.
- *   - CSS styles for the table's header and group headers are
- *     defined above, under 'Table Headers'
- */
-table.summary               { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090;
-                              margin-bottom: 0.5em; }
-td.summary                  { border: 1px solid #608090; }
-code.summary-type           { font-size: 85%; }
-table.summary a:link        { color: #0000ff; }
-table.summary a:visited     { color: #204080; }
-
-
-/* Details Tables (functions, variables, etc)
- *   - Each object is described in its own div.
- *   - A single-row summary table w/ table-header is used as
- *     a header for each details section (CSS style for table-header
- *     is defined above, under 'Table Headers').
- */
-table.details               { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090;
-                              margin: .2em 0 0 0; }
-table.details table         { color: #000000; }
-table.details a:link        { color: #0000ff; }
-table.details a:visited     { color: #204080; }
-
-/* Fields */
-dl.fields                   { margin-left: 2em; margin-top: 1em;
-                              margin-bottom: 1em; }
-dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
-dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
-div.fields                  { margin-left: 2em; }
-div.fields p                { margin-bottom: 0.5em; }
-
-/* Index tables (identifier index, term index, etc)
- *   - link-index is used for indices containing lists of links
- *     (namely, the identifier index & term index).
- *   - index-where is used in link indices for the text indicating
- *     the container/source for each link.
- *   - metadata-index is used for indices containing metadata
- *     extracted from fields (namely, the bug index & todo index).
- */
-table.link-index            { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090; }
-td.link-index               { border-width: 0px; }
-table.link-index a:link     { color: #0000ff; }
-table.link-index a:visited  { color: #204080; }
-span.index-where            { font-size: 70%; }
-table.metadata-index        { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090; 
-                              margin: .2em 0 0 0; }
-td.metadata-index           { border-width: 1px; border-style: solid; }
-table.metadata-index a:link { color: #0000ff; }
-table.metadata-index a:visited  { color: #204080; }
-
-/* Function signatures
- *   - sig* is used for the signature in the details section.
- *   - .summary-sig* is used for the signature in the summary 
- *     table, and when listing property accessor functions.
- * */
-.sig-name                   { color: #006080; }
-.sig-arg                    { color: #008060; }
-.sig-default                { color: #602000; }
-.summary-sig                { font-family: monospace; }
-.summary-sig-name           { color: #006080; font-weight: bold; }
-table.summary a.summary-sig-name:link
-                            { color: #006080; font-weight: bold; }
-table.summary a.summary-sig-name:visited
-                            { color: #006080; font-weight: bold; }
-.summary-sig-arg            { color: #006040; }
-.summary-sig-default        { color: #501800; }
-
-/* Subclass list
- */
-ul.subclass-list { display: inline; }
-ul.subclass-list li { display: inline; }
-
-/* To render variables, classes etc. like functions */
-table.summary .summary-name { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-table.summary
-     a.summary-name:link    { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-table.summary
-    a.summary-name:visited  { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-
-/* Variable values
- *   - In the 'variable details' sections, each varaible's value is
- *     listed in a 'pre.variable' box.  The width of this box is
- *     restricted to 80 chars; if the value's repr is longer than
- *     this it will be wrapped, using a backslash marked with
- *     class 'variable-linewrap'.  If the value's repr is longer
- *     than 3 lines, the rest will be ellided; and an ellipsis
- *     marker ('...' marked with 'variable-ellipsis') will be used.
- *   - If the value is a string, its quote marks will be marked
- *     with 'variable-quote'.
- *   - If the variable is a regexp, it is syntax-highlighted using
- *     the re* CSS classes.
- */
-pre.variable                { padding: .5em; margin: 0;
-                              background: #dce4ec; color: #000000;
-                              border: 1px solid #708890; }
-.variable-linewrap          { color: #604000; font-weight: bold; }
-.variable-ellipsis          { color: #604000; font-weight: bold; }
-.variable-quote             { color: #604000; font-weight: bold; }
-.variable-group             { color: #008000; font-weight: bold; }
-.variable-op                { color: #604000; font-weight: bold; }
-.variable-string            { color: #006030; }
-.variable-unknown           { color: #a00000; font-weight: bold; }
-.re                         { color: #000000; }
-.re-char                    { color: #006030; }
-.re-op                      { color: #600000; }
-.re-group                   { color: #003060; }
-.re-ref                     { color: #404040; }
-
-/* Base tree
- *   - Used by class pages to display the base class hierarchy.
- */
-pre.base-tree               { font-size: 80%; margin: 0; }
-
-/* Frames-based table of contents headers
- *   - Consists of two frames: one for selecting modules; and
- *     the other listing the contents of the selected module.
- *   - h1.toc is used for each frame's heading
- *   - h2.toc is used for subheadings within each frame.
- */
-h1.toc                      { text-align: center; font-size: 105%;
-                              margin: 0; font-weight: bold;
-                              padding: 0; }
-h2.toc                      { font-size: 100%; font-weight: bold; 
-                              margin: 0.5em 0 0 -0.3em; }
-
-/* Syntax Highlighting for Source Code
- *   - doctest examples are displayed in a 'pre.py-doctest' block.
- *     If the example is in a details table entry, then it will use
- *     the colors specified by the 'table pre.py-doctest' line.
- *   - Source code listings are displayed in a 'pre.py-src' block.
- *     Each line is marked with 'span.py-line' (used to draw a line
- *     down the left margin, separating the code from the line
- *     numbers).  Line numbers are displayed with 'span.py-lineno'.
- *     The expand/collapse block toggle button is displayed with
- *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
- *     modify the font size of the text.)
- *   - If a source code page is opened with an anchor, then the
- *     corresponding code block will be highlighted.  The code
- *     block's header is highlighted with 'py-highlight-hdr'; and
- *     the code block's body is highlighted with 'py-highlight'.
- *   - The remaining py-* classes are used to perform syntax
- *     highlighting (py-string for string literals, py-name for names,
- *     etc.)
- */
-pre.py-doctest              { padding: .5em; margin: 1em;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #708890; }
-table pre.py-doctest        { background: #dce4ec;
-                              color: #000000; }
-pre.py-src                  { border: 2px solid #000000; 
-                              background: #f0f0f0; color: #000000; }
-.py-line                    { border-left: 2px solid #000000; 
-                              margin-left: .2em; padding-left: .4em; }
-.py-lineno                  { font-style: italic; font-size: 90%;
-                              padding-left: .5em; }
-a.py-toggle                 { text-decoration: none; }
-div.py-highlight-hdr        { border-top: 2px solid #000000;
-                              border-bottom: 2px solid #000000;
-                              background: #d8e8e8; }
-div.py-highlight            { border-bottom: 2px solid #000000;
-                              background: #d0e0e0; }
-.py-prompt                  { color: #005050; font-weight: bold;}
-.py-more                    { color: #005050; font-weight: bold;}
-.py-string                  { color: #006030; }
-.py-comment                 { color: #003060; }
-.py-keyword                 { color: #600000; }
-.py-output                  { color: #404040; }
-.py-name                    { color: #000050; }
-.py-name:link               { color: #000050 !important; }
-.py-name:visited            { color: #000050 !important; }
-.py-number                  { color: #005000; }
-.py-defname                 { color: #000060; font-weight: bold; }
-.py-def-name                { color: #000060; font-weight: bold; }
-.py-base-class              { color: #000060; }
-.py-param                   { color: #000060; }
-.py-docstring               { color: #006030; }
-.py-decorator               { color: #804020; }
-/* Use this if you don't want links to names underlined: */
-/*a.py-name                   { text-decoration: none; }*/
-
-/* Graphs & Diagrams
- *   - These CSS styles are used for graphs & diagrams generated using
- *     Graphviz dot.  'img.graph-without-title' is used for bare
- *     diagrams (to remove the border created by making the image
- *     clickable).
- */
-img.graph-without-title     { border: none; }
-img.graph-with-title        { border: 1px solid #000000; }
-span.graph-title            { font-weight: bold; }
-span.graph-caption          { }
-
-/* General-purpose classes
- *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
- *     is not indented, but whose subsequent lines are.
- *   - The 'nomargin-top' class is used to remove the top margin (e.g.
- *     from lists).  The 'nomargin' class is used to remove both the
- *     top and bottom margin (but not the left or right margin --
- *     for lists, that would cause the bullets to disappear.)
- */
-p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
-                              margin: 0; }
-.nomargin-top               { margin-top: 0; }
-.nomargin                   { margin-top: 0; margin-bottom: 0; }
-
-/* HTML Log */
-div.log-block               { padding: 0; margin: .5em 0 .5em 0;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #000000; }
-div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #ffb0b0; color: #000000;
-                              border: 1px solid #000000; }
-div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #ffffb0; color: #000000;
-                              border: 1px solid #000000; }
-div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #b0ffb0; color: #000000;
-                              border: 1px solid #000000; }
-h2.log-hdr                  { background: #70b0ff; color: #000000;
-                              margin: 0; padding: 0em 0.5em 0em 0.5em;
-                              border-bottom: 1px solid #000000; font-size: 110%; }
-p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
-tr.opt-changed              { color: #000000; font-weight: bold; }
-tr.opt-default              { color: #606060; }
-pre.log                     { margin: 0; padding: 0; padding-left: 1em; }

File docs/epydoc.js

-function toggle_private() {
-        // Search for any private/public links on this page.  Store
-        // their old text in "cmd," so we will know what action to
-        // take; and change their text to the opposite action.
-        var cmd = "?";
-        var elts = document.getElementsByTagName("a");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "privatelink") {
-            cmd = elts[i].innerHTML;
-            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
-                                    "hide&nbsp;private":"show&nbsp;private");
-          }
-        }
-        // Update all DIVs containing private objects.
-        var elts = document.getElementsByTagName("div");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
-          }
-          else if (elts[i].className == "public") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
-          }
-        }
-        // Update all table rows containing private objects.  Note, we
-        // use "" instead of "block" becaue IE & firefox disagree on what
-        // this should be (block vs table-row), and "" just gives the
-        // default for both browsers.
-        var elts = document.getElementsByTagName("tr");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
-          }
-        }
-        // Update all list items containing private objects.
-        var elts = document.getElementsByTagName("li");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
-                                        "none":"");
-          }
-        }
-        // Update all list items containing private objects.
-        var elts = document.getElementsByTagName("ul");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
-          }
-        }
-        // Set a cookie to remember the current option.
-        document.cookie = "EpydocPrivate="+cmd;
-      }
-function show_private() {
-        var elts = document.getElementsByTagName("a");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "privatelink") {
-            cmd = elts[i].innerHTML;
-            if (cmd && cmd.substr(0,4)=="show")
-                toggle_private();
-          }
-        }
-      }
-function getCookie(name) {
-        var dc = document.cookie;
-        var prefix = name + "=";
-        var begin = dc.indexOf("; " + prefix);
-        if (begin == -1) {
-          begin = dc.indexOf(prefix);
-          if (begin != 0) return null;
-        } else
-        { begin += 2; }
-        var end = document.cookie.indexOf(";", begin);
-        if (end == -1)
-        { end = dc.length; }
-        return unescape(dc.substring(begin + prefix.length, end));
-      }
-function setFrame(url1, url2) {
-          parent.frames[1].location.href = url1;
-          parent.frames[2].location.href = url2;
-      }
-function checkCookie() {
-        var cmd=getCookie("EpydocPrivate");
-        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
-            toggle_private();
-      }
-function toggleCallGraph(id) {
-        var elt = document.getElementById(id);
-        if (elt.style.display == "none")
-            elt.style.display = "block";
-        else
-            elt.style.display = "none";
-      }
-function expand(id) {
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.style.display = "block";
-  var elt = document.getElementById(id+"-expanded-linenums");
-  if (elt) elt.style.display = "block";
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
-  var elt = document.getElementById(id+"-collapsed-linenums");
-  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
-  var elt = document.getElementById(id+"-toggle");
-  if (elt) { elt.innerHTML = "-"; }
-}
-
-function collapse(id) {
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.style.display = "none";
-  var elt = document.getElementById(id+"-expanded-linenums");
-  if (elt) elt.style.display = "none";
-  var elt = document.getElementById(id+"-collapsed-linenums");
-  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
-  var elt = document.getElementById(id+"-toggle");
-  if (elt) { elt.innerHTML = "+"; }
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) {
-    elt.style.display = "block";
-    
-    var indent = elt.getAttribute("indent");
-    var pad = elt.getAttribute("pad");
-    var s = "<tt class='py-lineno'>";
-    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
-    s += "</tt>";
-    s += "&nbsp;&nbsp;<tt class='py-line'>";
-    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
-    s += "<a href='#' onclick='expand(\"" + id;
-    s += "\");return false'>...</a></tt><br />";
-    elt.innerHTML = s;
-  }
-}
-
-function toggle(id) {
-  elt = document.getElementById(id+"-toggle");
-  if (elt.innerHTML == "-")
-      collapse(id); 
-  else
-      expand(id);
-  return false;
-}
-
-function highlight(id) {
-  var elt = document.getElementById(id+"-def");
-  if (elt) elt.className = "py-highlight-hdr";
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.className = "py-highlight";
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) elt.className = "py-highlight";
-}
-
-function num_lines(s) {
-  var n = 1;
-  var pos = s.indexOf("\n");
-  while ( pos > 0) {
-    n += 1;
-    pos = s.indexOf("\n", pos+1);
-  }
-  return n;
-}
-
-// Collapse all blocks that mave more than `min_lines` lines.
-function collapse_all(min_lines) {
-  var elts = document.getElementsByTagName("div");
-  for (var i=0; i<elts.length; i++) {
-    var elt = elts[i];
-    var split = elt.id.indexOf("-");
-    if (split > 0)
-      if (elt.id.substring(split, elt.id.length) == "-expanded")
-        if (num_lines(elt.innerHTML) > min_lines)
-          collapse(elt.id.substring(0, split));
-  }
-}
-
-function expandto(href) {
-  var start = href.indexOf("#")+1;
-  if (start != 0 && start != href.length) {
-    if (href.substring(start, href.length) != "-") {
-      collapse_all(4);
-      pos = href.indexOf(".", start);
-      while (pos != -1) {
-        var id = href.substring(start, pos);
-        expand(id);
-        pos = href.indexOf(".", pos+1);
-      }
-      var id = href.substring(start, href.length);
-      expand(id);
-      highlight(id);
-    }
-  }
-}
-
-function kill_doclink(id) {
-  var parent = document.getElementById(id);
-  parent.removeChild(parent.childNodes.item(0));
-}
-function auto_kill_doclink(ev) {
-  if (!ev) var ev = window.event;
-  if (!this.contains(ev.toElement)) {
-    var parent = document.getElementById(this.parentID);
-    parent.removeChild(parent.childNodes.item(0));
-  }
-}
-
-function doclink(id, name, targets_id) {
-  var elt = document.getElementById(id);
-
-  // If we already opened the box, then destroy it.
-  // (This case should never occur, but leave it in just in case.)
-  if (elt.childNodes.length > 1) {
-    elt.removeChild(elt.childNodes.item(0));
-  }
-  else {
-    // The outer box: relative + inline positioning.
-    var box1 = document.createElement("div");
-    box1.style.position = "relative";
-    box1.style.display = "inline";
-    box1.style.top = 0;
-    box1.style.left = 0;
-  
-    // A shadow for fun
-    var shadow = document.createElement("div");
-    shadow.style.position = "absolute";
-    shadow.style.left = "-1.3em";
-    shadow.style.top = "-1.3em";
-    shadow.style.background = "#404040";
-    
-    // The inner box: absolute positioning.
-    var box2 = document.createElement("div");
-    box2.style.position = "relative";
-    box2.style.border = "1px solid #a0a0a0";
-    box2.style.left = "-.2em";
-    box2.style.top = "-.2em";
-    box2.style.background = "white";
-    box2.style.padding = ".3em .4em .3em .4em";
-    box2.style.fontStyle = "normal";
-    box2.onmouseout=auto_kill_doclink;
-    box2.parentID = id;
-
-    // Get the targets
-    var targets_elt = document.getElementById(targets_id);
-    var targets = targets_elt.getAttribute("targets");
-    var links = "";
-    target_list = targets.split(",");
-    for (var i=0; i<target_list.length; i++) {
-        var target = target_list[i].split("=");
-        links += "<li><a href='" + target[1] + 
-               "' style='text-decoration:none'>" +
-               target[0] + "</a></li>";
-    }
-  
-    // Put it all together.
-    elt.insertBefore(box1, elt.childNodes.item(0));
-    //box1.appendChild(box2);
-    box1.appendChild(shadow);
-    shadow.appendChild(box2);
-    box2.innerHTML =
-        "Which <b>"+name+"</b> do you want to see documentation for?" +
-        "<ul style='margin-bottom: 0;'>" +
-        links + 
-        "<li><a href='#' style='text-decoration:none' " +
-        "onclick='kill_doclink(\""+id+"\");return false;'>"+
-        "<i>None of the above</i></a></li></ul>";
-  }
-  return false;
-}
-
-function get_anchor() {
-          var href = location.href;
-          var start = href.indexOf("#")+1;
-          if ((start != 0) && (start != href.length))
-              return href.substring(start, href.length);
-      }
-function redirect_url(dottedName) {
-          // Scan through each element of the "pages" list, and check
-          // if "name" matches with any of them.
-          for (var i=0; i<pages.length; i++) {
-
-              // Each page has the form "<pagename>-m" or "<pagename>-c";
-              // extract the <pagename> portion & compare it to dottedName.
-              var pagename = pages[i].substring(0, pages[i].length-2);
-              if (pagename == dottedName.substring(0,pagename.length)) {
-
-                  // We've found a page that matches `dottedName`;
-                  // construct its URL, using leftover `dottedName`
-                  // content to form an anchor.
-                  var pagetype = pages[i].charAt(pages[i].length-1);
-                  var url = pagename + ((pagetype=="m")?"-module.html":
-                                                        "-class.html");
-                  if (dottedName.length > pagename.length)
-                      url += "#" + dottedName.substring(pagename.length+1,
-                                                        dottedName.length);
-                  return url;
-              }
-          }
-      }

File docs/exceptions.AssertionError-class.html

-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>exceptions.AssertionError</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pushnotify-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            ><a class="navbar" target="_top" href="https://bitbucket.org/jgoettsch/py-pushnotify/">pushnotify</a></th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        exceptions ::
-        AssertionError ::
-        Class&nbsp;AssertionError
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
-    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
-        <tr><td align="right"><span class="options"
-            >[<a href="frames.html" target="_top">frames</a
-            >]&nbsp;|&nbsp;<a href="exceptions.AssertionError-class.html"
-            target="_top">no&nbsp;frames</a>]</span></td></tr>
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class AssertionError</h1><p class="nomargin-top"></p>
-<pre class="base-tree">
-   object --+            
-            |            
-BaseException --+        
-                |        
-        Exception --+    
-                    |    
-        StandardError --+
-                        |
-                       <strong class="uidshort">AssertionError</strong>
-</pre>
-
-<hr />
-<pre class="literalblock">
-Assertion failed.
-
-</pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Instance Methods</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-InstanceMethods"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">&nbsp;</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="exceptions.AssertionError-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"><pre class="literalblock">
-a new object with type S, a subtype of T
-
-</pre></span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="exceptions.AssertionError-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
-        <span class="summary-sig-arg">S</span>,
-        <span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>BaseException</code></b>:
-      <code>__delattr__</code>,
-      <code>__getattribute__</code>,
-      <code>__getitem__</code>,
-      <code>__getslice__</code>,
-      <code>__reduce__</code>,
-      <code>__repr__</code>,
-      <code>__setattr__</code>,
-      <code>__setstate__</code>,
-      <code>__str__</code>,
-      <code>__unicode__</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Properties</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-Properties"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>BaseException</code></b>:
-      <code>args</code>,
-      <code>message</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td colspan="2" class="table-header">
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-      <tr valign="top">
-        <td align="left"><span class="table-header">Method Details</span></td>
-        <td align="right" valign="top"
-         ><span class="options">[<a href="#section-MethodDetails"
-         class="privatelink" onclick="toggle_private();"
-         >hide private</a>]</span></td>
-      </tr>
-    </table>
-  </td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    >&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-x.__init__(...) initializes x; see help(type(x)) for signature
-
-</pre>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
-        <span class="sig-arg">S</span>,
-        <span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    >&nbsp;
-    </td>
-  </tr></table>
-  
-  <pre class="literalblock">
-
-
-</pre>
-  <dl class="fields">
-    <dt>Returns: <pre class="literalblock">
-a new object with type S, a subtype of T
-
-</pre></dt>
-    <dt>Overrides:
-        object.__new__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pushnotify-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            ><a class="navbar" target="_top" href="https://bitbucket.org/jgoettsch/py-pushnotify/">pushnotify</a></th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Feb  3 00:24:04 2013
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>

File docs/frames.html

-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-          "DTD/xhtml1-frameset.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title> pushnotify </title>
-</head>
-<frameset cols="20%,80%">
-  <frameset rows="30%,70%">
-    <frame src="toc.html" name="moduleListFrame"
-           id="moduleListFrame" />
-    <frame src="toc-everything.html" name="moduleFrame"
-           id="moduleFrame" />
-  </frameset>
-  <frame src="pushnotify-module.html" name="mainFrame" id="mainFrame" />
-</frameset>
-</html>

File docs/help.html

-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Help</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="pushnotify-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Tree link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Index link -->
-      <th>&nbsp;&nbsp;&nbsp;<a
-        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Help link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            ><a class="navbar" target="_top" href="https://bitbucket.org/jgoettsch/py-pushnotify/">pushnotify</a></th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">&nbsp;</td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
-    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
-        <tr><td align="right"><span class="options"
-            >[<a href="frames.html" target="_top">frames</a
-            >]&nbsp;|&nbsp;<a href="help.html"
-            target="_top">no&nbsp;frames</a>]</span></td></tr>
-      </table>
-    </td>
-  </tr>
-</table>
-
-<h1 class="epydoc"> API Documentation </h1>
-
-<p> This document contains the API (Application Programming Interface)
-documentation for pushnotify.  Documentation for the Python
-objects defined by the project is divided into separate pages for each
-package, module, and class.  The API documentation also includes two
-pages containing information about the project as a whole: a trees
-page, and an index page.  </p>
-
-<h2> Object Documentation </h2>
-
-  <p>Each <strong>Package Documentation</strong> page contains: </p>
-  <ul>
-    <li> A description of the package. </li>
-    <li> A list of the modules and sub-packages contained by the
-    package.  </li>
-    <li> A summary of the classes defined by the package. </li>
-    <li> A summary of the functions defined by the package. </li>
-    <li> A summary of the variables defined by the package. </li>
-    <li> A detailed description of each function defined by the
-    package. </li>
-    <li> A detailed description of each variable defined by the
-    package. </li>
-  </ul>
-  
-  <p>Each <strong>Module Documentation</strong> page contains:</p>
-  <ul>
-    <li> A description of the module. </li>
-    <li> A summary of the classes defined by the module. </li>
-    <li> A summary of the functions defined by the module. </li>
-    <li> A summary of the variables defined by the module. </li>
-    <li> A detailed description of each function defined by the
-    module. </li>
-    <li> A detailed description of each variable defined by the
-    module. </li>
-  </ul>
-  
-  <p>Each <strong>Class Documentation</strong> page contains: </p>
-  <ul>
-    <li> A class inheritance diagram. </li>
-    <li> A list of known subclasses. </li>
-    <li> A description of the class. </li>
-    <li> A summary of the methods defined by the class. </li>
-    <li> A summary of the instance variables defined by the class. </li>
-    <li> A summary of the class (static) variables defined by the
-    class. </li> 
-    <li> A detailed description of each method defined by the
-    class. </li>
-    <li> A detailed description of each instance variable defined by the
-    class. </li> 
-    <li> A detailed description of each class (static) variable defined
-    by the class. </li> 
-  </ul>
-
-<h2> Project Documentation </h2>
-
-  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
-  <ul>
-    <li> The <em>module hierarchy</em> lists every package and module, with
-    modules grouped into packages.  At the top level, and within each
-    package, modules and sub-packages are listed alphabetically. </li>
-    <li> The <em>class hierarchy</em> lists every class, grouped by base
-    class.  If a class has more than one base class, then it will be
-    listed under each base class.  At the top level, and under each base
-    class, classes are listed alphabetically. </li>
-  </ul>
-  
-  <p> The <strong>Index</strong> page contains indices of terms and
-  identifiers: </p>
-  <ul>
-    <li> The <em>term index</em> lists every term indexed by any object's