summaryrefslogtreecommitdiff
path: root/vendor/CherryPy-3.2.0/sphinx/source
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/CherryPy-3.2.0/sphinx/source')
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/_static/cpdocmain.css226
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/appendix/cherrypyspeed.rst251
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/appendix/faq.rst203
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/appendix/index.rst11
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/appendix/success.rst81
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/concepts/basics.rst98
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/concepts/config.rst442
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/concepts/dispatching.rst407
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/concepts/engine.rst76
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/concepts/exposing.rst42
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/concepts/index.rst57
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/concepts/tools.rst105
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/conf.py213
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/deployguide/apache.rst4
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/deployguide/cherryd.rst56
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/deployguide/index.rst28
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/index.rst47
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/intro/index.rst77
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/intro/install.rst144
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/intro/license.rst32
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/intro/whycherrypy.rst102
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/REST.rst255
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/choosingtemplate.rst151
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/cookies.rst51
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/cpreturn.gifbin6088 -> 0 bytes
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/cpyield.gifbin9112 -> 0 bytes
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/customheaders.rst74
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customplugins.rst131
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customtools.rst282
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/index.rst15
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/files/downloading.rst50
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/files/favicon.rst18
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/files/index.rst11
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/files/static.rst299
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/files/uploading.rst75
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/index.rst35
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/responsetimeouts.rst41
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/progguide/streaming.rst81
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cpchecker.rst12
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cpconfig.rst18
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cpdispatch.rst31
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cperror.rst32
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cplogging.rst15
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cpreqbody.rst37
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cprequest.rst22
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cpserver.rst12
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cptools.rst39
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cptree.rst15
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/_cpwsgi.rst24
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/cherrypy.rst40
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/cperrors.gifbin12971 -> 0 bytes
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/index.rst12
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth.rst14
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_basic.rst12
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_digest.rst26
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/caching.rst26
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/covercp.rst18
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/cptools.rst47
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/encoding.rst22
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httpauth.rst23
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httputil.rst41
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/index.rst10
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/jsontools.rst16
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/profiler.rst24
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/reprconf.rst29
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/sessions.rst41
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/static.rst19
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/lib/xmlrpc.rst17
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/index.rst10
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst47
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/dropprivileges.rst25
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/index.rst46
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/pidfile.rst20
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/signalhandler.rst39
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/servers.rst31
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/win32.rst17
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/process/wspbus.rst15
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/index.rst9
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/init.rst87
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_builtin.rst12
-rw-r--r--vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_pyopenssl.rst18
81 files changed, 0 insertions, 5341 deletions
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/_static/cpdocmain.css b/vendor/CherryPy-3.2.0/sphinx/source/_static/cpdocmain.css
deleted file mode 100644
index 57716dd..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/_static/cpdocmain.css
+++ /dev/null
@@ -1,226 +0,0 @@
-/**
- * Sphinx stylesheet -- default theme
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- */
-
-@import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
- font-family: sans-serif;
- font-size: 100%;
- background-color: #880000;
- color: #000;
- margin: 0;
- padding: 0;
-}
-
-div.document {
- background-color: #880000;
-}
-
-div.documentwrapper {
- float: left;
- width: 100%;
-}
-
-div.bodywrapper {
- margin: 0 0 0 230px;
-}
-
-div.body {
- background-color: #ffffff;
- color: #000000;
- padding: 0 20px 30px 20px;
-}
-
-div.footer {
- color: white;
- width: 100%;
- padding: 9px 0 9px 0;
- text-align: center;
- font-size: 75%;
-}
-
-div.footer a {
- color: white;
- text-decoration: underline;
-}
-
-div.related {
- background-color: #880000;
- line-height: 30px;
- color: white;
-}
-
-div.related a {
- color: #FFEEEE;
-}
-
-div.sphinxsidebar {
-}
-
-div.sphinxsidebar h3 {
- font-family: 'Trebuchet MS', sans-serif;
- color: white;
- font-size: 1.4em;
- font-weight: normal;
- margin: 0;
- padding: 0;
-}
-
-div.sphinxsidebar h3 a {
- color: white;
-}
-
-div.sphinxsidebar h4 {
- font-family: 'Trebuchet MS', sans-serif;
- color: white;
- font-size: 1.3em;
- font-weight: normal;
- margin: 5px 0 0 0;
- padding: 0;
-}
-
-div.sphinxsidebar p {
- color: white;
-}
-
-div.sphinxsidebar p.topless {
- margin: 5px 10px 10px 10px;
-}
-
-div.sphinxsidebar ul {
- margin: 10px;
- padding: 0;
- color: white;
-}
-
-div.sphinxsidebar a {
- color: #FFEEEE;
-}
-
-div.sphinxsidebar input {
- border: 1px solid #FFEEEE;
- font-family: sans-serif;
- font-size: 1em;
-}
-
-/* -- body styles ----------------------------------------------------------- */
-
-a {
- color: #355f7c;
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-div.body p, div.body dd, div.body li {
- text-align: justify;
- line-height: 130%;
-}
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
- font-family: 'Trebuchet MS', sans-serif;
- background-color: #FFF8FB;
- font-weight: normal;
- color: black;
- border-bottom: 1px solid #ccc;
- margin: 20px -20px 10px -20px;
- padding: 3px 0 3px 10px;
-}
-
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 160%; }
-div.body h3 { font-size: 140%; }
-div.body h4 { font-size: 120%; }
-div.body h5 { font-size: 110%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
- color: #660000;
- font-size: 0.8em;
- padding: 0 4px 0 4px;
- text-decoration: none;
-}
-
-a.headerlink:hover {
- background-color: #660000;
- color: white;
-}
-
-div.body p, div.body dd, div.body li {
- text-align: justify;
- line-height: 130%;
-}
-
-div.body p {
- margin-bottom: 1em;
-}
-
-div.admonition p.admonition-title + p {
- display: inline;
-}
-
-div.note {
- background-color: #eee;
- border: 1px solid #ccc;
-}
-
-div.seealso {
- background-color: #ffc;
- border: 1px solid #ff6;
-}
-
-div.topic {
- background-color: #eee;
-}
-
-div.warning {
- background-color: #ffe4e4;
- border: 1px solid #f66;
-}
-
-p.admonition-title {
- display: inline;
-}
-
-p.admonition-title:after {
- content: ":";
-}
-
-pre {
- padding: 5px;
- background-color: #FFEEEE;
- color: #333333;
- line-height: 120%;
- border: 1px solid #ac9;
- border-left: none;
- border-right: none;
-}
-
-tt {
- background-color: #ecf0f3;
- padding: 0 1px 0 1px;
-}
-
-.warning tt {
- background: #efc2c2;
-}
-
-.note tt {
- background: #d6d6d6;
-}
-
-table.docutils td {
- padding: 0.25em;
-}
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/appendix/cherrypyspeed.rst b/vendor/CherryPy-3.2.0/sphinx/source/appendix/cherrypyspeed.rst
deleted file mode 100644
index 6659958..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/appendix/cherrypyspeed.rst
+++ /dev/null
@@ -1,251 +0,0 @@
-.. _cherrypyspeed:
-
-**********************
-How fast is CherryPy ?
-**********************
-
-Introduction
-============
-
-When people ask this question, they usually mean "how fast will my CherryPy-based application be ?".
-
-In 99% of the cases, the answer is "this depends on your actual application code, not on !CherryPy itself".
-
-The reason is that, for 99% of the real-world dynamic applications, most of the time spent to return a page will be spent in your actual application code, and the time actually spent in the CherryPy code will be negligible.
-
-For instance, a typical page that requires a few database calls to be built might take in total 200ms to be served. Out of these 200ms, about 2ms will be spent by CherryPy itself, and 198ms will be spend in your actual database calls and page rendering...
-
-So you can see that, if you want to optimize anything, you should really optimize your actual application code before you try to optimize !CherryPy
-
-Raw speed of the CherryPy HTTP server
-=====================================
-
-Despite the real-life most common scenario explained in the introduction, some people still want to know the raw speed of the CherryPy HTTP server.
-So I sat down and did some benchmarking...
-
-About the benchmark
--------------------
-
-This benchmarking only makes sense on very small documents, otherwise we're no longer measuring the raw speed of the HTTP server, but also the speed of the application ...
-
-This benchmarking was performed on a laptop in the following environment:
- * Processor: Pentium M 1.6 Ghz
- * RAM: 1GB
- * Windows XP 2
- * Load testing tool: ab from Apache2
- * CherryPy version: SVN snapshot on 2005/01/13
-
-Note that "ab" was running on the same machine as the CherryPy server, so CherryPy is probably a bit faster than what we're getting.
-
-Test 1: Dynamic content / single threaded server
-------------------------------------------------
-
-I used the following basic CherryPy app::
-
- #!python
- from cherrypy import cpg
- class Root:
- def index(self):
- return "OK"
- index.exposed = True
-
- cpg.root = Root()
-
- cpg.server.start(configMap = {'socketPort': 10000})
-
-Here are the "ab" results::
-
- $ ./ab.exe -n 1000 http://localhost:10000/
- This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
- Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
-
- Benchmarking localhost (be patient)
- Completed 100 requests
- Completed 200 requests
- Completed 300 requests
- Completed 400 requests
- Completed 500 requests
- Completed 600 requests
- Completed 700 requests
- Completed 800 requests
- Completed 900 requests
- Finished 1000 requests
-
-
- Server Software: CherryPy/2.0.0b
- Server Hostname: localhost
- Server Port: 10000
-
- Document Path: /
- Document Length: 2 bytes
-
- Concurrency Level: 1
- Time taken for tests: 1.789044 seconds
- Complete requests: 1000
- Failed requests: 0
- Write errors: 0
- Total transferred: 127000 bytes
- HTML transferred: 2000 bytes
- Requests per second: 558.96 [#/sec] (mean)
- Time per request: 1.789 [ms] (mean)
- Time per request: 1.789 [ms] (mean, across all concurrent requests)
- Transfer rate: 69.31 [Kbytes/sec] received
-
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 0 1.9 0 15
- Processing: 0 1 4.2 0 15
- Waiting: 0 0 0.8 0 15
- Total: 0 1 4.5 0 15
-
- Percentage of the requests served within a certain time (ms)
- 50% 0
- 66% 0
- 75% 0
- 80% 0
- 90% 15
- 95% 15
- 98% 15
- 99% 15
- 100% 15 (longest request)
-
-As you can see, CherryPy averaged 558 requests/second, which is pretty good ...
-
-Test 2: Dynamic content / multi threaded server
------------------------------------------------
-
-I used the same code as test 1, but started CherryPy in thread-pool mode, with 10 threads.
-I also told "ab" to simulate 10 concurrent users ...
-Here are the "ab" results::
-
- $ ./ab.exe -c 10 -n 1000 http://localhost:10000/
- This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
- Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
-
- Benchmarking localhost (be patient)
- Completed 100 requests
- Completed 200 requests
- Completed 300 requests
- Completed 400 requests
- Completed 500 requests
- Completed 600 requests
- Completed 700 requests
- Completed 800 requests
- Completed 900 requests
- Finished 1000 requests
-
-
- Server Software: CherryPy/2.0.0b
- Server Hostname: localhost
- Server Port: 10000
-
- Document Path: /
- Document Length: 2 bytes
-
- Concurrency Level: 10
- Time taken for tests: 2.327670 seconds
- Complete requests: 1000
- Failed requests: 0
- Write errors: 0
- Total transferred: 127000 bytes
- HTML transferred: 2000 bytes
- Requests per second: 429.61 [#/sec] (mean)
- Time per request: 23.277 [ms] (mean)
- Time per request: 2.328 [ms] (mean, across all concurrent requests)
- Transfer rate: 53.27 [Kbytes/sec] received
-
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 0 2.3 0 15
- Processing: 15 21 8.9 15 47
- Waiting: 0 16 6.2 15 47
- Total: 15 22 9.0 15 47
-
- Percentage of the requests served within a certain time (ms)
- 50% 15
- 66% 31
- 75% 31
- 80% 31
- 90% 31
- 95% 31
- 98% 47
- 99% 47
- 100% 47 (longest request)
-
-As you can see, CherryPy averaged 429 requests/second, which is a bit less than test 1 (there is a small thread-switching overhead), but is still pretty good ...
-
-Test 3: Static content / single threaded server
------------------------------------------------
-
-This time, I used CherryPy to serve a static file from disc.
-The file was a simple text containing "OK".
-Here was the config file for CherryPy::
-
- [server]
- socketPort = 10000
-
- [staticContent]
- static.html = static.html
-
-
-Here are the "ab" results::
-
- $ ./ab.exe -n 1000 http://localhost:10000/static.html
- This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
- Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
-
- Benchmarking localhost (be patient)
- Completed 100 requests
- Completed 200 requests
- Completed 300 requests
- Completed 400 requests
- Completed 500 requests
- Completed 600 requests
- Completed 700 requests
- Completed 800 requests
- Completed 900 requests
- Finished 1000 requests
-
-
- Server Software: CherryPy/2.0.0b
- Server Hostname: localhost
- Server Port: 10000
-
- Document Path: /static.html
- Document Length: 4 bytes
-
- Concurrency Level: 1
- Time taken for tests: 1.979130 seconds
- Complete requests: 1000
- Failed requests: 0
- Write errors: 0
- Total transferred: 175000 bytes
- HTML transferred: 4000 bytes
- Requests per second: 505.27 [#/sec] (mean)
- Time per request: 1.979 [ms] (mean)
- Time per request: 1.979 [ms] (mean, across all concurrent requests)
- Transfer rate: 85.90 [Kbytes/sec] received
-
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 0 2.2 0 15
- Processing: 0 1 4.3 0 15
- Waiting: 0 0 0.5 0 15
- Total: 0 1 4.8 0 15
-
- Percentage of the requests served within a certain time (ms)
- 50% 0
- 66% 0
- 75% 0
- 80% 0
- 90% 15
- 95% 15
- 98% 15
- 99% 15
- 100% 15 (longest request)
-
-
-As you can see, CherryPy averaged 505 requests/second. Again it is a little bit less than a dynamic page, but it is still pretty good ...
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/appendix/faq.rst b/vendor/CherryPy-3.2.0/sphinx/source/appendix/faq.rst
deleted file mode 100644
index 0544ff3..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/appendix/faq.rst
+++ /dev/null
@@ -1,203 +0,0 @@
-.. _faq:
-
-**************************
-Frequently Asked Questions
-**************************
-
-General
-=======
-
-:Q: How fast is CherryPy ?
-
-:A: Have a look at :doc:`/appendix/cherrypyspeed`.
-
-:Q: When will it be added to the standard python library?
-
-:A: Probably never. The standard python library is not the place to distribute
- an application server.
-
-:Q: Who uses CherryPy?
-
-:A: See :ref:`SuccessStories`.
-
-
-Server Features and Configuration
-=================================
-
-:Q: How do I serve multiple domains on one host?
-
-:A: You can use the :class:`cherrypy._cpdispatch.VirtualHost` dispatcher.
-
-:Q: Does CherryPy support https?
-
-:A: CherryPy has built-in SSL support as of 3.0.0beta. See the `ssl_*`
- properties of :mod:`cherrypy._cpserver`.
-
- Earlier versions do not have built-in SSL support, but Tim Evans has
- written a module called `SslCherry <http://tools.cherrypy.org/wiki/SSLWithM2Crypto>`_
- that uses M2Crypto for https support. It's not quite ready for production
- use, but it looks promising.
-
-:Q: Does CherryPy prevent cross-site scripting?
-
-:A: See `Malicious HTML Tags Embedded in Client Web Requests <http://www.cert.org/advisories/CA-2000-02.html>`_
- and `Understanding Malicious Content Mitigation for Web Developers <http://www.cert.org/tech_tips/malicious_code_mitigation.html>`_
- at `CERT <http://www.cert.org/>`_ for an overview of Cross-Site Scripting
- (XSS) issues. It is ultimately up to the developer to remove potential XSS
- vulnerabilities from their apps and sites.
-
-:Q: Why does CherryPy take CPU/RAM even though it's not yet receiving requests?
-
-:A: CherryPy runs some tasks in the background by default, and some when you
- turn on certain tools. To strip CherryPy down to nothing, you might have to:
-
- * Turn off the :ref:`timeoutmonitor`
- via ``cherrypy.engine.timeout_monitor.unsubscribe()``.
- * Turn off the :class:`Autoreloader <cherrypy.process.plugins.Autoreloader>`
- via ``cherrypy.engine.autoreload.unsubscribe()``.
- * Examine the number of worker threads that WSGIServer uses.
- See :attr:`cherrypy._cpserver.Server.thread_pool`.
-
-:Q: CherryPy serves my HTML but not my CSS, Javascript, or images. Why does
- CherryPy wait to serve one resource before serving the next? Can it not
- handle more than one connection at a time?
-
-:A: CherryPy certainly can handle multiple connections. It's usually your
- browser that is the culprit. Firefox, for example, will only open two
- connections at a time to the same host (and if one of those is for the
- ``favicon.ico``, then you're down to one). Try increasing the number of
- concurrent connections your browser makes, or test your site with a tool
- that isn't a browser, like ``siege``, Apache's ``ab``, or even ``curl``.
-
-Development Questions
-=====================
-
-:Q: I can browse pages from my local machine, but not from other machines. What gives?
-
-:A: Set the config entry `server.socket_host` to either your server name/IP,
- or to '0.0.0.0' to listen on all interfaces.
- See :mod:`cherrypy._cpserver` for more details.
-
-:Q: How do I serve URL's with dots in them, like "/path/to/report.xml"?
-
-:A: Two ways: 1) Convert the dots to underscores for your page handler names,
- e.g. ``def report_xml(self)``
- (see :ref:`defaultdispatcher`) or 2) use a :ref:`default method<defaultmethods>`.
-
-:Q: How do I upload BIG files? (Or what is the best thing to do if I have many
- concurrent users uploading files?)
-
-:A: Please see :doc:`/progguide/files/uploading` for examples.
-
-:Q: Can I perform HTTP based authentication (.htaccess)?
-
-:A: There are two tools implementing :rfc:`2617`: :doc:`/refman/lib/auth_digest`
- and :doc:`/refman/lib/auth_basic`.
-
-:Q: What templating systems does CherryPy support?
-
-:A: All of them! One of the core idea of CherryPy is to be templating
- language independent. It is important to us to let developers keep
- their habits and preferred tools. Hence CherryPy does not favor any
- templating language. But for some ideas, see
- :doc:`/progguide/choosingtemplate` and the
- `Tools wiki <http://tools.cherrypy.org/wiki/>`_.
-
-:Q: My default handler throws an exception complaining about the number of
- arguments. How to handle this?
-
-:A: Suppose you have the following handler class setup: ::
-
- class Root:
- def project(self, id):
- data = db.query("project", id)
- return "Details for project %d: %r" % (id, data)
-
- and you want to provide project information based on urls of the form ::
-
- /project/123
-
- Here, 123 is a project id to search in a database. The above project()
- method will do the trick, but, when someone adds more arguments than the
- method expects, e.g. ::
-
- /project/123/456/789?x=blah
-
- those extra elements are passed on to the project() method as parameters, which
- is not able to handle the extra arguments and results in an exception being thrown.
-
- You can catch this by appending ``*args``, ``**kwargs`` to the default()
- method's parameter list. This way, the values 456 and 789 in the example
- will be placed in the 'args' list and the 'kwargs' dictionary will contain
- the string 'blah' for the key 'x'. In the following example, we just
- ignore any extra params: ::
-
- class Root:
- def project(self, id, *args, **kwargs):
- data = db.query("project", id)
- return "Details for project %d: %r" % (id, data)
-
-:Q: How do I publish objects with reserved Python names?
-
-:A: Example: ::
-
- class SomeClass(object):
- def __init__(self):
- setattr(self, 'print', self._print)
- setattr(self, 'class', self._class)
-
- def _print(self):
- ...
- _print.exposed = True
-
- def _class(self):
- ...
- _class.exposed = True
-
- Object attributes can have reserved names as long as you dynamically
- bind them so the Python parser doesn't choke on them.
-
-:Q: How does CherryPy compare to projects like mod_python, Twisted, and Django?
-
-:A: mod_python requires you to be running `Apache <http://httpd.apache.org/>`_.
- See http://www.modpython.org for more info. Since CherryPy 2.1, you can
- use mod_python as an interface to bridge CherryPy and Apache.
-
- Twisted is, well, twisted. You really have to spend the time to understand
- how the twisted framework works. It is deep and very powerful, but has a
- steep learning curve. CherryPy is, arguably, simpler to understand, due to
- its more traditional approach. Part of this comes from it not trying to do
- all the things that twisted does (SMTP, IRC, NNTP, etc etc). See
- http://twistedmatrix.com for more info.
-
- For a 3rd party discussion, refer to the
- `PyWebOff blog <http://pyre.third-bit.com/pyweb/index.html>`_ which concluded:
-
- "In no time at all, I was finished the library program. It took me
- significantly less time than it did with either of Quixote or Webware,
- and I'm very happy with the code that was produced. CherryPy needs more
- documenting, but otherwise it gets two enthusiastic thumbs up."
-
-:Q: When you run cherrypy and two dudes browse your website at the same time,
- does cherrypy create two instances of your root object? How does that work?
- I don't get it.
-
-:A: No, just one instance. It's no different than having two threads in any
- other Python application call the same method at the same time: each
- thread has its own set of local variables so they don't stomp each other.
-
-:Q: How do I get CherryPy to work if I don't have root?
-
-:A: Just append it to the path. Put the following at the top of the files
- you need CherryPy for: ::
-
- import sys
- sys.path.append("your local dir path")
-
-:Q: Can I change my root class, refresh my web page and see what is changed
- without restarting the CherryPy server?
-
-:A: See :class:`cherrypy.process.plugins.Autoreloader`. Note that this solution
- works properly only if the changes you make are syntactically correct.
- Re-compilation errors will exit the entire application.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/appendix/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/appendix/index.rst
deleted file mode 100644
index 0f79c15..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/appendix/index.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-********
-Appendix
-********
-
-.. toctree::
- :maxdepth: 2
- :glob:
-
- *
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/appendix/success.rst b/vendor/CherryPy-3.2.0/sphinx/source/appendix/success.rst
deleted file mode 100644
index 83363d2..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/appendix/success.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-.. _successstories:
-
-***************
-Success Stories
-***************
-
-You are interested in CherryPy but you would like to hear more from people using it, or simply check out products or application running it.
-
-If you would like to have your CherryPy powered website or product listed here, contact us via our [wiki:CherryPyMailingLists mailing lists] or [wiki:CherryPyIrcChannel IRC].
-
-
-Websites running atop CherryPy
-==============================
-
-http://www.yougov.com - International market research firm, conducts millions of surveys on CherryPy yearly
-
-http://www.cuil.com - "The world's biggest search engine"
-
-`PictureHouse cinemas web sale <http://sales.picturehouses.org.uk/>`_ - E-commerce site for the !PictureHouse cinema chain in the UK
-
-`http://jammersbase.com <http://jammersbase.com>`_
-
-`http://www.pennspurchase.com <http://www.pennspurchase.com>`_
-
-`Almad's Homepage <http://www.almad.net/>`_ - Simple homepage with blog (Czech only, sorry)
-
-`http://bank.muratordom.pl] & [http://bank.muratorplus.pl http://bank.muratorplus.pl <http://bank.muratordom.pl>`_ - Sorry, Polish only
-
-[http://www.defuze.org/] - A blog based on CherryPy2
-
-`CTChallenge <http://ctchallenge.org>`_ - A small, but growing site about a bicycle tour that raises money to fight cancer.
-
-`Food on line <http://www.foodfileonline.com>`_ - An online calorie counter and nutrition database
-
-`Personal site of Maries Ionel Cristian (ionel_mc) <http://ionel.zapto.org/>`_ - source code for the site and supporting projects available for download.
-
-`diggdot.us] - Built using [http://www.turbogears.org/ TurboGears <http://diggdot.us/>`_, running CherryPy: Cycling Digg, slashdot, and del.icio.us/popular news items.
-
-`stratolab <http://stratolab.com/>`_ - Video Game Courses for Children
-
-`Serpia <http://www.serpia.org/>`_ - A place for Pythoners with some interesting tutorials
-
-`hosted-projects.com <http://www.hosted-projects.com/>`_ - hosted-projects is a company specialized in web hosting services for software project teams offering the Subversion revision control system coupled with project and issue management software like Trac and Bugzilla. hosted-projects.com uses CherryPy for its web control panel.
-
-`eswap.com <http://www.eswap.com>`_ - website for financial charts, tagging stocks and researching investment ideas.
-
-I have built (and I'm maintaining it now) the `PennsPurchase <http://www.pennspurchase.com>`_ website. It uses Cherry, compiled (or not) !CheetahTemplates and PostgreSQL database (with sqlobject module). -- ''Pawel Maczewski''
-
-`indextar.com/ba <http://www.indextar.com/ba>`_ - a comprehensive directory of Buenos Aires businesses and services for expatriates.
-
-[http://www.worldwildweather.com/] - Personalized marine weather forecasts.
-
-Products based on CherryPy
-==========================
-
-`TurboGears <http://www.turbogears.org/>`_ - The rapid web development megaframework
-
-`Indigo <http://www.perceptiveautomation.com/indigo/index.html>`_ - An X10 home control server for Mac
-
-`Subway <http://www.gosubway.org/>`_ - Web development stack
-
-`SlikiWiki <http://www.sf.net/projects/slikiwiki>`_ - A simple wiki
-
-`opkee <http://svn.defuze.org/oss/opkee/>`_ - A simple blogging example
-
-`BAOW <http://www.baow.org>`_ - A lightweight content manage system based on CherryPy, Python language and SQL database.
-
-`Planet Plus <http://planetplus.python-hosting.com/>`_ is an add-on for Planet, the feed aggregator.
-
-`Brockman <http://projects.dowski.com/projects/brockman>`_ - A simple software project catalog example
-
-`read4me <http://read4me.sourceforge.net/wiki/index.php/Main_Page>`_ - read4me is a Python feed-reading web service.
-
-`Skeletonz <http://www.daimi.au.dk/~amix/skeletonz/>`_ - Skeletonz is an Ajax approach on a content management system (CMS)
-
-Firebird QA tools are based on CherryPy
-
-Products inspired by CherryPy
-=============================
-
-`OOWeb <http://ooweb.sourceforge.net/>`_ ''is a lightweight, embedded HTTP server for '''Java''' applications that maps objects to URL directories, methods to pages and form/querystring arguments as method parameters.'' ... ''OOWeb was unashamedly inspired by CherryPy'' =======
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/concepts/basics.rst b/vendor/CherryPy-3.2.0/sphinx/source/concepts/basics.rst
deleted file mode 100644
index 4fc5133..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/concepts/basics.rst
+++ /dev/null
@@ -1,98 +0,0 @@
-*******************************
-Your first CherryPy application
-*******************************
-
-The standard 'Hello world!' application takes less than 10 lines of code
-when written using CherryPy::
-
- import cherrypy
-
- class HelloWorld:
- def index(self):
- return "Hello world!"
- index.exposed = True
-
- cherrypy.quickstart(HelloWorld())
-
-We assume that you already have :doc:`installed </intro/install>` CherryPy.
-Copy the file above and save it locally as ``hello.py``, then start the
-application at the command prompt::
-
- $ python hello.py
-
-Direct your favorite web browser to http://localhost:8080 and you should
-see ``Hello world!`` printed there.
-
-How does it work?
------------------
-
-Let's take a look at ``hello.py``:
-
- * The ``import cherrypy`` statement imports the main CherryPy module.
- This is all that is required to have CherryPy working. Feel free to
- "import cherrypy" in an interactive session and see what's available!
- ``help(cherrypy)`` is also quite useful.
- * We declare a class named ``HelloWorld``. An instance of this class is the
- object that will be published by CherryPy. It contains a single method,
- named ``index``, which will get called when the root URL for the site is
- requested (for example, ``http://localhost/``). This method returns the
- **contents** of the Web page; in this case, the ``'Hello World!'`` string.
- Note that you don't have to subclass any framework-provided classes; in fact,
- you don't even have to use classes at all! But let's start with them for now.
- * The ``index.exposed = True`` is a necessary step to tell CherryPy that the
- ``index()`` method will be **exposed**. Only exposed methods can be called
- to answer a request. This feature allows the user to select which methods
- of an object will be accessible via the Web; non-exposed methods can't be
- accessed.
- * ``cherrypy.quickstart(HelloWorld())`` mounts an instance of the HelloWorld
- class, and starts the embedded webserver. It runs until explicitly
- interrupted, either with ``Ctrl-C`` or via a suitable signal (a simple
- ``kill`` on Unix will do it).
-
-When the application is executed, the CherryPy server is started with the
-default configuration. It will listen on ``localhost`` at port ``8080``. These
-defaults can be overridden by using a configuration file or dictionary
-(more on this later).
-
-Finally, the web server receives the request for the URL
-``http://localhost:8080``. It searches for the best method to handle the
-request, starting from the ``HelloWorld`` instance. In this particular case,
-the root of the site is automatically mapped to the ``index()`` method (similar
-to the ``index.html`` that is the standard page for conventional Web servers).
-The HelloWorld class defines an ``index()`` method and exposes it. CherryPy
-calls ``HelloWorld().index()``, and the result of the call is sent back to
-the browser as the contents of the index page for the website. All the
-dispatching and HTTP-processing work is
-done automatically; the application programmer only needs to provide the
-desired content as the return value of the ``index`` method.
-
-CherryPy structure
-------------------
-
-Most of the features of CherryPy are available through the :mod:`cherrypy`
-module. It contains several members:
-
- * :class:`cherrypy.engine <cherrypy.process.wspbus.Bus>`
- controls process startup, shutdown, and other events, including your own
- Plugins. See :doc:`/concepts/engine`.
- * :class:`cherrypy.server <cherrypy._cpserver.Server>` configures and controls
- the HTTP server.
- * :class:`cherrypy.request <cherrypy._cprequest.Request>` contains all
- the information that comes with the HTTP request, after it is parsed and
- analyzed by CherryPy.
- * :attr:`cherrypy.request.headers <cherrypy.lib.httputil.HeaderMap>`
- contains a mapping with the header options that were sent as part of
- the request.
- * :class:`cherrypy.session <cherrypy.lib.sessions.Session>` is a special
- mapping that is automatically generated and encoded by CherryPy; it can
- be used to store session-data in a persistent cookie. For it to work you
- have to enable the session functionality by setting 'tools.session.on' to
- True in your config.
- * :class:`cherrypy.response <cherrypy._cprequest.Response>` contains the
- data that is used to build the HTTP response.
- * :attr:`cherrypy.response.headers <cherrypy.lib.httputil.HeaderMap>`
- contains a mapping with the header options that will be returned by the
- server, before the contents get sent.
- * :attr:`cherrypy.response.body <cherrypy._cprequest.Response.body>` contains
- the actual contents of the webpage that will be sent as a response.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/concepts/config.rst b/vendor/CherryPy-3.2.0/sphinx/source/concepts/config.rst
deleted file mode 100644
index 1b8336b..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/concepts/config.rst
+++ /dev/null
@@ -1,442 +0,0 @@
-:tocdepth: 3
-
-*************
-Configuration
-*************
-
-Configuration in CherryPy is implemented via dictionaries. Keys are strings
-which name the mapped value; values may be of any type.
-
-In CherryPy 3, you use configuration (files or dicts) to set attributes
-directly on the engine, server, request, response, and log objects. So the
-best way to know the full range of what's available in the config file is to
-simply import those objects and see what ``help(obj)`` tells you.
-
-Architecture
-============
-
-The first thing you need to know about CherryPy 3's configuration is that it
-separates *global* config from *application* config. If you're deploying
-multiple *applications* at the same *site* (and more and more people are,
-as Python web apps are tending to decentralize), you need to be careful to
-separate the configurations, as well. There's only ever one "global config",
-but there is a separate "app config" for each app you deploy.
-
-CherryPy *Requests* are part of an *Application*, which runs in a *global*
-context, and configuration data may apply to any of those three scopes.
-Let's look at each of those scopes in turn.
-
-Global config
--------------
-
-Global config entries apply everywhere, and are stored in
-:class:`cherrypy.config <cherrypy._cpconfig.Config>`. This flat dict only holds
-global config data; that is, "site-wide" config entries which affect all
-mounted applications.
-
-Global config is stored in the
-:class:`cherrypy.config <cherrypy._cpconfig.Config>` dict,
-and you therefore update it by calling ``cherrypy.config.update(conf)``.
-The ``conf`` argument can be either a filename, an open file, or a dict of
-config entries. Here's an example of passing a dict argument::
-
- cherrypy.config.update({'server.socket_host': '64.72.221.48',
- 'server.socket_port': 80,
- })
-
-The ``server.socket_host`` option n this example determines on which network
-interface CherryPy will listen. The ``server.socket_port`` option declares
-the TCP port on which to listen.
-
-Application config
-------------------
-
-Application entries apply to a single mounted application, and are stored on
-each Application object itself as
-:attr:`app.config <cherrypy._cptree.Application.config>`. This is a two-level
-dict where each top-level key is a path, or "relative URL" (for example,
-``"/"`` or ``"/my/page"``), and each value is a dict of config entries.
-The URL's are relative to the script name (mount point) of the Application.
-Usually, all this data is provided in the call to
-``tree.mount(root(), script_name='/path/to', config=conf)``,
-although you may also use ``app.merge(conf)``.
-The ``conf`` argument can be either a filename, an open file, or a dict of
-config entries.
-
-Configuration file example::
-
- [/]
- tools.trailing_slash.on = False
- request.dispatch: cherrypy.dispatch.MethodDispatcher()
-
-or, in python code::
-
- config = {'/':
- {
- 'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
- 'tools.trailing_slash.on': False,
- }
- }
- cherrypy.tree.mount(Root(), "/", config=config)
-
-CherryPy doesn't use any sections that don't start with ``"/"`` (except
-``[global]``, see below). That means you can place your own configuration
-entries in a CherryPy config file by giving them a section name which does not
-start with ``"/"``. For example, you might include database entries like this::
-
- [global]
- server.socket_host: "0.0.0.0"
-
- [Databases]
- driver: "postgres"
- host: "localhost"
- port: 5432
-
- [/path]
- response.timeout: 6000
-
-Then, in your application code you can read these values during request time
-via ``cherrypy.request.app.config['Databases']``. For code that is outside the
-request process, you'll have to pass a reference to your Application around.
-
-Request config
---------------
-
-Each Request object possesses a single
-:attr:`request.config <cherrypy._cprequest.Request.config>` dict. Early in the
-request process, this dict is populated by merging Global config, Application
-config, and any config acquired while looking up the page handler (see next).
-This dict contains only those config entries which apply to the given request.
-
-.. note::
-
- when you do an :class:`InternalRedirect<cherrypy._cperror.InternalRedirect`,
- this config attribute is recalculated for the new path.
-
-Declaration
-===========
-
-Configuration data may be supplied as a Python dictionary, as a filename,
-or as an open file object.
-
-Configuration files
--------------------
-
-When you supply a filename or file, CherryPy uses Python's builtin ConfigParser;
-you declare Application config by writing each path as a section header,
-and each entry as a ``"key: value"`` (or ``"key = value"``) pair::
-
- [/path/to/my/page]
- response.stream: True
- tools.trailing_slash.extra = False
-
-Combined Configuration Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you are only deploying a single application, you can make a single config
-file that contains both global and app entries. Just stick the global entries
-into a config section named ``[global]``, and pass the same file to both
-:func:`config.update <cherrypy._cpconfig.Config.update>` and
-:func:`tree.mount <cherrypy._cptree.Tree.mount`. If you're calling
-``cherrypy.quickstart(app root, script name, config)``, it will pass the
-config to both places for you. But as soon as you decide to add another
-application to the same site, you need to separate the two config files/dicts.
-
-Separate Configuration Files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If you're deploying more than one application in the same process, you need
-(1) file for global config, plus (1) file for *each* Application.
-The global config is applied by calling
-:func:`cherrypy.config.update <cherrypy._cpconfig.Config.update>`,
-and application config is usually passed in a call to
-:func:`cherrypy.tree.mount <cherrypy._cptree.Tree.mount>`.
-
-In general, you should set global config first, and then mount each
-application with its own config. Among other benefits, this allows you to set
-up global logging so that, if something goes wrong while trying to mount
-an application, you'll see the tracebacks. In other words, use this order::
-
- # global config
- cherrypy.config.update({'environment': 'production',
- 'log.error_file': 'site.log',
- # ...
- })
-
- # Mount each app and pass it its own config
- cherrypy.tree.mount(root1, "/", appconf1)
- cherrypy.tree.mount(root2, "/forum", appconf2)
- cherrypy.tree.mount(root3, "/blog", appconf3)
-
- if hasattr(cherrypy.engine, 'block'):
- # 3.1 syntax
- cherrypy.engine.start()
- cherrypy.engine.block()
- else:
- # 3.0 syntax
- cherrypy.server.quickstart()
- cherrypy.engine.start()
-
-Values in config files use Python syntax
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Config entries are always a key/value pair, like ``server.socket_port = 8080``.
-The key is always a name, and the value is always a Python object. That is,
-if the value you are setting is an ``int`` (or other number), it needs to look
-like a Python ``int``; for example, ``8080``. If the value is a string, it
-needs to be quoted, just like a Python string. Arbitrary objects can also be
-created, just like in Python code (assuming they can be found/imported).
-Here's an extended example, showing you some of the different types::
-
- [global]
- log.error_file: "/home/fumanchu/myapp.log"
- environment = 'production'
- server.max_request_body_size: 1200
-
- [/myapp]
- tools.trailing_slash.on = False
- request.dispatch: cherrypy.dispatch.MethodDispatcher()
-
-.. _cp_config:
-
-_cp_config: attaching config to handlers
-----------------------------------------
-
-Config files have a severe limitation: values are always keyed by URL.
-For example::
-
- [/path/to/page]
- methods_with_bodies = ("POST", "PUT", "PROPPATCH")
-
-It's obvious that the extra method is the norm for that path; in fact,
-the code could be considered broken without it. In CherryPy, you can attach
-that bit of config directly on the page handler::
-
- def page(self):
- return "Hello, world!"
- page.exposed = True
- page._cp_config = {"request.methods_with_bodies": ("POST", "PUT", "PROPPATCH")}
-
-``_cp_config`` is a reserved attribute which the dispatcher looks for at
-each node in the object tree. The ``_cp_config`` attribute must be a CherryPy
-config dictionary. If the dispatcher finds a ``_cp_config`` attribute,
-it merges that dictionary into the rest of the config. The entire merged
-config dictionary is placed in
-:attr:`cherrypy.request.config <cherrypy._cprequest.Request.config>`.
-
-This can be done at any point in the tree of objects; for example, we could have
-attached that config to a class which contains the page method::
-
- class SetOPages:
-
- _cp_config = {"request.methods_with_bodies": ("POST", "PUT", "PROPPATCH")}
-
- def page(self):
- return "Hullo, Werld!"
- page.exposed = True
-
-.. note::
-
- This behavior is only guaranteed for the default dispatcher. Other
- dispatchers may have different restrictions on where you can attach
- ``_cp_config`` attributes.
-
-This technique allows you to:
-
- * Put config near where it's used for improved readability and maintainability.
- * Attach config to objects instead of URL's. This allows multiple URL's to
- point to the same object, yet you only need to define the config once.
- * Provide defaults which are still overridable in a config file.
-
-.. _namespaces:
-
-Namespaces
-==========
-
-Because config entries usually just set attributes on objects, they're almost
-all of the form: ``object.attribute``. A few are of the form:
-``object.subobject.attribute``. They look like normal Python attribute chains,
-because they work like them. We call the first name in the chain the
-*"config namespace"*. When you provide a config entry, it is bound as early
-as possible to the actual object referenced by the namespace; for example,
-the entry ``response.stream`` actually sets the ``stream`` attribute of
-:class:`cherrypy.response <cherrypy._cprequest.Response>`! In this way,
-you can easily determine the default value by firing up a python interpreter
-and typing::
-
- >>> import cherrypy
- >>> cherrypy.response.stream
- False
-
-Each config namespace has its own handler; for example, the "request" namespace
-has a handler which takes your config entry and sets that value on the
-appropriate "request" attribute. There are a few namespaces, however, which
-don't work like normal attributes behind the scenes; however, they still use
-dotted keys and are considered to "have a namespace".
-
-Builtin namespaces
-------------------
-
-Entries from each namespace may be allowed in the global, application root
-(``"/"``) or per-path config, or a combination:
-
-========== ====== ================== =========
-Scope Global Application Root App Path
----------- ------ ------------------ ---------
-engine X
-hooks X X X
-log X X
-request X X X
-response X X X
-server X
-tools X X X
-========== ====== ================== =========
-
-engine
-^^^^^^
-Entries in this namespace controls the 'application engine'. These can only be
-declared in the global config. Any attribute of
-:class:`cherrypy.engine<cherrypy.process.wspbus.Bus>` may be set
-in config; however, there are a few extra entries available in config:
-
- * Plugin attributes. Many of the :ref:`Engine Plugins<plugins>` are themselves
- attributes of ``cherrypy.engine``. You can set any attribute of an attached
- plugin by simply naming it. For example, there is an instance of the
- :class:`Autoreloader<cherrypy.process.plugins.Autoreloader>` class at
- ``engine.autoreload``; you can set its "frequency" attribute via the config
- entry ``engine.autoreload.frequency = 60``. In addition, you can turn such
- plugins on and off by setting ``engine.autoreload.on = True`` or ``False``.
- * ``engine.SIGHUP/SIGTERM``: These entries can be used to set the list of
- listeners for the given :ref:`channel<channels>`. Mostly, this is used
- to turn off the signal handling one gets automatically via
- :func:`cherrypy.quickstart`.
-
-hooks
-^^^^^
-
-Declares additional request-processing functions. Use this to append your own
-:class:`Hook<cherrypy._cprequest.Hook>` functions to the request. For example,
-to add ``my_hook_func`` to the ``before_handler`` hookpoint::
-
- [/]
- hooks.before_handler = myapp.my_hook_func
-
-log
-^^^
-
-Configures logging. These can only be declared in the global config (for global
-logging) or ``[/]`` config (for each application).
-See :class:`LogManager<cherrypy._cplogging.LogManager>` for the list of
-configurable attributes. Typically, the "access_file", "error_file", and
-"screen" attributes are the most commonly configured.
-
-request
-^^^^^^^
-
-Sets attributes on each Request. See the
-:class:`Request<cherrypy._cprequest.Request>` class for a complete list.
-
-response
-^^^^^^^^
-
-Sets attributes on each Response. See the
-:class:`Response<cherrypy._cprequest.Response>` class for a complete list.
-
-server
-^^^^^^
-Controls the default HTTP server via
-:class:`cherrypy.server<cherrypy._cpserver.Server>` (see that class for a
-complete list of configurable attributes). These can only be
-declared in the global config.
-
-tools
-^^^^^
-
-Enables and configures additional request-processing packages. See the
-:doc:`/concepts/tools` overview for more information.
-
-wsgi
-^^^^
-
-Adds WSGI middleware to an Application's "pipeline". These can only be
-declared in the app's root config ("/").
-
- * ``wsgi.pipeline``: Appends to the WSGi pipeline. The value must be a list of
- (name, app factory) pairs. Each app factory must be a WSGI callable class
- (or callable that returns a WSGI callable); it must take an initial
- 'nextapp' argument, plus any optional keyword arguments. The optional
- arguments may be configured via ``wsgi.<name>.<arg>``.
- * ``wsgi.response_class``: Overrides the default
- :class:`Response<cherrypy._cprequest.Response>` class.
-
-checker
-^^^^^^^
-
-Controls the "checker", which looks for common errors in app state (including
-config) when the engine starts. You can turn off individual checks by setting
-them to ``False`` in config. See :class:`cherrypy._cpchecker.Checker` for a
-complete list. Global config only.
-
-
-Custom config namespaces
-------------------------
-
-You can define your own namespaces if you like, and they can do far more than
-simply set attributes. The ``test/test_config`` module, for example, shows an
-example of a custom namespace that coerces incoming params and outgoing body
-content. The :mod:`cherrypy._cpwsgi` module includes an additional, builtin
-namespace for invoking WSGI middleware.
-
-In essence, a config namespace handler is just a function, that gets passed
-any config entries in its namespace. You add it to a namespaces registry
-(a dict), where keys are namespace names and values are handler functions.
-When a config entry for your namespace is encountered, the corresponding
-handler function will be called, passing the config key and value; that is,
-``namespaces[namespace](k, v)``. For example, if you write::
-
- def db_namespace(k, v):
- if k == 'connstring':
- orm.connect(v)
- cherrypy.config.namespaces['db'] = db_namespace
-
-then ``cherrypy.config.update({"db.connstring": "Oracle:host=1.10.100.200;sid=TEST"})``
-will call ``db_namespace('connstring', 'Oracle:host=1.10.100.200;sid=TEST')``.
-
-The point at which your namespace handler is called depends on where you add it:
-
-=========== ============================================================================= ===================================
-Scope Namespace dict Handler is called in
------------ ----------------------------------------------------------------------------- -----------------------------------
-Global :attr:`cherrypy.config.namespaces <cherrypy._cpconfig.Config.namespaces>` cherrypy.config.update
-Application :attr:`app.namespaces <cherrypy._cptree.Application.namespaces>` Application.merge (which is called by cherrypy.tree.mount)
-Request :attr:`app.request_class.namespaces <cherrypy._cprequest.Request.namespaces>` Request.configure (called for each request, after the handler is looked up)
-=========== ============================================================================= ===================================
-
-The name can be any string, and the handler must be either a callable or a
-(Python 2.5 style) context manager.
-
-If you need additional code to run when all your namespace keys are collected,
-you can supply a callable context manager in place of a normal function for
-the handler. Context managers are defined in :pep:`343`.
-
-.. _environments:
-
-Environments
-============
-
-The only key that does not exist in a namespace is the *"environment"* entry.
-This special entry *imports* other config entries from a template stored in
-``cherrypy._cpconfig.environments[environment]``. It only applies to the
-global config, and only when you use
-:func:`cherrypy.config.update <cherrypy._cpconfig.Config.update>`.
-
-If you find the set of existing environments (production, staging, etc) too
-limiting or just plain wrong, feel free to extend them or add new environments::
-
- cherrypy._cpconfig.environments['staging']['log.screen'] = False
-
- cherrypy._cpconfig.environments['Greek'] = {
- 'tools.encode.encoding': 'ISO-8859-7',
- 'tools.decode.encoding': 'ISO-8859-7',
- }
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/concepts/dispatching.rst b/vendor/CherryPy-3.2.0/sphinx/source/concepts/dispatching.rst
deleted file mode 100644
index b7b9c41..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/concepts/dispatching.rst
+++ /dev/null
@@ -1,407 +0,0 @@
-***********
-Dispatching
-***********
-
- The resource is not the storage object. The resource is not a mechanism
- that the server uses to handle the storage object. The resource is a
- conceptual mapping -- the server receives the identifier (which identifies
- the mapping) and applies it to its current mapping implementation (usually
- a combination of collection-specific deep tree traversal and/or hash tables)
- to find the currently responsible handler implementation and the handler
- implementation then selects the appropriate action+response based on the
- request content. All of these implementation-specific issues are hidden
- behind the Web interface; their nature cannot be assumed by a client that
- only has access through the Web interface.
-
- `Roy Fielding <http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm>`_
-
-When you wish to serve a resource on the Web, you never actually serve the
-resource, because "resources" are concepts. What you serve are representations
-of a resource, and *page handlers* are what you use in CherryPy to do that.
-Page handlers are functions that you write; CherryPy calls one for each
-request and uses its response (a string of HTML, for example) as the
-representation.
-
-For the user, a web application is just like a website with static files.
-The user types (or clicks) a URL, and gets to the desired webpage. A
-conventional webserver uses the URL to retrieve a static file from the
-filesystem. A web application server, on the other hand, not only serves
-the content from static files; it can also map the URL it receives into some
-object and call it. The result is then sent back to the user's browser,
-where it is rendered into a viewable page. The result is a dynamic web
-application; for each URL, a unique object can be called into action.
-The key to understand how to write a new web application is to understand
-how this mapping occurs.
-
-CherryPy takes the output of the appropriate page handler function, binds it
-to :attr:`cherrypy.response.body <cherrypy._cprequest.Response.body>`,
-and sends it as the HTTP response entity
-body. Your page handler function (and almost any other part of CherryPy) can
-directly set :attr:`cherrypy.response.status <cherrypy._cprequest.Response.status>`
-and :attr:`cherrypy.response.headers <cherrypy._cprequest.Response.headers>`
-as desired.
-
-Dispatchers
-===========
-
-Before CherryPy can call your page handlers, it has to know 1) where they are,
-and 2) which one to call for a given 'identifier' (URI). In CherryPy, we use
-a Dispatcher object to:
-
-1. Understand the arrangement of handlers
-2. Find the appropriate page handler function
-3. Wrap your actual handler function in a
- :class:`PageHandler <cherrypy._cpdispatch.PageHandler>` object (see below)
-4. Set :attr:`cherrypy.request.handler <cherrypy._cprequest.Request.handler>`
- (to the :class:`PageHandler <cherrypy._cpdispatch.PageHandler>` wrapper)
-5. Collect configuration entries into
- :attr:`cherrypy.request.config <cherrypy._cprequest.Request.config>`
-6. Collect "virtual path" components
-
-CherryPy has a default arrangement of handlers (see next), but also allows you
-to trade it for any arrangement you can think up and implement.
-
-.. _defaultdispatcher:
-
-Default Dispatcher
-------------------
-
-By default, CherryPy uses a fairly straightforward mapping procedure. The root
-of the site is the :attr:`Application.root <cherrypy._cptree.Application.root>`
-object. When it receives a URL, it breaks it into its path components, and
-proceeds looking down into the site until it finds an object that is the
-'best match' for that particular URL. For each path component it tries to find
-an object with the same name, starting from ``root``, and going down for each
-component it finds, until it can't find a match. An example shows it better::
-
- root = HelloWorld()
- root.onepage = OnePage()
- root.otherpage = OtherPage()
-
-In the example above, the URL ``http://localhost/onepage`` will point at the
-first object and the URL ``http://localhost/otherpage`` will point at the
-second one. As usual, this search is done automatically. But it goes even further::
-
- root.some = Page()
- root.some.page = Page()
-
-In this example, the URL ``http://localhost/some/page`` will be mapped to the
-``root.some.page`` object. If this object is exposed (or alternatively, its
-``index`` method is), it will be called for that URL.
-
-In our HelloWorld example, adding the ``http://onepage/`` mapping
-to ``OnePage().index`` could be done like this::
-
- class OnePage(object):
- def index(self):
- return "one page!"
- index.exposed = True
-
- class HelloWorld(object):
- onepage = OnePage()
-
- def index(self):
- return "hello world"
- index.exposed = True
-
- cherrypy.quickstart(HelloWorld())
-
-Normal methods
-^^^^^^^^^^^^^^^
-
-.. index:: methods; normal
-
-CherryPy can directly call methods on the mounted objects, if it receives a
-URL that is directly mapped to them. For example::
-
- def foo(self):
- return 'Foo!'
- foo.exposed = True
-
- root.foo = foo
-
-In the example, ``root.foo`` contains a function object, named ``foo``. When
-CherryPy receives a request for the ``/foo`` URL, it will automatically call
-the ``foo()`` function. Note that it can be a plain function, or a method of
-any object; any callable will do it.
-
-.. _indexmethods:
-
-Index methods
-^^^^^^^^^^^^^
-
-.. index:: index, methods; index
-
-The ``index`` method has a special role in CherryPy: it handles intermediate
-URI's that end in a slash; for example, the URI ``/orders/items/`` might map
-to ``root.orders.items.index``. The ``index`` method can take additional
-keyword arguments if the request includes querystring or POST params; see
-:ref:`kwargs`, next. However,
-unlike all other page handlers, it *cannot* take positional arguments (see
-:ref:`args`, below).
-
-The default dispatcher will always try to find a method named `index` at the
-end of the branch traversal. In the example above, the URI "/onepage/" would
-result in the call: ``app.root.onepage.index()``. Depending on the use of the
-:func:`trailing_slash Tool <cherrypy.lib.cptools.trailing_slash>`,
-that might be interrupted with an HTTPRedirect, but
-otherwise, both ``"/onepage"`` (no trailing slash) and ``"/onepage/"``
-(trailing slash) will result in the same call.
-
-.. _kwargs:
-
-Keyword Arguments
-^^^^^^^^^^^^^^^^^
-
-.. index:: forms, **kwargs
-
-Any page handler that is called by CherryPy (``index``, or any other suitable
-method) can receive additional data from HTML or other forms using
-*keyword arguments*. For example, the following login form sends the
-``username`` and the ``password`` as form arguments using the POST method::
-
- <form action="doLogin" method="post">
- <p>Username</p>
- <input type="text" name="username" value=""
- size="15" maxlength="40"/>
- <p>Password</p>
- <input type="password" name="password" value=""
- size="10" maxlength="40"/>
- <p><input type="submit" value="Login"/></p>
- <p><input type="reset" value="Clear"/></p>
- </form>
-
-The following code can be used to handle this URL::
-
- class Root:
- def doLogin(self, username=None, password=None):
- # check the username & password
- ...
- doLogin.exposed = True
-
-Both arguments have to be declared as *keyword arguments*. The default value
-can be used either to provide a suitable default value for optional arguments,
-or to provide means for the application to detect if some values were missing
-from the request.
-
-CherryPy supports both the GET and POST method for HTML forms. Arguments are
-passed the same way, regardless of the original method used by the browser to
-send data to the web server.
-
-.. _args:
-
-Positional Arguments
-^^^^^^^^^^^^^^^^^^^^
-
-.. index:: path, virtual path, path segments, *args, positional arguments
-
-When a request is processed, the URI is split into its components, and each
-one is matched in order against the nodes in the tree. Any trailing components
-are "virtual path" components and are passed as positional arguments. For
-example, the URI ``"/branch/leaf/4"`` might result in
-the call: ``app.root.branch.leaf(4)``, or ``app.root.index(branch, leaf, 4)``
-depending on how you have your handlers arranged.
-
-Partial matches can happen when a URL contains components that do not map to
-the object tree. This can happen for a number of reasons. For example, it may
-be an error; the user just typed the wrong URL. But it also can mean that the
-URL contains extra arguments.
-
-For example, assume that you have a blog-like application written in CherryPy
-that takes the year, month and day as part of the URL
-``http://localhost/blog/2005/01/17``. This URL can be handled by the
-following code::
-
- class Root:
- def blog(self, year, month, day):
- ...
- blog.exposed = True
-
- root = Root()
-
-So the URL above will be mapped as a call to::
-
- root.blog('2005', '1', '17')
-
-In this case, there is a partial match up to the ``blog`` component. The rest
-of the URL can't be found in the mounted object tree. In this case, the
-``blog()`` method will be called, and the positional parameters will
-receive the remaining path segments as arguments. The values are passed as
-strings; in the above mentioned example, the arguments would still need to be
-converted back into numbers, but the idea is correctly presented.
-
-.. _defaultmethods:
-
-Default methods
-^^^^^^^^^^^^^^^
-
-.. index:: default, methods; default
-
-If the default dispatcher is not able to locate a suitable page handler by
-walking down the tree, it has a last-ditch option: it starts walking back
-''up'' the tree looking for `default` methods. Default methods work just like
-any other method with positional arguments, but are defined one level further
-down, in case you have multiple methods to expose. For example, we could have
-written the above "blog" example equivalently with a "default" method instead::
-
- class Blog:
- def default(self, year, month, day):
- ...
- default.exposed = True
-
- class Root: pass
-
- root = Root()
- root.blog = Blog()
-
-So the URL ``http://localhost/blog/2005/01/17`` will be mapped as a call to::
-
- root.blog.default('2005', '1', '17')
-
-You could achieve the same effect by defining a ``__call__`` method in this
-case, but "default" just reads better. ;)
-
-Special characters
-^^^^^^^^^^^^^^^^^^
-
-You can use dots in a URI like ``/path/to/my.html``, but Python method names
-don't allow dots. To work around this, the default dispatcher converts all dots
-in the URI to underscores before trying to find the page handler. In the
-example, therefore, you would name your page handler "def my_html". However,
-this means the page is also available at the URI ``/path/to/my_html``.
-If you need to protect the resource (e.g. with authentication), **you must
-protect both URLs**.
-
-.. versionadded:: 3.2
- The default dispatcher now takes a 'translate' argument, which converts all
- characters in string.punctuation to underscores using the builtin
- :meth:`str.translate <str.translate>` method of string objects.
- You are free to specify any other translation string of length 256.
-
-Other Dispatchers
------------------
-
-But Mr. Fielding mentions two kinds of "mapping implementations" above: trees
-and hash tables ('dicts' in Python). Some web developers claim trees are
-difficult to change as an application evolves, and prefer to use dicts
-(or a list of tuples) instead. Under these schemes, the mapping key is often
-a regular expression, and the value is the handler function. For example::
-
- def root_index(name):
- return "Hello, %s!" % name
-
- def branch_leaf(size):
- return str(int(size) + 3)
-
- mappings = [
- (r'^/([^/]+)$', root_index),
- (r'^/branch/leaf/(\d+)$', branch_leaf),
- ]
-
-CherryPy allows you to use a :class:`Dispatcher<cherrypy._cpdispatch.Dispatcher>`
-other than the default if you wish. By using another
-:class:`Dispatcher <cherrypy._cpdispatch.Dispatcher>` (or writing your own),
-you gain complete control over the arrangement and behavior of your page
-handlers (and config). To use another dispatcher, set the
-``request.dispatch`` config entry to the dispatcher you like::
-
- d = cherrypy.dispatch.RoutesDispatcher()
- d.connect(name='hounslow', route='hounslow', controller=City('Hounslow'))
- d.connect(name='surbiton', route='surbiton', controller=City('Surbiton'),
- action='index', conditions=dict(method=['GET']))
- d.mapper.connect('surbiton', controller='surbiton',
- action='update', conditions=dict(method=['POST']))
-
- conf = {'/': {'request.dispatch': d}}
- cherrypy.tree.mount(root=None, config=conf)
-
-A couple of notes about the example above:
-
-* Since Routes has no controller hierarchy, there's nothing to pass as a
- root to :func:`cherrypy.tree.mount <cherrypy._cptree.Tree.mount>`;
- pass ``None`` in this case.
-* Usually you'll use the same dispatcher for an entire app, so specifying it
- at the root ("/") is common. But you can use different dispatchers for
- different paths if you like.
-* Because the dispatcher is so critical to finding handlers (and their
- ancestors), this is one of the few cases where you *cannot* use
- :ref:`_cp_config <cp_config>`; it's a chicken-and-egg problem:
- you can't ask a handler you haven't found yet how it wants to be found.
-* Since Routes are explicit, there's no need to set the ``exposed`` attribute.
- **All routes are always exposed.**
-
-CherryPy ships with additional Dispatchers in :mod:`cherrypy._cpdispatch`.
-
-.. _pagehandlers:
-
-PageHandler Objects
-===================
-
-Because the Dispatcher sets
-:attr:`cherrypy.request.handler <cherrypy._cprequest.Request.handler>`,
-it can also control
-the input and output of that handler function by wrapping the actual handler.
-The default Dispatcher passes "virtual path" components as positional arguments
-and passes query-string and entity (GET and POST) parameters as keyword
-arguments. It uses a :class:`PageHandler <cherrypy._cpdispatch.PageHandler>`
-object for this, which looks a lot like::
-
- class PageHandler(object):
- """Callable which sets response.body."""
-
- def __init__(self, callable, *args, **kwargs):
- self.callable = callable
- self.args = args
- self.kwargs = kwargs
-
- def __call__(self):
- return self.callable(*self.args, **self.kwargs)
-
-The actual default PageHandler is a little bit more complicated (because the
-args and kwargs are bound later), but you get the idea. And you can see how
-easy it would be to provide your own behavior, whether your own inputs or your
-own way of modifying the output. Remember, whatever is returned from the
-handler will be bound to
-:attr:`cherrypy.response.body <cherrypy._cprequest.Response.body>` and will
-be used as the response entity.
-
-Replacing page handlers
------------------------
-
-The handler that's going to be called during a request is available at
-:attr:`cherrypy.request.handler <cherrypy._cprequest.Request.handler`,
-which means your code has a chance to replace it before the handler runs.
-It's a snap to write a Tool to do so with a
-:class:`HandlerWrapperTool <cherrypy._cptools.HandlerWrapperTool>`::
-
- to_skip = (KeyboardInterrupt, SystemException, cherrypy.HTTPRedirect)
- def PgSQLWrapper(next_handler, *args, **kwargs):
- trans.begin()
- try:
- result = next_handler(*args, **kwargs)
- trans.commit()
- except Exception, e:
- if not isinstance(e, to_skip):
- trans.rollback()
- raise
- trans.end()
- return result
-
- cherrypy.tools.pgsql = cherrypy._cptools.HandlerWrapperTool(PgSQLWrapper)
-
-Configuration
-=============
-
-The default arrangement of CherryPy handlers is a tree. This enables a very
-powerful configuration technique: config can be attached to a node in the tree
-and cascade down to all children of that node. Since the mapping of URI's to
-handlers is not always 1:1, this provides a flexibility which is not as easily
-definable in other, flatter arrangements.
-
-However, because the arrangement of config is directly related to the
-arrangement of handlers, it is the responsibility of the Dispatcher to collect
-per-handler config, merge it with per-URI and global config, and bind the
-resulting dict to :attr:`cherrypy.request.config <cherrypy._cprequest.Request.config>`.
-This dict is of depth 1 and will contain all config entries which are in
-effect for the current request.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/concepts/engine.rst b/vendor/CherryPy-3.2.0/sphinx/source/concepts/engine.rst
deleted file mode 100644
index ac92534..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/concepts/engine.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-*******************
-The CherryPy Engine
-*******************
-
-The :class:`cherrypy.engine<cherrypy.process.wspbus.Bus>` object contains and
-manages site-wide behavior: daemonization, HTTP server start/stop, process
-reload, signal handling, drop privileges, PID file management, logging for
-all of these, and many more.
-
-Any task that needs to happen outside of the request process is managed by
-the Engine via *Plugins*. You can add your own site-wide
-behaviors, too; see :doc:`/progguide/extending/customplugins`. The Engine
-handles these tasks whether you start your site from a script, from an external
-server process like Apache, or via :doc:`cherryd</deployguide/cherryd>`.
-
-State Management
-================
-
-The Engine manages the *state* of the site. Engine methods like
-:func:`cherrypy.engine.start<cherrypy.process.wspbus.start>` move it
-from one state to another::
-
- O
- |
- V
- STOPPING --> STOPPED --> EXITING -> X
- A A |
- | \___ |
- | \ |
- | V V
- STARTED <-- STARTING
-
-Note in particular that the Engine allows you to stop and restart it again
-without stopping the process. This can be used to build highly dynamic sites,
-and is invaluable for debugging live servers.
-
-.. _channels:
-
-Channels
-========
-
-The Engine uses topic-based publish-subscribe messaging to manage event-driven
-behaviors like autoreload and daemonization. When the Engine moves from one
-state to another, it *publishes* a message on a *channel* named after the
-activity. For example, when you call
-:func:`cherrypy.engine.start<cherrypy.process.wspbus.start>`, the Engine
-moves from the STOPPED state to the STARTING state, publishes a message on
-the "start" *channel*, and then moves to the STARTED state.
-
-.. _plugins:
-
-Plugins
-=======
-
-Engine Plugins package up channel listeners into easy-to-use components.
-
-Engine Plugins have a :func:`subscribe<cherrypy.process.plugins.SimplePlugin.subscribe>`
-method which you can use to "turn them on"; that is, they will start listening
-for messages published on event channels. For example, to turn on PID file
-management::
-
- from cherrypy.process.plugins import PIDFile
- p = PIDFile(cherrypy.engine, "/var/run/myapp.pid")
- p.subscribe()
-
-If you want to turn off a plugin, call ``p.unsubscribe()``.
-
-The following builtin plugins are subscribed by default:
-
- * :doc:`Timeout Monitor</progguide/responsetimeouts>`
- * :class:`Autoreloader<cherrypy.process.plugins.Autoreloader>` (off in the "production" :ref:`environment<environments>`)
- * :class:`cherrypy.server<cherrypy._cpserver.Server>`
- * :class:`cherrypy.checker<cherrypy._cpchecker.Checker>`
- * Engine log messages go to :class:`cherrypy.log<cherrypy._GlobalLogManager>`.
- * A :class:`Signal Handler<cherrypy.process.plugins.SignalHandler>`.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/concepts/exposing.rst b/vendor/CherryPy-3.2.0/sphinx/source/concepts/exposing.rst
deleted file mode 100644
index bab4c67..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/concepts/exposing.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-********
-Exposing
-********
-
-Any object that is attached to the root object is traversible via the internal
-URL-to-object mapping routine. However, it does not mean that the object itself
-is directly accessible via the Web. For this to happen, the object has to be
-**exposed**.
-
-Exposing objects
-----------------
-
-CherryPy maps URL requests to objects and invokes the suitable callable
-automatically. The callables that can be invoked as a result of external
-requests are said to be **exposed**.
-
-Objects are **exposed** in CherryPy by setting the ``exposed`` attribute.
-Most often, a method on an object is the callable that is to be invoked. In
-this case, one can directly set the exposed attribute::
-
- class Root:
- def index(self):
- ...
- index.exposed = True
-
-
-or use a decorator::
-
- @cherrypy.expose
- def index(self):
- ...
-
-
-When it is a special method, such as ``__call__``, that is to be invoked,
-the exposed attribute must be set on the class itself::
-
- class Node:
- exposed = True
- def __call__(self):
- ...
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/concepts/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/concepts/index.rst
deleted file mode 100644
index 128b934..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/concepts/index.rst
+++ /dev/null
@@ -1,57 +0,0 @@
-*********************
-Tutorial and Concepts
-*********************
-
-What is this tutorial about?
-============================
-
-This tutorial covers the basic steps for a newcomer to come to grips with
-CherryPy's unique approach to web application development. After following
-this tutorial, you will be able to understand how CherryPy
-applications work, and also to implement simple but yet powerful applications
-on your own. Some knowledge of the Python programming language is assumed.
-One does not need to be an expert to work with CherryPy, but a good
-understanding of object-oriented basics is strongly recommended.
-
-This tutorial only covers the basic features of CherryPy, but it tries to
-present them in a way that makes it easier for you to discover how to
-use them. The CherryPy distribution comes with several good tutorial applications;
-however, the best way to master CherryPy is to use it to write your own
-Web applications. The embedded web server makes it easy for anyone not only
-to try, but also to deploy local applications, or even small Internet-enabled
-web sites. Try it, and let us know what you did with it!
-
-Knowledge required
-------------------
-
-It is assumed that the user has:
-
- * Some knowledge of the Python programming language
- * Some experience with basic object oriented programming
- * Some knowledge of HTML, which is necessary to build the Web pages
-
-Learning Python
----------------
-
-As stated above, this is not a guide to the Python language. There are plenty of
-good resources for those learning Python (just to name a few among the best:
-`Python course in Bioinformatics <http://www.pasteur.fr/recherche/unites/sis/formation/python/>`_,
-`A Byte Of Python <http://www.byteofpython.info/>`_ and
-`Dive into Python <http://www.diveintopython.org/>`_).
-The `official Python website <http://www.python.org>`_ lists some good
-resources, including an excellent
-`tutorial <http://docs.python.org/tut/tut.html>`_.
-
-Start the Tutorial
-==================
-
-.. toctree::
- :maxdepth: 2
-
- basics
- exposing
- dispatching
- config
- tools
- engine
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/concepts/tools.rst b/vendor/CherryPy-3.2.0/sphinx/source/concepts/tools.rst
deleted file mode 100644
index 9076b77..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/concepts/tools.rst
+++ /dev/null
@@ -1,105 +0,0 @@
-*****
-Tools
-*****
-
-CherryPy core is extremely light and clean. It contains only the necessary
-features to support the HTTP protocol and to call the correct object for
-each request. Additional request-time features can be added to it using
-**modular tools**.
-
-Tools are a great way to package up behavior that happens outside your page
-handlers. A tool is an object that has a chance to work on a request as it
-goes through the usual CherryPy processing stages, both before and after it
-gets to your handler. Several tools are provided
-as part of the standard CherryPy library, available in
-:mod:`cherrypy.tools <cherrypy._cptools>`. See :doc:`/progguide/builtintools`.
-
-Tools provide a lot of flexibility. Different tools can be applied to different
-parts of the site, and the order of tools can be changed. The user can write
-custom tools for special applications, changing the behavior of CherryPy
-without the need to change its internals.
-See :doc:`/progguide/extending/customtools`.
-
-Using Tools
-===========
-
-Config Files
-------------
-
-You can turn on Tools in config, whether a file or a dict.
-For example, you can add static directory serving with the builtin
-``staticdir`` tool with just a few lines in your config file::
-
- [/docroot]
- tools.staticdir.on: True
- tools.staticdir.root: "/path/to/app"
- tools.staticdir.dir: 'static'
-
-This turns on the ``staticdir`` tool for all *URLs* that start with "/docroot".
-
-_cp_config
-----------
-
-You can also enable and configure tools *per controller* or *per handler*
-using :ref:`_cp_config <cp_config>`::
-
- class docroot(object):
-
- _cp_config = {'tools.staticdir.on': True,
- 'tools.staticdir.root: "/path/to/app",
- 'tools.staticdir.dir': 'static'}
-
-Decorators
-----------
-
-But we can do even better by using the **builtin decorator support** that all
-Tools have::
-
- class docroot(object):
-
- @tools.staticdir(root="/path/to/app", dir='static')
- def page(self):
- # ...
-
-
-Page Handlers
--------------
-
-...and in this case, we can do even **better** because tools.staticdir is a
-:class:`HandlerTool <cherrypy._cptools.HandlerTool>`, and therefore can be
-used directly as a page handler::
-
- class docroot(object):
-
- static = tools.staticdir.handler(
- section='static', root="/path/to/app", dir='static')
-
-Direct invocation
------------------
-
-Finally, you can use (most) Tools directly, by calling the function they wrap.
-They expose this via the 'callable' attribute::
-
- def page(self):
- tools.response_headers.callable([('Content-Language', 'fr')])
- return "Bonjour, le Monde!"
- page.exposed = True
-
-help(Tool)
-==========
-
-Because the underlying function is wrapped in a tool, you need to call
-``help(tools.whatevertool.callable)`` if you want the docstring for it.
-Using ``help(tools.whatevertool)`` will give you help on how to use it
-as a Tool (for example, as a decorator).
-
-Tools also are also **inspectable** automatically. They expose their own
-arguments as attributes::
-
- >>> dir(cherrypy.tools.session_auth)
- [..., 'anonymous', 'callable', 'check_username_and_password',
- 'do_check', 'do_login', 'do_logout', 'handler', 'login_screen',
- 'on_check', 'on_login', 'on_logout', 'run', 'session_key']
-
-This makes IDE calltips especially useful, even when writing config files!
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/conf.py b/vendor/CherryPy-3.2.0/sphinx/source/conf.py
deleted file mode 100644
index a8da54e..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/conf.py
+++ /dev/null
@@ -1,213 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# CherryPy documentation build configuration file, created by
-# sphinx-quickstart on Sat Feb 20 09:18:03 2010.
-#
-# 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.append(os.path.abspath('.'))
-
-# -- General configuration -----------------------------------------------------
-
-# 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.todo', 'sphinx.ext.intersphinx']
-intersphinx_mapping = {'http://www.python.org/doc/2.6.4': None}
-
-# 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'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'CherryPy'
-copyright = u'2010, CherryPy Team'
-
-# 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.
-import sys
-sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../'))
-import cherrypy
-version = cherrypy.__version__
-# The full version, including alpha/beta/rc tags.
-release = cherrypy.__version__
-
-# 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 documents that shouldn't be included in the build.
-#unused_docs = []
-
-# List of directories, relative to source directory, that shouldn't be searched
-# for source files.
-exclude_trees = []
-
-# 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. Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-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 = {
- "relbarbgcolor": "#880000",
- "relbartextcolor": "white",
- "relbarlinkcolor": "#FFEEEE",
- "sidebarbgcolor": "#880000",
- "sidebartextcolor": "white",
- "sidebarlinkcolor": "#FFEEEE",
- "headbgcolor": "#FFF8FB",
- "headtextcolor": "black",
- "headlinkcolor": "#660000",
- "footerbgcolor": "#880000",
- "footertextcolor": "white",
- "codebgcolor": "#FFEEEE",
-}
-
-# 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']
-
-html_style = 'cpdocmain.css'
-
-# 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_use_modindex = 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, 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 = ''
-
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'CherryPydoc'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
-
-# The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
- ('index', 'CherryPy.tex', u'CherryPy Documentation',
- u'CherryPy Team', '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
-
-# Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_use_modindex = True
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/deployguide/apache.rst b/vendor/CherryPy-3.2.0/sphinx/source/deployguide/apache.rst
deleted file mode 100644
index 9d9aa78..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/deployguide/apache.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-********************************
-Deploying CherryPy behind Apache
-********************************
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/deployguide/cherryd.rst b/vendor/CherryPy-3.2.0/sphinx/source/deployguide/cherryd.rst
deleted file mode 100644
index bca1839..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/deployguide/cherryd.rst
+++ /dev/null
@@ -1,56 +0,0 @@
-*******
-cherryd
-*******
-
-The ``cherryd`` script is used to start CherryPy servers, whether the builtin
-WSGI server, :ref:`FastCGI <fastcgi>`, or SCGI. Sites using mod_python don't
-need to use ``cherryd``; Apache will spawn the CherryPy process in that case.
-
-Command-Line Options
-====================
-
-.. program:: cherryd
-
-.. cmdoption:: -c, --config
-
- Specify config file(s)
-
-.. cmdoption:: -d
-
- Run the server as a daemon
-
-.. cmdoption:: -e, --environment
-
- Apply the given config environment (defaults to None)
-
-
-.. index:: FastCGI
-
-.. cmdoption:: -f
-
- Start a :ref:`FastCGI <fastcgi>` server instead of the default HTTP server
-
-
-.. index:: SCGI
-
-.. cmdoption:: -s
-
- Start a SCGI server instead of the default HTTP server
-
-
-.. cmdoption:: -i, --import
-
- Specify modules to import
-
-
-.. index:: PID file
-
-.. cmdoption:: -p, --pidfile
-
- Store the process id in the given file (defaults to None)
-
-
-.. cmdoption:: -P, --Path
-
- Add the given paths to sys.path
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/deployguide/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/deployguide/index.rst
deleted file mode 100644
index ab4d922..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/deployguide/index.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-****************
-Deployment Guide
-****************
-
-Servers
-=======
-
-.. toctree::
- :maxdepth: 2
-
- apache
- /refman/process/servers
- /refman/wsgiserver/init
-
-
-Environment
-===========
-
-.. toctree::
- :maxdepth: 2
-
- cherryd
- /refman/process/plugins/daemonizer
- /refman/process/plugins/dropprivileges
- /refman/process/plugins/pidfile
- /refman/process/plugins/signalhandler
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/index.rst
deleted file mode 100644
index 1f07e26..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/index.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-.. toctree::
- :hidden:
-
- intro/index
- concepts/index
- progguide/index
- deployguide/index
- refman/index
- appendix/index
-
-
-********************************
-CherryPy |release| Documentation
-********************************
-
-Sections
-========
-
-:doc:`Introduction <intro/index>`
----------------------------------
-*The who, what, and why of CherryPy*
-
-:doc:`Concepts <concepts/index>`
----------------------------------
-*The basics of CherryPy*
-
-:doc:`Programmer's Guide <progguide/index>`
--------------------------------------------
-*How to perform common tasks*
-
-:doc:`Deployment Guide <deployguide/index>`
--------------------------------------------
-*Getting your application running and on the web*
-
-:doc:`Reference Manual <refman/index>`
---------------------------------------
-*Module, class, and function reference*
-
-:doc:`Appendix <appendix/index>`
---------------------------------
-
-:ref:`genindex`
-
-:ref:`modindex`
-
-:ref:`search`
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/intro/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/intro/index.rst
deleted file mode 100644
index 678ee69..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/intro/index.rst
+++ /dev/null
@@ -1,77 +0,0 @@
-************
-Introduction
-************
-
-What is CherryPy?
-=================
-
-CherryPy is a pythonic, object-oriented HTTP framework.
-
-CherryPy allows developers to build web applications in much the same way they
-would build any other object-oriented Python program. This results in smaller
-source code developed in less time.
-
-CherryPy does its best to stay out of the way between the programmer and the
-problem. It works out of the box; default behavior is sensible enough to allow
-use without extensive setup or customization. However, its configuration
-and plugin systems are more than enough to easily build and deploy complex
-sites.
-
-You are free to use any kind of templating, data access etc. technology
-you want. CherryPy also has built-in tools for sessions, static files, cookies,
-file uploads, caching, encoding, authorization, compression, and many more.
-
-The production-ready, HTTP/1.1-compliant web server allows you to deploy
-web applications anywhere Python is installed. It also supports any other
-WSGI-enabled webserver or adapter, including Apache, IIS, lighttpd, mod_python,
-FastCGI, SCGI, and mod_wsgi, even multiple ones. And it's *fast*; typically,
-CherryPy itself takes only 1-2ms per request! It is being used in production
-by many sites, from the simplest to the most demanding.
-
-CherryPy applications run on Windows, Linux, Mac OS X and any other platform
-supporting Python 2.3 or higher.
-
-CherryPy is now more than eight years old and it is has proven very fast and
-stable. It is well tested, and includes tools for testing, profiling, and
-coverage of your own applications.
-
-Oh, and most importantly: CherryPy is fun to work with :-)
-Here's how easy it is to write "Hello World" in CherryPy::
-
- import cherrypy
-
- class HelloWorld(object):
- def index(self):
- return "Hello World!"
- index.exposed = True
-
- cherrypy.quickstart(HelloWorld())
-
-
-What CherryPy is NOT?
-=====================
-
-As an HTTP framework, CherryPy does all that is necessary to allow Python code
-to be executed when some resource (URL) is requested by the user. However:
-
- * CherryPy is not a templating language, such as PHP. CherryPy can work with
- several Python templating packages (see :doc:`/progguide/choosingtemplate`),
- but does not ship one by default.
- * CherryPy does not fill out HTML forms for you. You're free to use formencode
- or any other solution, or none at all if you're not using HTML ;)
- * CherryPy is not a database or ORM. Rather than dictate or bless a persistence
- layer to you, CherryPy allows you to choose your own.
-
-
-Contents
-========
-
-.. toctree::
- :maxdepth: 3
- :glob:
-
- whycherrypy
- install
- license
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/intro/install.rst b/vendor/CherryPy-3.2.0/sphinx/source/intro/install.rst
deleted file mode 100644
index 39dfbca..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/intro/install.rst
+++ /dev/null
@@ -1,144 +0,0 @@
-************
-Installation
-************
-
-:ref:`prerequisites`
-
-:ref:`stableversions`
-
-:ref:`developmentversions`
-
-.. _prerequisites:
-
-Prerequisites
-=============
-
-All you need is a working version of Python-2.3 or later on your computer.
-
-Get Python on Debian::
-
- $ apt-get install python python-dev
-
-
-.. _stableversions:
-
-Stable versions
-===============
-
-Download
---------
-
-You may download this version from http://download.cherrypy.org/cherrypy/3.2.0rc1/
-
-For other releases, browse our
-`download index <http://download.cherrypy.org/ download index>`_.
-
-Windows Installation
---------------------
-
-* Download the latest CherryPy release from the
- `repository <http://download.cherrypy.org/cherrypy/>`_.
- Select the file ending in ".exe"
-* Run the downloaded file.
-
-Unix/Mac Installation
----------------------
-
-* Download the latest CherryPy release from the
- `repository <http://download.cherrypy.org/cherrypy/>`_.
-* Unzip/untar the files
-* Go to the directory created by the file extraction.
-* Type "python setup.py install" to install the CherryPy module
-
-Next Steps
-----------
-
-* To run your first sample website, go to cherrypy/tutorial/ and type
- "python tut01_helloworld.py", and you'll have a running website on port 8080.
-* Open your favorite browser and point it to http://localhost:8080 to see your
- first CherryPy-served page :-)
-
-Now, you should try running some of the other tutorials found in the tutorial
-directory and look at their source code to understand how to develop a website
-with CherryPy.
-
-.. _developmentversions:
-
-Development versions
-====================
-
-CherryPy's source code is managed using `Subversion <http://subversion.tigris.org>`_,
-a source code control system.
-
-You can access our Subversion repository using your favorite Subversion client
-at http://svn.cherrypy.org
-
-For Windows users, we recommend the wonderful Subversion client
-`TortoiseSVN <http://tortoisesvn.tigris.org/>`_. Users of other operating
-systems are advised to use multi-platform, Qt-based
-`eSVN <http://esvn.umputun.com/>`_ or the command line tools provided by the
-`core Subversion distribution <http://subversion.tigris.org/>`_.
-
-Note: In some cases http access fails with the error 'Cannot checkout' even
-though the web interface works fine. This is usually because of a proxy between
-you and the server which doesn't support all the access methods that SVN needs.
-Many ISPs insert a transparent proxy on all http traffic, causing this problem.
-The solution is to switch to https access so the proxy cannot interfere.
-
-You may also browse present and past versions of CherryPy source code,
-inspect change sets, and even follow changes to specific trees/files using
-RSS feeds. This web interface is located at http://www.cherrypy.org/browser/
-
-Usage notes
------------
-
-* The repository is open for anonymous read-only access. CherryPy developers
- have write permissions. To obtain write permission, please contact us via
- email or IRC (see http://www.cherrypy.org/wiki/CherryPyInvolved).
-* The repository follows the standard trunk/branches/tags structure that is
- recommended in the Subversion documentation:
-
- * ``trunk`` contains the official development code. Please do not checkin
- any code on trunk that is untested, or that breaks the test suite.
- * ``branches`` contain experimental branches. Patches for complex tickets
- may also be developed and tested on a branch, to allow for easier
- collaboration during test of inherently unstable features.
- * ``tags`` contain frozen, known quality releases.
-
-Configuring the Subversion client
----------------------------------
-
-Popular Subversion clients, including TortoiseSVN and the standard command line
-tools, are configurable by editing a standard ``config`` file. The file is
-stored at:
-
- * **Linux**: ``~/.subversion/config``
- * **Windows XP, 2000, NT**: ``%APPDATA%\Subversion\config``
- * **Windows 98 (and possibly ME also)**: ``\Windows\Application Data\Subversion\config``
-
-Configuration is necessary because line endings do matter for Subversion, and
-different code editors and IDEs use different conventions. This problem can be
-solved by telling Subversion to automatically map the line endings of the code
-in the repository to the conventions of your local install. The configuration
-file should contain the following entries::
-
- [miscellany]
- global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.pyc
- enable-auto-props = yes
-
- [auto-props]
- *.py = svn:eol-style=native
- README.* = svn:eol-style=CRLF
- *.TXT = svn:eol-style=CRLF
-
-The miscellany section contains two important settings: first, it tells
-Subversion to ignore pyc files (in addition to the standard files it already
-ignores); and also, it enables the auto-props section, which in turn provides
-the standard line-ending convention.
-
-Standalone WSGI server
-----------------------
-
-The WSGI server that comes bundled with CherryPy is available as a standalone
-module. Feel free to use it for all of your WSGI serving needs.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/intro/license.rst b/vendor/CherryPy-3.2.0/sphinx/source/intro/license.rst
deleted file mode 100644
index e4805eb..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/intro/license.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-**********************
-CherryPy License (BSD)
-**********************
-
-::
-
- Copyright (c) 2002-2010, CherryPy Team (team@cherrypy.org)
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the CherryPy Team nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/intro/whycherrypy.rst b/vendor/CherryPy-3.2.0/sphinx/source/intro/whycherrypy.rst
deleted file mode 100644
index eaa0146..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/intro/whycherrypy.rst
+++ /dev/null
@@ -1,102 +0,0 @@
-********************
-Why choose CherryPy?
-********************
-
-Let's face it: there are **dozens** of different Python web frameworks. Why would
-you want to choose CherryPy for your next dynamic Web project?
-
-1. Simplicity
--------------
-
-Developing with CherryPy is a simple task. "Hello, world" is only a few lines
-long, and does not require the developer to learn the entire (albeit very
-manageable) framework all at once. The framework is very pythonic; that is,
-it follows Python's conventions very nicely (code is sparse and clean).
-
-Contrast this with J2EE and Python's most popular and visible web frameworks:
-Django, Zope, Pylons, and Turbogears. In all of them, the learning curve is
-massive. In these frameworks, "Hello, world" requires the programmer to set
-up a large scaffold which spans multiple files and to type a lot of boilerplate
-code. CherryPy succeeds because it does not include the bloat of other
-frameworks, allowing the programmer to write their web application quickly
-while still maintaining a high level of organization and scalability.
-
-CherryPy is also very modular. The core is fast and clean, and extension
-features are easy to write and plug in using code or the elegant config
-system. The primary components (server, engine, request, response, etc.)
-are all extendable (even replaceable) and well-managed.
-
-In short, CherryPy empowers the developer to work with the framework,
-not against or around it.
-
-2. Power
---------
-
-CherryPy leverages all of the power of Python. Python is a dynamic language
-which allows for rapid development of applications. Python also has an
-extensive built-in API which simplifies web app development. Even more
-extensive, however, are the third-party libraries available for Python. These
-range from object-relational mappers to form libraries, to an automatic Python
-optimizer, a Windows exe generator, imaging libraries, email support, HTML
-templating engines, etc. CherryPy applications are just like regular Python
-applications. CherryPy does not stand in your way if you want to use these
-brilliant tools.
-
-CherryPy also provides Tools and Plugins, which are powerful extension points
-needed to develop world-class web applications.
-
-3. Maturity
------------
-
-Maturity is extremely important when developing a real-world application.
-Unlike many other web frameworks, CherryPy has had many final, stable releases.
-It is fully bugtested, optimized, and proven reliable for real-world use.
-The API will not suddenly change and break backwards compatibility, so your
-applications are assured to continue working even through subsequent updates
-in the current version series.
-
-CherryPy is also a "3.0" project: the first edition of CherryPy set the tone,
-the second edition made it work, and the third edition makes it beautiful.
-Each version built on lessons learned from the previous, bringing the developer
-a superior tool for the job.
-
-4. Community
-------------
-
-CherryPy has an active community that develops deployed CherryPy applications
-and are willing and ready to assist you on the CherryPy mailing list or IRC.
-The developers also frequent the list and often answer questions and implement
-features requested by the end-users.
-
-5. Deployability
-----------------
-
-Unlike many other Python web frameworks, there are cost-effective ways to
-deploy your CherryPy application.
-
-Out of the box, CherryPy includes its own production-ready HTTP server
-to host your application. If the application needs to be deployed on Apache,
-there is copious documentation discussing how to connect the two. CherryPy can
-also be deployed on any WSGI-compliant gateway (a technology for interfacing
-numerous types of web servers): mod_wsgi, FastCGI, SCGI, IIS, etc.
-
-In addition, CherryPy is pure-python and is compatible with Python 2.3. This
-means that CherryPy will run on all major platforms that Python will run on
-(Windows, MacOSX, Linux, BSD, etc).
-
-`Webfaction.com <http://www.webfaction.com>`_, run by the inventor of CherryPy,
-is a commercial web host that offers CherryPy hosting packages (in addition to
-several others).
-
-6. It's free!
--------------
-
-All of CherryPy is licensed under the open-source BSD license, which means
-**CherryPy can be used commercially for ZERO cost**.
-
-7. Where to go from here?
--------------------------
-
-Check out the :doc:`/concepts/index` and :doc:`/progguide/index` for
-more complete documentation.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/REST.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/REST.rst
deleted file mode 100644
index 2a2cf54..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/REST.rst
+++ /dev/null
@@ -1,255 +0,0 @@
-*****************************************
-Creating RESTful applications in CherryPy
-*****************************************
-
-Introduction
-============
-
-REST (Representational State Transfer) is an architectural style that
-is well-suited to implementation in CherryPy. Both REST and CherryPy
-heavily leverage the HTTP protocol but otherwise carry minimal
-requisite overhead. This chapter briefly discusses the purpose of
-REST and an example implementation in CherryPy.
-
-REST in a nutshell
-==================
-
-The REST architectural style describes how domain models and their state
-are referenced and transferred. The primary goal of REST is promote
-certain advantageous qualities of a distributed system, namely high
-visibility, scalability, extensibility.
-
-Terminology
------------
-
- - "resources" are concepual objects represented by the system - any
- information that can be named is a resource.
- - "state" is data held by or associated with resources
- - "representations" are information in state with a specific encoding
- - "methods" are invoked to transfer or mutate state.
- - an "identifier" is a URL or URI which uniquely and usually globally
- references a resource.
-
-More information on REST can be found in abundance in Wikipedia and
-other readily-available resources.
-
-Implementing REST in CherryPy
-=============================
-
-From the canonical `Roy Fielding dissertation <http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_5>`_ :
-
- REST is defined by four interface constraints: identification of resources;
- manipulation of resources through representations; self-descriptive messages;
- and, hypermedia as the engine of application state
-
-This section covers each of these four contstraints and demonstrates how each
-is applied in a CherryPy implementation.
-
-Identification of Resources
----------------------------
-
-As an HTTP service provider, resources represented in CherryPy are
-referenced by HTTP URIs (Uniform Resource Identifiers). A URI consists
-of four parts: scheme, hierarchical identifier, query, and fragment.
-For HTTP, the scheme is always ``http`` or ``https``. The hierarchical
-identifier consists of an authority (typically host/port) and a path
-(similar to a file system path, but not necessarily representing an
-actual path).
-
-A single CherryPy instance is typically bound to a single
-server/port pair, such that the scheme://authority portion of the URI
-references the server. This aspect is configured through the
-``server.socket_host`` and ``server.socket_port`` options or via another
-hosting server.
-
-Within the CherryPy server, the remainder of the hierarchical
-identifier--the path--is mapped to Python objects
-via the Dispatch mechanism. This behavior is highly
-customizable and documented in :doc:`/concepts/dispatching`.
-
-Using the default dispatcher and page handlers, the path of the URI
-maps to a hierarchy of Python identifiers in the CherryPy app. For
-example, the URI path ``/container/objects/pencil`` will result in a
-call to ``app.root.container.objects.pencil()`` where ``app`` is the
-CherryPy app.
-
-Manipulation of Resources Through Representations
--------------------------------------------------
-
-REST defines the use of the HTTP protocol and HTTP methods to implement
-the standard REST methods.
-
- - GET retrieves the state of a specific resource,
- - PUT creates or replaces the state of a specific resource,
- - POST passes information to a resource to use at it sees fit,
- - DELETE removes resources.
-
-The default dispatcher in CherryPy stores the HTTP method name at
-:attr:`cherrypy.request.method<cherrypy._cprequest.Request.method>`.
-
-Because HTTP defines these invocation methods, the most direct
-way to implement REST using CherryPy is to utilize the
-:class:`MethodDispatcher<cherrypy._cpdispatch.MethodDispatcher>`
-instead of the default dispatcher. To enable
-the method dispatcher, add the
-following to your configuration for the root URI ("/")::
-
- '/': {
- 'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
- }
-
-Now, the REST methods will map directly to the same method names on
-your resources. That is, a GET method on a CherryPy class implements
-the HTTP GET on the resource represented by that class.
-
-For example::
-
- class Resource(object):
-
- exposed = True
-
- def GET(self):
- return """Some representation of self"""
-
- def PUT(self):
- self.content = initialize_from_representation(cherrypy.request.body.read())
-
-The concrete implementation of GET and PUT has been omitted, but the
-basic concepts remain: GET returns some meaningful representation of
-the resource and PUT stores an instance of an object represented by the
-content in the body of the request.
-
-Self-Descriptive Messages
--------------------------
-
-REST enables powerful clients and intermediaries by requiring messages to be
-self-descriptive; that is, everything you need to know about a message is
-carried within the message itself, either in headers or within the definition
-of the message's declared media type.
-
-CherryPy gives you easy access to the headers. It's as simple as
-:attr:`cherrypy.request.headers<cherrypy._cprequest.Request.headers>` and
-:attr:`cherrypy.response.headers<cherrypy._cprequest.Response.headers>`!
-Each is a normal Python dictionary which you can read and write as you like.
-They also have additional functions to help you parse complex values according
-to the HTTP spec.
-
-CherryPy also allows you to set whatever response Content-Type you prefer,
-just like any other response header. You have complete control. When reading
-request entities, you can register :ref:`custombodyprocessors` for different
-media types.
-
-Hypermedia as the Engine of Application State
----------------------------------------------
-
-REST is designed as a stateless protocol--all application state is
-maintained with the application at the client. Thus, concepts such as a
-"session" need not be maintained by the server. CherryPy does not enable
-sessions by default, so it is well-suited to the RESTful style.
-
-In order for the client to maintain meaningful state, however, the REST
-server implementer must provide meaningful URIs which supply semantic
-links between resources.
-
-For example, a CherryPy application might have a resource index, which
-a client might retrieve to inspect the application for other resources::
-
- class ResourceIndex(object):
- def GET(self):
- items = [item.get_href() for item in self.get_all_items()]
- return ', '.join(items)
-
-This very simple example demonstrates how to create an index of
-comma-separated hypertext references. This example assumes the client
-can effectively interpret comma-separated references. In practice,
-another representation such as HTML or JSON might be used.
-
-A Quick Example
-===============
-
-For example, consider the following contrived REST+HTML specification.
-
-1. Resources store arbitrary key/value pairs with unique keys
- (represented as a Python dict).
-
-2. A GET request returns colon-separated key/value pairs in ``<div>``
- elements.
-
-3. A PUT request accepts colon-separated key/value pairs in ``<div>``
- elements.
-
-4. An index resource provides an HTML anchor tag (hypertext link) to objects
- which it indexes (where the keys represent the names and the values
- represent the link).
-
-A REST+HTML implementation was chosen for this example as HTML defines
-relative links, which keeps the example simple yet functional.
-
-Complete Example
-----------------
-
-Brining the above code samples together and adding some basic
-configuration results in the following program, which can be run
-directly::
-
- import cherrypy
-
- class Resource(object):
-
- def __init__(self, content):
- self.content = content
-
- exposed = True
-
- def GET(self):
- return self.to_html()
-
- def PUT(self):
- self.content = self.from_html(cherrypy.request.body.read())
-
- def to_html(self):
- html_item = lambda (name,value): '<div>{name}:{value}</div>'.format(\*\*vars())
- items = map(html_item, self.content.items())
- items = ''.join(items)
- return '<html>{items}</html>'.format(**vars())
-
- @staticmethod
- def from_html(data):
- pattern = re.compile(r'\<div\>(?P<name>.*?)\:(?P<value>.*?)\</div\>')
- items = [match.groups() for match in pattern.finditer(data)]
- return dict(items)
-
- class ResourceIndex(Resource):
- def to_html(self):
- html_item = lambda (name,value): '<div><a href="{value}">{name}</a></div>'.format(\*\*vars())
- items = map(html_item, self.content.items())
- items = ''.join(items)
- return '<html>{items}</html>'.format(**vars())
-
- class Root(object):
- pass
-
- root = Root()
-
- root.sidewinder = Resource({'color': 'red', 'weight': 176, 'type': 'stable'})
- root.teebird = Resource({'color': 'green', 'weight': 173, 'type': 'overstable'})
- root.blowfly = Resource({'color': 'purple', 'weight': 169, 'type': 'putter'})
- root.resource_index = ResourceIndex({'sidewinder': 'sidewinder', 'teebird': 'teebird', 'blowfly': 'blowfly'})
-
- conf = {
- 'global': {
- 'server.socket_host': '0.0.0.0',
- 'server.socket_port': 8000,
- },
- '/': {
- 'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
- }
- }
-
- cherrypy.quickstart(root, '/', conf)
-
-Conclusion
-==========
-
-CherryPy provides a straightforward interface for readily creating
-RESTful interfaces.
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/choosingtemplate.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/choosingtemplate.rst
deleted file mode 100644
index 8cfd563..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/choosingtemplate.rst
+++ /dev/null
@@ -1,151 +0,0 @@
-******************************
-Choosing a templating language
-******************************
-
-CherryPy is an open-ended HTTP framework that integrates with a wide variety of
-templating systems. So the first point we want to make is that you should do
-your own study *with your own data* to find out which one is best for you.
-
-That said, we recommend you start with one of these three:
-
-`Mako <http://www.makotemplates.org/>`_
-=======================================
-
-Mako is a template library written in Python. It provides a familiar, non-XML
-syntax which compiles into Python modules for maximum performance. Mako's syntax
-and API borrows from the best ideas of many others, including Django templates,
-Cheetah, Myghty, and Genshi. Conceptually, Mako is an embedded Python (i.e.
-Python Server Page) language, which refines the familiar ideas of componentized
-layout and inheritance to produce one of the most straightforward and flexible
-models available, while also maintaining close ties to Python calling and
-scoping semantics.
-
-Mako snippet::
-
- <table>
- % for row in rows:
- ${makerow(row)}
- % endfor
- </table>
-
-
-CherryPy integration example::
-
- import cherrypy
- from mako.template import Template
- from mako.lookup import TemplateLookup
- lookup = TemplateLookup(directories=['html'])
-
- class Root:
- @cherrypy.expose
- def index(self):
- tmpl = lookup.get_template("index.html")
- return tmpl.render(salutation="Hello", target="World")
-
-
-`Jinja2 <http://jinja.pocoo.org/2/>`_
-=====================================
-
-Jinja2 is a library for Python 2.4 and onwards that is designed to be flexible,
-fast and secure. If you have any exposure to other text-based template languages,
-such as Smarty or Django, you should feel right at home with Jinja2. It’s both
-designer and developer friendly by sticking to Python’s principles and adding
-functionality useful for templating environments.
-
-The key-features are...
-
- * ... configurable syntax. If you are generating LaTeX or other formats with
- Jinja2 you can change the delimiters to something that integrates better
- into the LaTeX markup.
- * ... fast. While performance is not the primarily target of Jinja2 it’s
- surprisingly fast. The overhead compared to regular Python code was reduced
- to the very minimum.
- * ... easy to debug. Jinja2 integrates directly into the python traceback
- system which allows you to debug Jinja2 templates with regular python
- debugging helpers.
- * ... secure. It’s possible to evaluate untrusted template code if the optional
- sandbox is enabled. This allows Jinja2 to be used as templating language for
- applications where users may modify the template design.
-
-Jinja2 snippet::
-
- <ul id="navigation">
- {% for item in navigation %}
- <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
- {% endfor %}
- </ul>
-
-
-CherryPy integration example::
-
- import cherrypy
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates'))
-
- class Root:
- @cherrypy.expose
- def index(self):
- tmpl = env.get_template('index.html')
- return tmpl.render(salutation='Hello', target='World')
-
-
-`Genshi <http://genshi.edgewall.org>`_
-=======================================
-
-Genshi is a Python library that provides an integrated set of components for
-parsing, generating, and processing HTML, XML or other textual content for
-output generation on the web.
-
-The main feature is a template language that is smart about markup: unlike
-conventional template languages that only deal with bytes and (if you're lucky)
-characters, Genshi knows the difference between tags, attributes, and actual
-text nodes, and uses that knowledge to your advantage.
-
-Plain XHTML templates make Genshi easy to use even for web designers who don't
-know Python. Do you know XHTML? Then you're 75% of the way there! It's
-considered by many to be the successor to Kid.
-
-See the `Genshi tutorial <http://tools.cherrypy.org/wiki/Genshi>`_.
-
-Because it parses HTML/XML, it can be slower than other solutions.
-See `Genshi performance <http://genshi.edgewall.org/wiki/GenshiPerformance>`_
-for more information.
-
-Genshi snippet::
-
- <ol py:if="links">
- <li py:for="link in links">
- <a href="${link.url}">${link.title}</a>
- posted by ${link.username} at ${link.time.strftime('%x %X')}
- </li>
- </ol>
-
-CherryPy integration example::
-
- import cherrypy
- from genshi.template import TemplateLoader
- loader = TemplateLoader('/path/to/templates', auto_reload=True)
-
- class Root:
- @cherrypy.expose
- def index(self):
- tmpl = loader.load('index.html')
- page = tmpl.generate(salutation='Hello', target='World')
- return page.render('html', doctype='html')
-
-
-Others
-======
-
- * Cheetah
- * ClearSilver
- * Kid
- * HTMLTemplate
- * Nevow
- * PSP
- * PyMeld
- * py.xml
- * XSLT
- * Xyaptu
- * ZPT
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/cookies.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/cookies.rst
deleted file mode 100644
index afb218a..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/cookies.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-********************************
-How to use cookies with CherryPy
-********************************
-
-CherryPy uses the :mod:`Cookie` module from python and in particular the
-:class:`Cookie.SimpleCookie` object type to handle cookies.
-
-* To send a cookie to a browser, set ``cherrypy.response.cookie[key] = value``.
-* To retrieve a cookie sent by a browser, use ``cherrypy.request.cookie[key]``.
-* To delete a cookie (on the client side), you must *send* the cookie with its
- expiration time set to 0::
-
-
- cherrypy.response.cookie[key] = value
- cherrypy.response.cookie[key]['expires'] = 0
-
-
-It's important to understand that the request cookies are **not** automatically
-copied to the response cookies. Clients will send the same cookies on every
-request, and therefore ``cherrypy.request.cookie`` should be populated each
-time. But the server doesn't need to send the same cookies with every response;
-therefore, **``cherrypy.response.cookie`` will usually be empty**. When you wish
-to "delete" (expire) a cookie, therefore, you must set
-``cherrypy.response.cookie[key] = value`` first, and then set its ``expires``
-attribute to 0.
-
-Extended example::
-
- import cherrypy
-
- class Root:
- def setCookie(self):
- cookie = cherrypy.response.cookie
- cookie['cookieName'] = 'cookieValue'
- cookie['cookieName']['path'] = '/'
- cookie['cookieName']['max-age'] = 3600
- cookie['cookieName']['version'] = 1
- return "<html><body>Hello, I just sent you a cookie</body></html>"
- setCookie.exposed = True
-
- def readCookie(self):
- cookie = cherrypy.request.cookie
- res = """<html><body>Hi, you sent me %s cookies.<br />
- Here is a list of cookie names/values:<br />""" % len(cookie)
- for name in cookie.keys():
- res += "name: %s, value: %s<br>" % (name, cookie[name].value)
- return res + "</body></html>"
- readCookie.exposed = True
-
- cherrypy.quickstart(Root())
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/cpreturn.gif b/vendor/CherryPy-3.2.0/sphinx/source/progguide/cpreturn.gif
deleted file mode 100644
index 074ea3c..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/cpreturn.gif
+++ /dev/null
Binary files differ
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/cpyield.gif b/vendor/CherryPy-3.2.0/sphinx/source/progguide/cpyield.gif
deleted file mode 100644
index e07c50a..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/cpyield.gif
+++ /dev/null
Binary files differ
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/customheaders.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/customheaders.rst
deleted file mode 100644
index 51802dc..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/customheaders.rst
+++ /dev/null
@@ -1,74 +0,0 @@
-
-Custom Response Headers
-***********************
-
-Although the ``cherrypy.response.headers`` is usually adequate for
-supplying headers in a CherryPy response, it is sometimes desirable for
-the server application to customize the order of the resultant headers
-or provide multiple headers with duplicate keys. This section describes
-how one can accomplish these tasks within the CherryPy framework.
-
-Process
-=======
-
-The CherryPy Response object maintains a dictionary of headers until the
-finalize phase, after which the headers in the dictionary are converted
-into a list of (name, value) tuples. See
-``cherrypy._cprequest.Response`` for details.
-
-Therefore, since a dictionary discards order and duplicate keys,
-customizing the order or duplicity of keys must occur after the finalize
-phase.
-
-This end can be effected using a tool bound to the ``on_end_resource``
-hook.
-
-Multiple Headers
-================
-
-The following example illustrates the creation of a multiheaders tool to
-deliver multiple headers with the same key in the response.
-
-::
-
- #python
- import cherrypy
-
- def multi_headers():
- cherrypy.response.header_list.extend(cherrypy.response.multiheaders)
-
- cherrypy.tools.multiheaders = cherrypy.Tool('on_end_resource', multi_headers)
-
- class Root(object):
- @cherrypy.expose
- @cherrypy.tools.multiheaders()
- def index(self):
- cherrypy.response.multiheaders = [('foo', '1'), ('foo', '2')]
- return "Hello"
-
- cherrypy.quickstart(Root())
-
-Header Order
-============
-
-The following example illustrates the creation of a firstheaders tool to
-deliver headers in a specified order (at the beginning) in the response.
-
-::
-
- #python
- import cherrypy
-
- def first_headers():
- cherrypy.response.header_list[:0] = cherrypy.response.first_headers
-
- cherrypy.tools.firstheaders = cherrypy.Tool('on_end_resource', first_headers)
-
- class Root(object):
- @cherrypy.expose
- @cherrypy.tools.firstheaders()
- def index(self):
- cherrypy.response.first_headers = [('foo', '1'), ('foo', '2')]
- return "Hello"
-
- cherrypy.quickstart(Root())
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customplugins.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customplugins.rst
deleted file mode 100644
index 609f5c5..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customplugins.rst
+++ /dev/null
@@ -1,131 +0,0 @@
-**************
-Custom Plugins
-**************
-
-CherryPy allows you to extend startup, shutdown, and other behavior outside the
-request process via *Listeners* and *Plugins*. The
-:class:`cherrypy.engine<cherrypy.process.wspbus.Bus>` object controls
-these behaviors; to extend them, you subscribe listeners to the engine.
-These allow you to run functions at a particular point in the
-*site* process; for the *request* process, see :doc:`customtools` instead.
-
-Listeners
-=========
-
-The engine is a publish-subscribe service; event handlers publish to various
-*channels*, like "start", "stop", "exit", "graceful", or "log", and both
-CherryPy and you can subscribe *listeners* for those messages::
-
- engine.subscribe(channel, callback[, priority])
-
-channel
--------
-
-The channel is an event name:
-
- * start: the Engine is starting for the first time, or has been stopped and is
- now restarting; listeners here should start up sockets, files, or other
- services and not return until they are ready to be used by clients or
- other parts of the site.
- * stop: the Engine is stopping; plugins should cleanly stop what they are
- doing and not return until they have finished cleaning up. This is called
- by :func:`cherrypy.engine.stop<cherrypy.process.wspbus.Bus.stop>`, and
- plugins should make every effort to stop and clean up in a fashion that
- permits them to be restarted via a "start" listener.
- * graceful: advises all listeners to reload, e.g. by closing any open files
- and reopening them.
- * exit: this is called by
- :func:`cherrypy.engine.exit<cherrypy.process.wspbus.Bus.exit>`,
- and advises plugins to prepare for process termination. Note that
- :func:`cherrypy.engine.exit<cherrypy.process.wspbus.Bus.exit>` first calls
- :func:`cherrypy.engine.stop<cherrypy.process.wspbus.Bus.stop>`, so Plugins
- may expect to stop first, then exit in a separate step.
- * log(msg, level): in general, :class:`cherrypy.log<cherrypy._cplogging.LogManager>`
- listens on this channel. Plugins, however, should make every effort to
- publish to this channel verbosely to aid process event debugging. See the
- builtin Plugins for good examples.
- * main: New in 3.2. All Engine tasks run in threads other than the main thread;
- the main thread usually calls
- :func:`cherrypy.engine.block<cherrypy.process.wspbus.Bus.block>` to wait
- for KeyboardInterrupt and other signals. While blocked, it loops
- (every 1/10th of a second, by default), and publishes a message on the
- "main" channel each time. Listeners subscribed to this channel, therefore,
- are called at every interval.
-
-callback
---------
-
-The functionality you wish to run; this can be any function, class, or other
-callable. Each channel defines the arguments; currently, however, only the "log"
-channel defines any ('msg', the string message to log, and 'level', an int
-following the levels defined in the stdlib's :mod:`logging <logging>` module).
-
-priority
---------
-
-The optional priority (0 - 100) allows multiple listeners to run in the correct
-order. Lower numbers run first. The default is 50.
-
-If you omit the priority argument to engine.subscribe (or pass ``None``),
-you can instead set it as an attribute on the callback function::
-
- def setup_db():
- ....
- setup_db.priority = 90
- engine.subscribe('start', setup_db)
-
-
-Plugins
-=======
-
-You can manually subscribe bus listeners, but you probably shouldn't.
-*Plugins* allow your function to be subscribed and configured both
-via the CherryPy config system and via the Plugin itself. Plugins also allow
-you to write a single class that listens on multiple channels.
-
-Most of the built-in plugins have their own ``subscribe`` method,
-so that instead of writing ``engine.subscribe``, you write:
-``p = Plugin(engine).subscribe()``. If you want to turn off a plugin,
-call ``p.unsubscribe()``. The plugin already knows the correct channel,
-callback, and priority.
-
-You can run arbitrary code at any of the events by creating a
-SimplePlugin object, with one method for each *channel* you wish to handle::
-
- class ScratchDB(plugins.SimplePlugin):
-
- def start(self):
- self.fname = 'myapp_%d.db' % os.getpid()
- self.db = sqlite.connect(database=self.fname)
- start.priority = 80
-
- def stop(self):
- self.db.close()
- os.remove(self.fname)
- cherrypy.engine.scratchdb = ScratchDB(cherrypy.engine)
-
-...then, once you've authored your Plugin, turn it on by calling its
-``subscribe`` method::
-
- cherrypy.engine.scratchdb.subscribe()
-
-...or, in CherryPy 3.2 and above, in site config::
-
- [global]
- engine.scratchdb.on = True
-
-
-Priorities of the built-in "start" listeners:
-
-====================================================================== ================
- Listener Priority
-====================================================================== ================
- default 50
- :doc:`Daemonizer </refman/process/plugins/daemonizer>` 65
- :doc:`Timeout Monitor </progguide/responsetimeouts>` 70
- :class:`Autoreloader <cherrypy.process.plugins.Autoreloader>` 70
- :doc:`PID File </refman/process/plugins/pidfile>` 70
- :doc:`HTTP Servers </refman/process/servers>` 75
- :doc:`Drop Privileges </refman/process/plugins/dropprivileges>` 77
-====================================================================== ================
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customtools.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customtools.rst
deleted file mode 100644
index 3d59a30..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/customtools.rst
+++ /dev/null
@@ -1,282 +0,0 @@
-************
-Custom Tools
-************
-
-CherryPy is an extremely capable platform for web application and framework
-development. One of the strengths of CherryPy is its modular design; CherryPy
-separates key-but-not-core functionality out into "tools". This provides two
-benefits: a slimmer, faster core system and a supported means of tying
-additional functionality into the framework.
-
-Tools can be enabled for any point of your CherryPy application: a certain
-path, a certain class, or even individual methods using the
-:ref:`_cp_config <cp_config>` dictionary. Tools can also be used as decorators
-which provide syntactic sugar for configuring a tool for a specific callable.
-See :doc:`/concepts/tools` for more information on how to use Tools.
-This document will show you how to make your own.
-
-Your First Custom Tool
-======================
-
-Let's look at a very simple authorization tool::
-
- import cherrypy
-
- def protect(users):
- if cherrypy.request.login not in users:
- raise cherrypy.HTTPError("401 Unauthorized")
-
- cherrypy.tools.protect = Tool('on_start_resource', protect)
-
-We can now enable it in the standard ways: a config file or dict passed to an
-application, a :ref:`_cp_config<cp_config>` dict on a particular class or
-callable or via use of the tool as a decorator. Here's how to turn it on in
-a config file::
-
- [/path/to/protected/resource]
- tools.protect.on = True
- tools.protect.users = ['me', 'myself', 'I']
-
-Now let's look at the example tool a bit more closely.
-Working from the bottom up, the :class:`cherrypy.Tool<cherrypy._cptools.Tool>`
-constructor takes 2 required and 2 optional arguments.
-
-point
------
-
-First, we need to declare the point in the CherryPy request/response
-handling process where we want our tool to be triggered. Different request
-attributes are obtained and set at different points in the request process.
-In this example, we'll run at the first *hook point*, called "on_start_resource".
-
-.. _hooks:
-
-Hooks
-^^^^^
-
-Tools package up *hooks*. When we created a Tool instance above, the Tool
-class registered our `protect` function to run at the 'on_start_resource'
-*hookpoint*. You can write code that runs at hookpoints without using a Tool
-to help you, but you probably shouldn't. The Tool system allows your function
-to be turned on and configured both via the CherryPy config system and via the
-Tool itself as a decorator. You can also write a Tool that runs code at multiple
-hook points.
-
-Here is a quick rundown of the "hook points" that you can hang your tools on:
-
- * on_start_resource - The earliest hook; the Request-Line and request headers
- have been processed and a dispatcher has set request.handler and request.config.
- * before_request_body - Tools that are hooked up here run right before the
- request body would be processed.
- * before_handler - Right before the request.handler (the "exposed" callable
- that was found by the dispatcher) is called.
- * before_finalize - This hook is called right after the page handler has been
- processed and before CherryPy formats the final response object. It helps
- you for example to check for what could have been returned by your page
- handler and change some headers if needed.
- * on_end_resource - Processing is complete - the response is ready to be
- returned. This doesn't always mean that the request.handler (the exposed
- page handler) has executed! It may be a generator. If your tool absolutely
- needs to run after the page handler has produced the response body, you
- need to either use on_end_request instead, or wrap the response.body in a
- generator which applies your tool as the response body is being generated
- (what a mouthful--see
- `caching tee.output <http://www.cherrypy.org/browser/trunk/cherrypy/lib/caching.py>`_
- for an example).
- * before_error_response - Called right before an error response
- (status code, body) is set.
- * after_error_response - Called right after the error response
- (status code, body) is set and just before the error response is finalized.
- * on_end_request - The request/response conversation is over, all data has
- been written to the client, nothing more to see here, move along.
-
-
-callable
---------
-
-Second, we need to provide the function that will be called back at that
-hook point. Here, we provide our ``protect`` callable. The Tool
-class will find all config entries related to our tool and pass them as
-keyword arguments to our callback. Thus, if::
-
- 'tools.protect.on' = True
- 'tools.protect.users' = ['me', 'myself', 'I']
-
-is set in the config, the users list will get passed to the Tool's callable.
-[The 'on' config entry is special; it's never passed as a keyword argument.]
-
-The tool can also be invoked as a decorator like this::
-
- @cherrypy.expose
- @cherrypy.tools.protect(users=['me', 'myself', 'I'])
- def resource(self):
- return "Hello, %s!" % cherrypy.request.login
-
-name
-----
-
-This argument is optional as long as you set the Tool onto a Toolbox. That is::
-
-
- def foo():
- cherrypy.request.foo = True
- cherrypy.tools.TOOLNAME = cherrypy.Tool('on_start_resource', foo)
-
-The above will set the 'name' arg for you (to 'TOOLNAME'). The only time you
-would need to provide this argument is if you're bypassing the toolbox in some way.
-
-priority
---------
-
-This specifies a priority order (from 0 - 100) that determines the order in
-which callbacks in the same hook point are called. The lower the priority
-number, the sooner it will run (that is, we call .sort(priority) on the list).
-The default priority for a tool is set to 50 and most built-in tools use that
-default value.
-
-Custom Toolboxes
-================
-
-All of the builtin CherryPy tools are collected into a Toolbox called
-:attr:`cherrypy.tools`. It responds to config entries in the "tools"
-:ref:`namespace<namespaces>`. You can add your own Tools to this Toolbox
-as described above.
-
-You can also make your own Toolboxes if you need more modularity. For example,
-you might create multiple Tools for working with JSON, or you might publish
-a set of Tools covering authentication and authorization from which everyone
-could benefit (hint, hint). Creating a new Toolbox is as simple as::
-
- # cpstuff/newauth.py
- import cherrypy
-
- # Create a new Toolbox.
- newauthtools = cherrypy._cptools.Toolbox("newauth")
-
- # Add a Tool to our new Toolbox.
- def check_access(default=False):
- if not getattr(cherrypy.request, "userid", default):
- raise cherrypy.HTTPError(401)
- newauthtools.check_access = cherrypy.Tool('before_request_body', check_access)
-
-Then, in your application, use it just like you would use ``cherrypy.tools``,
-with the additional step of registering your toolbox with your app.
-Note that doing so automatically registers the "newauth" config namespace;
-you can see the config entries in action below::
-
- import cherrypy
- from cpstuff import newauth
-
-
- class Root(object):
- def default(self):
- return "Hello"
- default.exposed = True
-
- conf = {'/demo': {
- 'newauth.check_access.on': True,
- 'newauth.check_access.default': True,
- }}
-
- app = cherrypy.tree.mount(Root(), config=conf)
- if hasattr(app, 'toolboxes'):
- # CherryPy 3.1+
- app.toolboxes['newauth'] = newauth.newauthtools
-
-Just the Beginning
-==================
-
-Hopefully that information is enough to get you up and running and create some
-simple but useful CherryPy tools. Much more than what you have seen in this
-tutorial is possible. Also, remember to take advantage of the fact that CherryPy
-is open source! Check out :doc:`/progguide/builtintools` and the
-:doc:`libraries</refman/lib/index>` that they are built upon.
-
-In closing, here is a slightly more complicated tool that acts as a
-"traffic meter" and triggers a callback if a certain traffic threshold is
-exceeded within a certain time frame. It should probably launch its own
-watchdog thread that actually checks the log and triggers the alerts rather
-than waiting on a request to do so, but I wanted to
-keep it simple for the purpose of example::
-
- # traffictool.py
- import time
-
- import cherrypy
-
-
- class TrafficAlert(cherrypy.Tool):
-
- def __init__(self, listclass=list):
- """Initialize the TrafficAlert Tool with the given listclass."""
-
- # A ring buffer subclass of list would probably be a more robust
- # choice than a standard Python list.
-
- self._point = "on_start_resource"
- self._name = None
- self._priority = 50
- # set the args of self.callable as attributes on self
- self._setargs()
- # a log for storing our per-path traffic data
- self._log = {}
- # a history of the last alert for a given path
- self._history = {}
- self.__doc__ = self.callable.__doc__
- self._struct = listclass
-
- def log_hit(self, path):
- """Log the time of a hit to a unique sublog for the path."""
- log = self._log.setdefault(path, self._struct())
- log.append(time.time())
-
- def last_alert(self, path):
- """Returns the time of the last alert for path."""
- return self._history.get(path, 0)
-
- def check_alert(self, path, window, threshhold, delay, callback=None):
- # set the bar
- now = time.time()
- bar = now - window
- hits = [t for t in self._log[path] if t > bar]
- num_hits = len(hits)
- if num_hits > threshhold:
- if self.last_alert(path) + delay < now:
- self._history[path] = now
- if callback:
- callback(path, window, threshhold, num_hits)
- else:
- msg = '%s - %s hits within the last %s seconds.'
- msg = msg % (path, num_hits, window)
- cherrypy.log.error(msg, 'TRAFFIC')
-
- def callable(self, window=60, threshhold=100, delay=30, callback=None):
- """Alert when traffic thresholds are exceeded.
-
- window: the time frame within which the threshhold applies
- threshhold: the number of hits within the window that will trigger
- an alert
- delay: the delay between alerts
- callback: a callback that accepts(path, window, threshhold, num_hits)
- """
-
- path = cherrypy.request.path_info
- self.log_hit(path)
- self.check_alert(path, window, threshhold, delay, callback)
-
-
- cherrypy.tools.traffic_alert = TrafficAlert()
-
- if __name__ == '__main__':
- class Root(object):
- @cherrypy.expose
- def index(self):
- return "Hi!!"
-
- @cherrypy.expose
- @cherrypy.tools.traffic_alert(threshhold=5)
- def popular(self):
- return "A popular page."
-
- cherrypy.quickstart(Root())
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/index.rst
deleted file mode 100644
index dd5fac5..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/extending/index.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-******************
-Extending CherryPy
-******************
-
-If you need to perform some work that doesn't fit in a page handler, there are
-two ways to do it depending on the scope of the task. If your code needs to run
-on each request, or for only some URL's in your application, use a Tool. If your
-code needs to run elsewhere, such as process start/stop/restart/exit, or thread
-start/stop, use an Engine Plugin.
-
-.. toctree::
-
- customtools
- customplugins
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/downloading.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/downloading.rst
deleted file mode 100644
index d431134..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/downloading.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-*****************
-Downloading files
-*****************
-
-CherryPy allows you to serve a file from your page handler. Here is a simple recipe to handle downloads::
-
-
- #!python
- import glob
- import os.path
-
- import cherrypy
- from cherrypy.lib.static import serve_file
-
-
- class Root:
- def index(self, directory="."):
- html = """<html><body><h2>Here are the files in the selected directory:</h2>
- <a href="index?directory=%s">Up</a><br />
- """ % os.path.dirname(os.path.abspath(directory))
-
- for filename in glob.glob(directory + '/*'):
- absPath = os.path.abspath(filename)
- if os.path.isdir(absPath):
- html += '<a href="/index?directory=' + absPath + '">' + os.path.basename(filename) + "</a> <br />"
- else:
- html += '<a href="/download/?filepath=' + absPath + '">' + os.path.basename(filename) + "</a> <br />"
-
- html += """</body></html>"""
- return html
- index.exposed = True
-
- class Download:
-
- def index(self, filepath):
- return serve_file(filepath, "application/x-download", "attachment")
- index.exposed = True
-
- if __name__ == '__main__':
- root = Root()
- root.download = Download()
- cherrypy.quickstart(root)
-
-
-Note that `CherryPy <http://www.cherrypy.org/wiki/CherryPy>`_ is not the fastest for doing such things. If you think you'll have many and big downloads, put CP `BehindApache <http://www.cherrypy.org/wiki/BehindApache>`_ and let Apache serve those files.
-
-
-
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/favicon.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/favicon.rst
deleted file mode 100644
index b5ffa98..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/favicon.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-*************************
-Serving the favorite icon
-*************************
-
-By default, CherryPy 3 adds a "favicon_ico" handler method to any root object
-which is mounted at "/". This is a staticfile handler, which grabs the
-favicon.ico shipped in the CherryPy distribution.
-
-To configure CherryPy to look in another file location, you can, in your server
-configuration, do the following::
-
- [/favicon.ico]
- tools.staticfile.on = True
- tools.staticfile.filename = "/path/to/favicon.ico"
-
-If you want a favicon, but don't want CherryPy to serve it, you can point to an
-HTTP URL via a link element in the HTML head. See http://www.w3.org/2005/10/howto-favicon
-and http://en.wikipedia.org/wiki/Favicon for instructions.
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/index.rst
deleted file mode 100644
index d6e39ab..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/index.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-*************
-File Handling
-*************
-
-.. toctree::
- :maxdepth: 2
- :glob:
-
- *
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/static.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/static.rst
deleted file mode 100644
index 597edc5..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/static.rst
+++ /dev/null
@@ -1,299 +0,0 @@
-Serving Static Content
-**********************
-
-Static content is now handled by ``tools.staticfile`` and ``tools.staticdir`` that can easily be enabled and configured in your config file. For instance, if you wanted to serve ``/style.css`` from ``/home/site/style.css`` and ``/static/*`` from ``/home/site/static/*``, you can use the following configuration:
-
-::
-
- [/]
- tools.staticdir.root = "/home/site"
-
- [/style.css]
- tools.staticfile.on = True
- tools.staticfile.filename = "/home/site/style.css"
-
- [/static]
- tools.staticdir.on = True
- tools.staticdir.dir = "static"
-
-
-Parameters
-==========
-
- * on: True or False (default). Enable or disable the filter.
- * match: a :mod:`regular expression <re>` of files to match.
- * filename: path to the target file.
- * dir: path to the target directory.
- * root: absolute path to a "root"; joined with .dir or .filename if they are relative paths.
-
-Usage
-=====
-
-Serving files through the ``staticfile`` tool
----------------------------------------------
-
-Directory structure
-::
-
- cpapp \
- __init__.py
- data \
- scripts \
- dummy.js
- css \
- style.css
-
-
-Here is our `cpapp/__init__.py`:
-::
-
- #!python
- import os.path
- current_dir = os.path.dirname(os.path.abspath(__file__))
-
- import cherrypy
-
-
- class Root:
- @cherrypy.expose
- def index(self):
- return """<html>
- <head>
- <title>CherryPy static example</title>
- <link rel="stylesheet" type="text/css" href="css/style.css" type="text/css"></link>
- <script type="application/javascript" src="js/some.js"></script>
- </head>
- <html>
- <body>
- <p>Static example</p>
- </body>
- </html>"""
-
-
-...and a `prod.conf` configuration file:
-
-::
-
- [global]
- environment: 'production'
- log.error_file: 'site.log'
- log.screen: True
-
- tree.cpapp: cherrypy.Application(cpapp.Root())
-
- [/css/style.css]
- tools.staticfile.on: True
- tools.staticfile.filename: cpapp.current_dir + '/data/css/style.css'
-
- [/js/some.js]
- tools.staticfile.on: True
- tools.staticfile.filename: cpapp.current_dir + '/data/scripts/dummy.js'
-
-
-Note how we use the absolute path to point at the static files. Note also that when using the ``staticfile`` tool, the logical URI path and the physical file do not need to be the same. Parts of their components can differ as in the case of the Javascript resource.
-
-You can run the above with:
-
-::
-
- $ cherryd -i cpapp -c prod.conf
-
-
-Serving files through the ``staticdir`` tool
---------------------------------------------
-
-Keeping the same directory structure as above, we could have written our config file as follows:
-
-::
-
- [/]
- tools.staticdir.root: cpapp.current_dir + 'data'
-
- [/css]
- tools.staticdir.on: True
- tools.staticdir.dir: 'css'
-
- [/js]
- tools.staticdir.on: True
- tools.staticdir.dir: 'scripts'
-
-
-However in this case the ``GET /js/some.js`` request will fail with a ``404 Not Found`` response because when using the ``staticdir`` tool the last segment of the URI must match exactly the path of the physical file underneath the directory defined by ``tools.staticdir.dir``.
-
-In our example we must either rename the physical file or change the HTML code accordingly.
-
-staticdir.index
-^^^^^^^^^^^^^^^
-
-If `tools.staticdir.index` is provided, it should be the (relative) name of a file to serve for directory requests. For example, if the `staticdir.dir` argument is '/home/me', the Request-URI is 'myapp', and the `.index` arg is 'index.html', the file '/home/me/myapp/index.html' will be served.
-
-Specify the content-type of static resource
--------------------------------------------
-
-Both the ``staticfile`` and ``staticdir`` tool allow you to specify the mime type of resources by their extension.
-Although internally CherryPy will most of the time guess the correct mime type (using the Python :mod:`mimetypes` module),
-there may be cases when you need to provide the content type values. You can do this via configuration arguments
-``tools.staticdir.content_types`` and ``tools.staticfile.content_types``, as in the following example.
-
-::
-
- #!python
- import os.path
- import cherrypy
-
- class Root:
- @cherrypy.expose
- def index(self):
- return """<html>
- <head>
- <title>CherryPy static tutorial</title>
- </head>
- <html>
- <body>
- <a href="feed/notes.rss">RSS 2.0</a>
- <br />
- <a href="feed/notes.atom">Atom 1.0</a>
- </body>
- </html>"""
-
- if __name__ == '__main__':
- current_dir = os.path.dirname(os.path.abspath(__file__))
- # Set up site-wide config first so we get a log if errors occur.
- cherrypy.config.update({'environment': 'production',
- 'log.error_file': 'site.log',
- 'log.screen': True})
-
- conf = {'/feed': {'tools.staticdir.on': True,
- 'tools.staticdir.dir': os.path.join(current_dir, 'feeds'),
- 'tools.staticdir.content_types': {'rss': 'application/xml',
- 'atom': 'application/atom+xml'}}}
- cherrypy.quickstart(Root(), '/', config=conf)
-
-
-The value of ``tools.staticdir.content_types`` and ``tools.staticfile.content_types``
-is a dictionary whose keys are filename extensions, and values are the corresponding
-media-type strings (for the ``Content-Type`` header). Note that the key must NOT include any leading '.'.
-
-Serve static content from a page handler bypassing the static tools
--------------------------------------------------------------------
-
-It may happen that you would need the static tools power but from a page handler itself so that you can add more processing. You can do so by calling the ``serve_file`` function.
-
-::
-
- #!python
- import os.path
- import cherrypy
- from cherrypy.lib.static import serve_file
-
- class Root:
- @cherrypy.expose
- def feed(self, name):
- accepts = cherrypy.request.headers.elements('Accept')
-
- for accept in accepts:
- if accept.value == 'application/atom+xml':
- return serve_file(os.path.join(current_dir, 'feeds', '%s.atom' % name),
- content_type='application/atom+xml')
-
- return serve_file(os.path.join(current_dir, 'feeds', '%s.rss' % name),
- content_type='application/xml')
-
- if __name__ == '__main__':
- current_dir = os.path.dirname(os.path.abspath(__file__))
- # Set up site-wide config first so we get a log if errors occur.
- cherrypy.config.update({'environment': 'production',
- 'log.error_file': 'site.log',
- 'log.screen': True})
- cherrypy.quickstart(Root(), '/')
-
-
-In this example we rely on the Accept header of the HTTP request to tell us which content type is supported by the client. If it can process the Atom content type then we serve the Atom resource, otherwise we serve the RSS one.
-
-In any case by using the serve_file function we benefit from the CherryPy internal processing of the request in regards of HTTP headers such as If-Modified-Since. In fact the static tools use the serve_file function.
-
-Troubleshooting staticdir
-=========================
-
-When using staticdir, "root" and "dir" are concatenated using ``os.path.join``. So if you're having problems, try ``os.path.join(root, dir)`` in an interactive interpreter and make sure you at least get a valid, absolute path. Remember, you don't have to use "root" at all if you don't want to; just make "dir" an absolute path. If root + dir is not absolute, an error will be raised asking you to make it absolute. CherryPy doesn't make any assumptions about where your project files are, nor can it trust the current working directory, since that may change or not be under your control depending on your deployment environment.
-
-Once root and dir are joined, the final file is found by ``os.path.join``'ing a ''branch''. The branch is pulled from the current request's URL like this:
-
-::
-
- http://www2.mydomain.org/vhost /path/to/my/approot /path/to/section / path/to/actual/file.jpg
- | | | | | | | |
- +----------- base -----------+ +-- script_name --+ +-- section ---+ +------ branch -------+
-
-
-The 'base' is the value of the 'Host' request header (unless changed by tools.proxy). The 'script_name' is where you mounted your app root. The 'section' is what part of the remaining URL to ''ignore''; that is, none of its path atoms need to map to filesystem folders. It should exactly match the section header in your application config file where you defined 'tools.staticdir.dir'. In this example, your application config file should have:
-
-::
-
- [/]
- tools.staticdir.root = '/home/me/testproj'
-
- [/path/to/section]
- tools.staticdir.dir = 'images/jpegs'
-
-
-Note that the section must start with a slash, but not end with one. And in order for ``os.path.join`` to work on root + dir, our 'images' value neither starts nor ends with a slash. Also note that the values of "root" and "dir" need not have ''anything'' to do with any part of the URL; they are OS path components only. Only the section header needs to match a portion of the URL.
-
-Now we're finally ready to slice off the part of the URL that is our ''branch'' and add it to root + dir. So our final example will try to open the following file:
-
-::
-
- root + dir + branch
- >>> os.path.join('/home/me/testproj', 'images/jpegs', 'path/to/actual/file.jpg')
- '/home/me/testproj/images/jpegs/path/to/actual/file.jpg'
-
-
-Forming URLs
-============
-
-Creating links to static content is the inverse of the above. If you want to serve the file:
-
-::
-
- /home/me/testproj/images/jpegs/path/to/actual/file.jpg
-
-
-...you have a choice about where to split up the full path into root, dir, and branch. Remember, the 'root' value only exists to save typing; you could use absolute paths for all "dir" values. So if you're serving multiple static directories, find the common root to them all and use that for your "root" value. For example, instead of this:
-
-::
-
- [/images]
- tools.staticdir.dir = "/usr/home/me/app/static/images"
-
- [/styles]
- tools.staticdir.dir = "/usr/home/me/app/static/css"
-
- [/scripts]
- tools.staticdir.dir = "/usr/home/me/app/static/js"
-
-
-...write:
-
-::
-
- [/]
- tools.staticdir.root = "/usr/home/me/app/static"
-
- [/images]
- tools.staticdir.dir = "images"
-
- [/styles]
- tools.staticdir.dir = "css"
-
- [/scripts]
- tools.staticdir.dir = "js"
-
-
-Regardless of where you split "root" from "dir", the remainder of the OS path will be the "branch". Assuming the config above, our example branch would then be "jpegs/path/to/actual/file.jpg". Add the branch to the section name where you defined "dir", and use that for your URL. Even better, pass it to ``cherrypy.url()`` (which prepends base and script_name) and emit ''that''.
-
-::
-
- section + branch
- >>> cherrypy.url('/images' + '/' + 'jpegs/path/to/actual/file.jpg')
- http://www2.mydomain.org/vhost/path/to/my/approot/images/jpegs/path/to/actual/file.jpg
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/uploading.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/uploading.rst
deleted file mode 100644
index 526bc51..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/files/uploading.rst
+++ /dev/null
@@ -1,75 +0,0 @@
-***************
-Uploading Files
-***************
-
-When a client uploads a file to a CherryPy application, it's placed
-on disk immediately. CherryPy will pass it to your exposed method
-as an argument (see "myFile" below); that arg will have a "file"
-attribute, which is a handle to the temporary uploaded file.
-If you wish to permanently save the file, you need to read()
-from myFile.file and write() somewhere else.
-
-Note the use of 'enctype="multipart/form-data"' and 'input type="file"'
-in the HTML which the client uses to upload the file.
-
-
-Here is a simple example that shows how file uploads are handled by CherryPy::
-
- import os
- localDir = os.path.dirname(__file__)
- absDir = os.path.join(os.getcwd(), localDir)
-
- import cherrypy
-
- class FileDemo(object):
-
- def index(self):
- return """
- <html><body>
- <h2>Upload a file</h2>
- <form action="upload" method="post" enctype="multipart/form-data">
- filename: <input type="file" name="myFile" /><br />
- <input type="submit" />
- </form>
- <h2>Download a file</h2>
- <a href='download'>This one</a>
- </body></html>
- """
- index.exposed = True
-
- def upload(self, myFile):
- out = """<html>
- <body>
- myFile length: %s<br />
- myFile filename: %s<br />
- myFile mime-type: %s
- </body>
- </html>"""
-
- # Although this just counts the file length, it demonstrates
- # how to read large files in chunks instead of all at once.
- # CherryPy reads the uploaded file into a temporary file;
- # myFile.file.read reads from that.
- size = 0
- while True:
- data = myFile.file.read(8192)
- if not data:
- break
- size += len(data)
-
- return out % (size, myFile.filename, myFile.content_type)
- upload.exposed = True
-
-
-
- tutconf = os.path.join(os.path.dirname(__file__), 'tutorial.conf')
-
- if __name__ == '__main__':
- # CherryPy always starts with app.root when trying to map request URIs
- # to objects, so we need to mount a request handler root. A request
- # to '/' will be mapped to HelloWorld().index().
- cherrypy.quickstart(FileDemo(), config=tutconf)
- else:
- # This branch is for the test suite; you can ignore it.
- cherrypy.tree.mount(FileDemo(), config=tutconf)
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/index.rst
deleted file mode 100644
index 0049441..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/index.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-******************
-Programmer's Guide
-******************
-
-When you build a web application, you need more than just headers and bodies.
-Here are a number of discussions on how to add higher-level features to your
-CherryPy application, and how to leverage some of the power of HTTP.
-
-Features
-========
-
-.. toctree::
- :maxdepth: 2
-
- choosingtemplate
- Exceptions </refman/_cperror>
- files/index
- Logging </refman/_cplogging>
- responsetimeouts
- Sessions </refman/lib/sessions>
- extending/index
-
-
-HTTP details
-============
-
-.. toctree::
- :maxdepth: 2
-
- cookies
- customheaders
- Request Bodies </refman/_cpreqbody>
- REST
- streaming
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/responsetimeouts.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/responsetimeouts.rst
deleted file mode 100644
index a024eb1..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/responsetimeouts.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-*****************
-Response Timeouts
-*****************
-
-CherryPy responses include 3 attributes related to time:
-
- * ``response.time``: the :func:`time.time` at which the response began
- * ``response.timeout``: the number of seconds to allow responses to run
- * ``response.timed_out``: a boolean indicating whether the response has
- timed out (default False).
-
-The request processing logic inspects the value of ``response.timed_out`` at
-various stages; if it is ever True, then :class:`TimeoutError` is raised.
-You are free to do the same within your own code.
-
-Rather than calculate the difference by hand, you can call
-``response.check_timeout`` to set ``timed_out`` for you.
-
-
-.. _timeoutmonitor:
-
-Timeout Monitor
-===============
-
-In addition, CherryPy includes a ``cherrypy.engine.timeout_monitor`` which
-monitors all active requests in a separate thread; periodically, it calls
-``check_timeout`` on them all. It is subscribed by default. To turn it off::
-
- [global]
- engine.timeout_monitor.on: False
-
-or::
-
- cherrypy.engine.timeout_monitor.unsubscribe()
-
-You can also change the interval (in seconds) at which the timeout monitor runs::
-
- [global]
- engine.timeout_monitor.frequency: 60 * 60
-
-The default is once per minute. The above example changes that to once per hour.
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/progguide/streaming.rst b/vendor/CherryPy-3.2.0/sphinx/source/progguide/streaming.rst
deleted file mode 100644
index 0811bb0..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/progguide/streaming.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-***************************
-Streaming the response body
-***************************
-
-CherryPy handles HTTP requests, packing and unpacking the low-level details,
-then passing control to your application's :ref:`pagehandlers`, which produce
-the body of the response. CherryPy allows you to return body content in a
-variety of types: a string, a list of strings, a file. CherryPy also allows you
-to *yield* content, rather than *return* content. When you use "yield", you also
-have the option of streaming the output.
-
-**In general, it is safer and easier to not stream output.** Therefore,
-streaming output is off by default.
-
-The "normal" CherryPy response process
-======================================
-
-When you provide content from your page handler, CherryPy manages the
-conversation between the HTTP server and your code like this:
-
-.. image:: cpreturn.gif
-
-Notice that the HTTP server gathers all output first and then writes everything
-to the client at once: status, headers, and body. This works well for static or
-simple pages, since the entire response can be changed at any time, either in
-your application code, or by the CherryPy framework.
-
-How "streaming output" works with CherryPy
-==========================================
-
-When you set the config entry "response.stream" to True (and use "yield"),
-CherryPy manages the conversation between the HTTP server and your code like this:
-
-.. image:: cpyield.gif
-
-When you stream, your application doesn't immediately pass raw body content
-back to CherryPy or to the HTTP server. Instead, it passes back a generator.
-At that point, CherryPy finalizes the status and headers, **before** the
-generator has been consumed, or has produced any output. This is necessary to
-allow the HTTP server to send the headers and pieces of the body as they become
-available.
-
-Once CherryPy has set the status and headers, it sends them to the HTTP server,
-which then writes them out to the client. From that point on, the CherryPy
-ramework mostly steps out of the way, and the HTTP server essentially requests
-content directly from your application code (your page handler method).
-
-Therefore, when streaming, if an error occurs within your page handler,
-CherryPy will not catch it--the HTTP server will catch it. Because the headers
-(and potentially some of the body) have already been written to the client,
-the server *cannot* know a safe means of handling the error, and will therefore
-simply close the connection (the current, builtin servers actually write out a
-short error message in the body, but this may be changed, and is not guaranteed
-behavior for all HTTP servers you might use with CherryPy).
-
-In addition, you cannot manually modify the status or headers within your page
-handler if that handler method is a streaming generator, because the method will
-not be iterated over until after the headers have been written to the client.
-**This includes raising exceptions like HTTPError, NotFound, InternalRedirect
-and HTTPRedirect.** To use a streaming generator while modifying headers, you
-would have to return a generator that is separate from (or embedded in) your
-page handler. For example::
-
- class Root:
- def thing(self):
- cherrypy.response.headers['Content-Type'] = 'text/plain'
- if not authorized():
- raise cherrypy.NotFound()
- def content():
- yield "Hello, "
- yield "world"
- return content()
- thing._cp_config = {'response.stream': True}
-
-Streaming generators are sexy, but they play havoc with HTTP. CherryPy allows
-you to stream output for specific situations: pages which take many minutes to
-produce, or pages which need a portion of their content immediately output to
-the client. Because of the issues outlined above, **it is usually better to
-flatten (buffer) content rather than stream content**. Do otherwise only when
-the benefits of streaming outweigh the risks.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpchecker.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpchecker.rst
deleted file mode 100644
index 68b87ee..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpchecker.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-**************************
-:mod:`cherrypy._cpchecker`
-**************************
-
-.. automodule:: cherrypy._cpchecker
-
-Classes
-=======
-
-.. autoclass:: Checker
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpconfig.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpconfig.rst
deleted file mode 100644
index b6c5ac4..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpconfig.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-*************************
-:mod:`cherrypy._cpconfig`
-*************************
-
-.. automodule:: cherrypy._cpconfig
-
-Classes
-=======
-
-.. autoclass:: Config
- :members:
- :inherited-members:
-
-Functions
-=========
-
-.. autofunction:: merge
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpdispatch.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpdispatch.rst
deleted file mode 100644
index 28c333a..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpdispatch.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-********************************************************
-:mod:`cherrypy._cpdispatch` -- Mapping URI's to handlers
-********************************************************
-
-.. automodule:: cherrypy._cpdispatch
-
-Classes
-=======
-
-.. autoclass:: PageHandler
- :members:
-
-.. autoclass:: LateParamPageHandler
- :members:
-
-.. autoclass:: Dispatcher
- :members:
-
-.. autoclass:: MethodDispatcher
- :members:
-
-.. autoclass:: RoutesDispatcher
- :members:
-
-.. autoclass:: XMLRPCDispatcher
- :members:
-
-.. autoclass:: VirtualHost
- :members:
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cperror.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cperror.rst
deleted file mode 100644
index 1e6042c..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cperror.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-*************************
-:mod:`cherrypy._cperror`
-*************************
-
-.. automodule:: cherrypy._cperror
-
-Classes
-=======
-
-.. autoclass:: CherryPyException
- :members:
-
-.. autoclass:: TimeoutError
- :members:
-
-.. autoclass:: InternalRedirect
- :members:
-
-.. autoclass:: HTTPRedirect
- :members:
-
-.. autoclass:: HTTPError
- :members:
-
-.. autoclass:: NotFound
- :members:
-
-Functions
-=========
-
-.. autofunction:: format_exc
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cplogging.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cplogging.rst
deleted file mode 100644
index 3594c29..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cplogging.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-**************************
-:mod:`cherrypy._cplogging`
-**************************
-
-.. automodule:: cherrypy._cplogging
-
-Classes
-=======
-
-.. autoclass:: LogManager
- :members:
-
-.. autoclass:: WSGIErrorHandler
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpreqbody.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpreqbody.rst
deleted file mode 100644
index 0a17423..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpreqbody.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-**************************
-:mod:`cherrypy._cpreqbody`
-**************************
-
-.. automodule:: cherrypy._cpreqbody
-
-Classes
-=======
-
-.. autoclass:: Entity
- :members:
-
-.. autoclass:: Part
- :show-inheritance:
- :members:
- :inherited-members:
-
-.. autoclass:: RequestBody
- :show-inheritance:
- :members:
- :inherited-members:
-
-.. autoclass:: SizedReader
- :members:
-
-
-Functions
-=========
-
-.. autofunction:: process_urlencoded
-
-.. autofunction:: process_multipart
-
-.. autofunction:: process_multipart_form_data
-
-.. autofunction:: process_multipart
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cprequest.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cprequest.rst
deleted file mode 100644
index 475666a..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cprequest.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-**************************
-:mod:`cherrypy._cprequest`
-**************************
-
-.. automodule:: cherrypy._cprequest
-
-Classes
-=======
-
-.. autoclass:: Request
- :members:
-
-.. autoclass:: Response
- :members:
-
-.. autoclass:: Hook
- :members:
-
-.. autoclass:: HookMap
- :members:
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpserver.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpserver.rst
deleted file mode 100644
index 8f2ea54..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpserver.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-*************************
-:mod:`cherrypy._cpserver`
-*************************
-
-.. automodule:: cherrypy._cpserver
-
-Classes
-=======
-
-.. autoclass:: Server
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cptools.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cptools.rst
deleted file mode 100644
index 2a19412..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cptools.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-************************
-:mod:`cherrypy._cptools`
-************************
-
-See :doc:`/concepts/tools` for a conceptual overview of CherryPy Tools.
-
-.. automodule:: cherrypy._cptools
-
-Classes
-=======
-
-.. autoclass:: Tool
- :members:
-
-.. autoclass:: HandlerTool
- :members:
-
-.. autoclass:: HandlerWrapperTool
- :members:
-
-.. autoclass:: ErrorTool
- :members:
-
-.. autoclass:: SessionTool
- :members:
-
-.. autoclass:: XMLRPCController
- :members:
-
-.. autoclass:: SessionAuthTool
- :members:
-
-.. autoclass:: CachingTool
- :members:
-
-.. autoclass:: Toolbox
- :members:
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cptree.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cptree.rst
deleted file mode 100644
index 7df2538..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cptree.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-***********************
-:mod:`cherrypy._cptree`
-***********************
-
-.. automodule:: cherrypy._cptree
-
-Classes
-=======
-
-.. autoclass:: Application
- :members:
-
-.. autoclass:: Tree
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpwsgi.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpwsgi.rst
deleted file mode 100644
index 44c52cc..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/_cpwsgi.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-***********************
-:mod:`cherrypy._cpwsgi`
-***********************
-
-.. automodule:: cherrypy._cpwsgi
-
-Classes
-=======
-
-.. autoclass:: VirtualHost
- :members:
-
-.. autoclass:: InternalRedirector
- :members:
-
-.. autoclass:: ExceptionTrapper
- :members:
-
-.. autoclass:: AppResponse
- :members:
-
-.. autoclass:: CPWSGIApp
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/cherrypy.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/cherrypy.rst
deleted file mode 100644
index a6ea0bb..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/cherrypy.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-***************
-:mod:`cherrypy`
-***************
-
-.. automodule:: cherrypy
-
-
-Classes
-=======
-
-.. autoclass:: HTTPError
- :members:
-
-.. autoclass:: HTTPRedirect
- :members:
-
-.. autoclass:: InternalRedirect
- :members:
-
-.. autoclass:: NotFound
- :members:
-
-.. autoclass:: CherryPyException
- :members:
-
-.. autoclass:: TimeoutError
- :members:
-
-
-Functions
-=========
-
-.. autofunction:: expose
-
-.. autofunction:: log
-
-.. autofunction:: quickstart
-
-.. autofunction:: url
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/cperrors.gif b/vendor/CherryPy-3.2.0/sphinx/source/refman/cperrors.gif
deleted file mode 100644
index 4414539..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/cperrors.gif
+++ /dev/null
Binary files differ
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/index.rst
deleted file mode 100644
index 993b932..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/index.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-****************
-Reference Manual
-****************
-
-.. toctree::
- :glob:
-
- *
- lib/index
- process/index
- wsgiserver/index
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth.rst
deleted file mode 100644
index 7008e26..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-************************
-:mod:`cherrypy.lib.auth`
-************************
-
-.. automodule:: cherrypy.lib.auth
-
-Functions
-=========
-
-.. autofunction:: check_auth
-
-.. autofunction:: basic_auth
-
-.. autofunction:: digest_auth
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_basic.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_basic.rst
deleted file mode 100644
index ce637fc..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_basic.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-******************************
-:mod:`cherrypy.lib.auth_basic`
-******************************
-
-.. automodule:: cherrypy.lib.auth_basic
-
-Functions
-=========
-
-.. autofunction:: checkpassword_dict
-
-.. autofunction:: basic_auth
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_digest.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_digest.rst
deleted file mode 100644
index f45d075..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/auth_digest.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-*******************************
-:mod:`cherrypy.lib.auth_digest`
-*******************************
-
-.. automodule:: cherrypy.lib.auth_digest
-
-Classes
-=======
-
-.. autoclass:: HttpDigestAuthorization
- :members:
-
-Functions
-=========
-
-.. autofunction:: get_ha1_dict_plain
-
-.. autofunction:: get_ha1_dict
-
-.. autofunction:: get_ha1_file_htdigest
-
-.. autofunction:: synthesize_nonce
-
-.. autofunction:: www_authenticate
-
-.. autofunction:: digest_auth
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/caching.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/caching.rst
deleted file mode 100644
index d109a9b..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/caching.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-***************************
-:mod:`cherrypy.lib.caching`
-***************************
-
-.. automodule:: cherrypy.lib.caching
-
-Classes
-=======
-
-.. autoclass:: Cache
- :members:
-
-.. autoclass:: AntiStampedeCache
- :members:
-
-.. autoclass:: MemoryCache
- :members:
-
-Functions
-=========
-
-.. autofunction:: get
-
-.. autofunction:: tee_output
-
-.. autofunction:: expires
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/covercp.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/covercp.rst
deleted file mode 100644
index b6cf910..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/covercp.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-***************************
-:mod:`cherrypy.lib.covercp`
-***************************
-
-.. automodule:: cherrypy.lib.covercp
-
-Classes
-=======
-
-.. autoclass:: CoverStats
- :members:
-
-Functions
-=========
-
-.. autofunction:: get_tree
-
-.. autofunction:: serve
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/cptools.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/cptools.rst
deleted file mode 100644
index ec3d339..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/cptools.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-***************************
-:mod:`cherrypy.lib.cptools`
-***************************
-
-.. automodule:: cherrypy.lib.cptools
-
-Classes
-=======
-
-.. autoclass:: SessionAuth
- :members:
-
-.. autoclass:: MonitoredHeaderMap
- :members:
-
-Functions
-=========
-
-.. autofunction:: validate_etags
-
-.. autofunction:: validate_since
-
-.. autofunction:: proxy
-
-.. autofunction:: ignore_headers
-
-.. autofunction:: response_headers
-
-.. autofunction:: referer
-
-.. autofunction:: session_auth
-
-.. autofunction:: log_traceback
-
-.. autofunction:: log_request_headers
-
-.. autofunction:: log_hooks
-
-.. autofunction:: redirect
-
-.. autofunction:: trailing_slash
-
-.. autofunction:: flatten
-
-.. autofunction:: accept
-
-.. autofunction:: autovary
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/encoding.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/encoding.rst
deleted file mode 100644
index 0171e56..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/encoding.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-****************************
-:mod:`cherrypy.lib.encoding`
-****************************
-
-.. automodule:: cherrypy.lib.encoding
-
-Classes
-=======
-
-.. autoclass:: ResponseEncoder
- :members:
-
-Functions
-=========
-
-.. autofunction:: decode
-
-.. autofunction:: compress
-
-.. autofunction:: decompress
-
-.. autofunction:: gzip
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httpauth.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httpauth.rst
deleted file mode 100644
index c0e871c..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httpauth.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-****************************
-:mod:`cherrypy.lib.httpauth`
-****************************
-
-.. automodule:: cherrypy.lib.httpauth
-
-Functions
-=========
-
-.. autofunction:: calculateNonce
-
-.. autofunction:: digestAuth
-
-.. autofunction:: basicAuth
-
-.. autofunction:: doAuth
-
-.. autofunction:: parseAuthorization
-
-.. autofunction:: md5SessionKey
-
-.. autofunction:: checkResponse
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httputil.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httputil.rst
deleted file mode 100644
index 646e55a..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/httputil.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-****************************
-:mod:`cherrypy.lib.httputil`
-****************************
-
-.. automodule:: cherrypy.lib.httputil
-
-Classes
-=======
-
-.. autoclass:: HeaderElement
- :members:
-
-.. autoclass:: AcceptElement
- :members:
-
-.. autoclass:: CaseInsensitiveDict
- :members:
-
-.. autoclass:: HeaderMap
- :members:
-
-.. autoclass:: Host
- :members:
-
-Functions
-=========
-
-.. autofunction:: urljoin
-
-.. autofunction:: protocol_from_http
-
-.. autofunction:: get_ranges
-
-.. autofunction:: header_elements
-
-.. autofunction:: decode_TEXT
-
-.. autofunction:: valid_status
-
-.. autofunction:: parse_query_string
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/index.rst
deleted file mode 100644
index 72c875a..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/index.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-************
-cherrypy.lib
-************
-
-.. toctree::
- :glob:
-
- *
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/jsontools.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/jsontools.rst
deleted file mode 100644
index 8ec0145..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/jsontools.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-*****************************
-:mod:`cherrypy.lib.jsontools`
-*****************************
-
-.. automodule:: cherrypy.lib.jsontools
-
-Functions
-=========
-
-.. autofunction:: json_processor
-
-.. autofunction:: json_in
-
-.. autofunction:: json_handler
-
-.. autofunction:: json_out
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/profiler.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/profiler.rst
deleted file mode 100644
index a748069..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/profiler.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-****************************
-:mod:`cherrypy.lib.profiler`
-****************************
-
-.. automodule:: cherrypy.lib.profiler
-
-Classes
-=======
-
-.. autoclass:: Profiler
- :members:
-
-.. autoclass:: ProfileAggregator
- :members:
-
-.. autoclass:: make_app
- :members:
-
-Functions
-=========
-
-.. autofunction:: new_func_strip_path
-
-.. autofunction:: serve
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/reprconf.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/reprconf.rst
deleted file mode 100644
index 62dc013..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/reprconf.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-****************************
-:mod:`cherrypy.lib.reprconf`
-****************************
-
-.. automodule:: cherrypy.lib.reprconf
-
-Classes
-=======
-
-.. autoclass:: NamespaceSet
- :members:
-
-.. autoclass:: Config
- :members:
-
-.. autoclass:: Parser
- :members:
-
-Functions
-=========
-
-.. autofunction:: as_dict
-
-.. autofunction:: unrepr
-
-.. autofunction:: modules
-
-.. autofunction:: attributes
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/sessions.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/sessions.rst
deleted file mode 100644
index 822f779..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/sessions.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-****************************
-:mod:`cherrypy.lib.sessions`
-****************************
-
-.. automodule:: cherrypy.lib.sessions
-
-Classes
-=======
-
-.. autoclass:: Session
- :members:
-
-.. autoclass:: RamSession
- :members:
- :inherited-members:
-
-.. autoclass:: FileSession
- :members:
- :inherited-members:
-
-.. autoclass:: PostgresqlSession
- :members:
- :inherited-members:
-
-.. autoclass:: MemcachedSession
- :members:
- :inherited-members:
-
-Functions
-=========
-
-.. autofunction:: save
-
-.. autofunction:: close
-
-.. autofunction:: init
-
-.. autofunction:: set_response_cookie
-
-.. autofunction:: expire
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/static.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/static.rst
deleted file mode 100644
index 41b1029..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/static.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-**************************
-:mod:`cherrypy.lib.static`
-**************************
-
-.. automodule:: cherrypy.lib.static
-
-Functions
-=========
-
-.. autofunction:: serve_file
-
-.. autofunction:: serve_fileobj
-
-.. autofunction:: serve_download
-
-.. autofunction:: staticdir
-
-.. autofunction:: staticfile
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/xmlrpc.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/xmlrpc.rst
deleted file mode 100644
index 152a994..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/lib/xmlrpc.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-**************************
-:mod:`cherrypy.lib.xmlrpc`
-**************************
-
-.. automodule:: cherrypy.lib.xmlrpc
-
-Functions
-=========
-
-.. autofunction:: process_body
-
-.. autofunction:: patched_path
-
-.. autofunction:: respond
-
-.. autofunction:: on_error
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/index.rst
deleted file mode 100644
index c0a93a7..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/index.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-****************
-cherrypy.process
-****************
-
-.. toctree::
- :glob:
-
- *
- plugins/index
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst
deleted file mode 100644
index a5296ce..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/daemonizer.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-***************
-Run as a daemon
-***************
-
-CherryPy allows you to easily decouple the current process from the parent
-environment, using the traditional double-fork::
-
- from cherrypy.process.plugins import Daemonizer
- d = Daemonizer(cherrypy.engine)
- d.subscribe()
-
-.. note::
-
- This :ref:`Engine Plugin<plugins>` is only available on
- Unix and similar systems which provide fork().
-
-If a startup error occurs in the forked children, the return code from the
-parent process will still be 0. Errors in the initial daemonizing process still
-return proper exit codes, but errors after the fork won't. Therefore, if you use
-this plugin to daemonize, don't use the return code as an accurate indicator of
-whether the process fully started. In fact, that return code only indicates if
-the process successfully finished the first fork.
-
-The plugin takes optional arguments to redirect standard streams: ``stdin``,
-``stdout``, and ``stderr``. By default, these are all redirected to
-:file:`/dev/null`, but you're free to send them to log files or elsewhere.
-
-.. warning::
-
- You should be careful to not start any threads before this plugin runs.
- The plugin will warn if you do so, because "...the effects of calling functions
- that require certain resources between the call to fork() and the call to an
- exec function are undefined". (`ref <http://www.opengroup.org/onlinepubs/000095399/functions/fork.html>`_).
- It is for this reason that the Server plugin runs at priority 75 (it starts
- worker threads), which is later than the default priority of 65 for the
- Daemonizer.
-
-
-.. currentmodule:: cherrypy.process.plugins
-
-Classes
-=======
-
-.. autoclass:: Daemonizer
- :members:
- :show-inheritance:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/dropprivileges.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/dropprivileges.rst
deleted file mode 100644
index daaa1ef..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/dropprivileges.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-***************
-Drop privileges
-***************
-
-Use this :ref:`Engine Plugin<plugins>` to start your
-CherryPy site as root (for example, to listen on a privileged port like 80)
-and then reduce privileges to something more restricted.
-
-This priority of this plugin's "start" listener is slightly higher than the
-priority for ``server.start`` in order to facilitate the most common use:
-starting on a low port (which requires root) and then dropping to another user.
-
-Example::
-
- DropPrivileges(cherrypy.engine, '/var/run/myapp.pid').subscribe()
-
-.. currentmodule:: cherrypy.process.plugins
-
-Classes
-=======
-
-.. autoclass:: DropPrivileges
- :members:
- :show-inheritance:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/index.rst
deleted file mode 100644
index a2ebb16..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/index.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-*************************************************
-:mod:`cherrypy.process.plugins` -- Engine Plugins
-*************************************************
-
-.. automodule:: cherrypy.process.plugins
-
-Classes
-=======
-
-.. autoclass:: SimplePlugin
- :members:
-
-.. autoclass:: ThreadManager
- :members:
- :show-inheritance:
-
-Monitors
---------
-
-.. autoclass:: BackgroundTask
- :members:
-
-.. autoclass:: PerpetualTimer
- :members:
-
-.. autoclass:: Monitor
- :members:
- :show-inheritance:
-
-.. autoclass:: Autoreloader
- :members:
- :inherited-members:
- :show-inheritance:
-
-
-Other Plugins
--------------
-
-.. toctree::
- :maxdepth: 2
-
- signalhandler
- dropprivileges
- daemonizer
- pidfile
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/pidfile.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/pidfile.rst
deleted file mode 100644
index 3c02a0c..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/pidfile.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-*********
-PID files
-*********
-
-The PIDFile :ref:`Engine Plugin<plugins>` is pretty straightforward: it writes
-the process id to a file on start, and deletes the file on exit. You must
-provide a 'pidfile' argument, preferably an absolute path::
-
- PIDFile(cherrypy.engine, '/var/run/myapp.pid').subscribe()
-
-.. currentmodule:: cherrypy.process.plugins
-
-Classes
-=======
-
-.. autoclass:: PIDFile
- :members:
- :show-inheritance:
-
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/signalhandler.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/signalhandler.rst
deleted file mode 100644
index 5e8ced3..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/plugins/signalhandler.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-****************
-Handling Signals
-****************
-
-SignalHandler
-=============
-
-This :ref:`Engine Plugin<plugins>` is instantiated automatically as
-``cherrypy.engine.signal_handler``.
-However, it is only *subscribed* automatically by ``cherrypy.quickstart()``.
-So if you want signal handling and you're calling::
-
- tree.mount(); engine.start(); engine.block()
-
-on your own, be sure to add::
-
- if hasattr(cherrypy.engine, 'signal_handler'):
- cherrypy.engine.signal_handler.subscribe()
-
-.. currentmodule:: cherrypy.process.plugins
-
-.. autoclass:: SignalHandler
- :members:
-
-
-.. index:: Windows, Ctrl-C, shutdown
-.. _windows-console:
-
-Windows Console Events
-======================
-
-Microsoft Windows uses console events to communicate some signals, like Ctrl-C.
-When deploying CherryPy on Windows platforms, you should obtain the
-`Python for Windows Extensions <http://sourceforge.net/projects/pywin32/>`_;
-once you have them installed, CherryPy will handle Ctrl-C and other
-console events (CTRL_C_EVENT, CTRL_LOGOFF_EVENT, CTRL_BREAK_EVENT,
-CTRL_SHUTDOWN_EVENT, and CTRL_CLOSE_EVENT) automatically, shutting down the
-bus in preparation for process exit.
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/servers.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/servers.rst
deleted file mode 100644
index 902ab12..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/servers.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-**********************************************************
-:mod:`cherrypy.process.servers` -- HTTP Server interfaces
-**********************************************************
-
-.. automodule:: cherrypy.process.servers
-
-
-Classes
-=======
-
-.. autoclass:: ServerAdapter
- :members:
-
-.. autoclass:: FlupFCGIServer
- :members:
-
-.. autoclass:: FlupSCGIServer
- :members:
-
-
-Functions
-=========
-
-.. autofunction:: client_host
-
-.. autofunction:: check_port
-
-.. autofunction:: wait_for_free_port
-
-.. autofunction:: wait_for_occupied_port
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/win32.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/win32.rst
deleted file mode 100644
index 20a3b3e..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/win32.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-**********************************************************
-:mod:`cherrypy.process.win32` -- Bus support for Windows
-**********************************************************
-
-.. automodule:: cherrypy.process.win32
-
-Classes
-=======
-
-.. autoclass:: ConsoleCtrlHandler
- :members:
-
-.. autoclass:: Win32Bus
- :members:
-
-.. autoclass:: PyWebService
- :members:
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/wspbus.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/process/wspbus.rst
deleted file mode 100644
index 95799a5..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/process/wspbus.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-**********************************************************
-:mod:`cherrypy.process.wspbus` -- The Web Site Process Bus
-**********************************************************
-
-.. automodule:: cherrypy.process.wspbus
-
-Classes
-=======
-
-.. autoclass:: ChannelFailures
- :members:
-
-.. autoclass:: Bus
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/index.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/index.rst
deleted file mode 100644
index ded4f51..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/index.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-*******************
-cherrypy.wsgiserver
-*******************
-
-.. toctree::
- :glob:
-
- *
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/init.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/init.rst
deleted file mode 100644
index 77a6188..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/init.rst
+++ /dev/null
@@ -1,87 +0,0 @@
-*****************************************
-:mod:`cherrypy.wsgiserver` -- WSGI Server
-*****************************************
-
-.. automodule:: cherrypy.wsgiserver
-
-
-HTTP
-====
-
-.. autoclass:: HTTPRequest
- :members:
-
-.. autoclass:: HTTPConnection
- :members:
-
-.. autoclass:: HTTPServer
- :members:
-
-
-Request Entities
-================
-
-.. autoclass:: SizeCheckWrapper
- :members:
-
-.. autoclass:: KnownLengthRFile
- :members:
-
-.. autoclass:: ChunkedRFile
- :members:
-
-.. autoclass:: CP_fileobject
- :members:
-
-Exceptions
-==========
-
-.. autoclass:: MaxSizeExceeded
- :members:
-
-.. autoclass:: NoSSLError
- :members:
-
-.. autoclass:: FatalSSLAlert
- :members:
-
-
-Thread Pool
-===========
-
-.. autoclass:: WorkerThread
- :members:
-
-.. autoclass:: ThreadPool
- :members:
-
-SSL
-===
-
-.. autoclass:: SSLAdapter
- :members:
-
-WSGI
-====
-
-.. autoclass:: CherryPyWSGIServer
- :members:
-
-.. autoclass:: Gateway
- :members:
-
-.. autoclass:: WSGIGateway
- :members:
-
-.. autoclass:: WSGIGateway_10
- :members:
-
-.. autoclass:: WSGIGateway_11
- :members:
-
-.. autoclass:: WSGIGateway_u0
- :members:
-
-.. autoclass:: WSGIPathInfoDispatcher
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_builtin.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_builtin.rst
deleted file mode 100644
index ab2aa7a..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_builtin.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-*****************************************************
-:mod:`cherrypy.wsgiserver.ssl_builtin` -- Builtin SSL
-*****************************************************
-
-.. automodule:: cherrypy.wsgiserver.ssl_builtin
-
-Classes
-=======
-
-.. autoclass:: BuiltinSSLAdapter
- :members:
-
diff --git a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_pyopenssl.rst b/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_pyopenssl.rst
deleted file mode 100644
index f80a558..0000000
--- a/vendor/CherryPy-3.2.0/sphinx/source/refman/wsgiserver/ssl_pyopenssl.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-*****************************************************
-:mod:`cherrypy.wsgiserver.ssl_pyopenssl` -- pyOpenSSL
-*****************************************************
-
-.. automodule:: cherrypy.wsgiserver.ssl_pyopenssl
-
-Classes
-=======
-
-.. autoclass:: SSL_fileobject
- :members:
-
-.. autoclass:: SSLConnection
- :members:
-
-.. autoclass:: pyOpenSSLAdapter
- :members:
-