summaryrefslogtreecommitdiff
path: root/docs/developer-features.txt
blob: 503d4191dcc0c888c52eef140b851edc9ba81120 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
Features
========

Testing
-------

* A fixture for testing WSGI applications conveniently and in-process,
  in :class:`paste.fixture.TestApp`

* A fixture for testing command-line applications, also in
  :class:`paste.fixture.TestFileEnvironment`

* Check components for WSGI-compliance in :mod:`paste.lint`

* Check filesystem changes, with :mod:`paste.debug.fsdiff`

Server
------

* A threaded HTTP server in :mod:`paste.httpserver`

* A tool for seeing and killing errant threads in the HTTP server, in
  :mod:`paste.debug.watchthreads`

Dispatching
-----------

* Chain and cascade WSGI applications (returning the first non-error
  response) in :mod:`paste.cascade`

* Dispatch to several WSGI applications based on URL prefixes, in
  :mod:`paste.urlmap`

* Allow applications to make subrequests and forward requests
  internally, in :mod:`paste.recursive`

* Redirect error pages (e.g., 404 Not Found) to custom error pages, in
  :mod:`paste.errordocument`.

Web Application
---------------

* Easily deal with incoming requests and sending a response in
  :mod:`paste.wsgiwrappers`

* Work directly with the WSGI environment in :mod:`paste.request`

* Run CGI programs as WSGI applications in :mod:`paste.cgiapp`

* Traverse files and load WSGI applications from ``.py`` files (or
  static files), in :mod:`paste.urlparser`

* Serve static directories of files, also in :mod:`paste.urlparser`; also
  serve using the Setuptools ``pkg_resources`` resource API.

* Proxy to other servers, treating external HTTP servers as WSGI
  applications, in :mod:`paste.proxy`.

* Serve files (with support for ``If-Modified-Since``, etc) in
  :mod:`paste.fileapp`

Tools
-----

* Catch HTTP-related exceptions (e.g., ``HTTPNotFound``) and turn them
  into proper responses in :mod:`paste.httpexceptions`

* Manage HTTP header fields with :mod:`paste.httpheaders`

* Handle authentication/identification of requests in :mod:`paste.auth`

* Create sessions in :mod:`paste.session` and :mod:`paste.flup_session`

* Gzip responses in :mod:`paste.gzipper`

* A wide variety of routines for manipulating WSGI requests and
  producing responses, in :mod:`paste.request`, :mod:`paste.response` and
  :mod:`paste.wsgilib`.

* Create Apache-style logs in :mod:`paste.translogger`

* Handy request and response wrappers in :mod:`paste.wsgiwrappers`

* Handling of request-local module globals sanely in :mod:`paste.registry`

Authentication
--------------

* Authentication using cookies in :mod:`paste.auth.cookie` and
  :mod:`paste.auth.auth_tkt`; login form in :mod:`paste.auth.form`

* Authentication using `OpenID <http://openid.net/>`_ in
  :mod:`paste.auth.open_id`, using `CAS
  <http://www.ja-sig.org/products/cas/>`_ in :mod:`paste.auth.cas`

* HTTP authentication in :mod:`paste.auth.basic` and
  :mod:`paste.auth.digest`

* Dispatch to different authentication methods based on User-Agent, in
  :mod:`paste.auth.multi`

* Grant roles based on IP addresses, in :mod:`paste.auth.grantip`

Debugging Filters
-----------------

* Catch (optionally email) errors with extended tracebacks (using
  Zope/ZPT conventions) in :mod:`paste.exceptions`

* During debugging, show tracebacks with information about each stack
  frame, including an interactive prompt that runs in the individual
  stack frames, in :mod:`paste.evalexception`.

* Catch errors presenting a `cgitb
  <http://python.org/doc/current/lib/module-cgitb.html>`_-based
  output, in :mod:`paste.cgitb_catcher`.

* Profile each request and append profiling information to the HTML,
  in :mod:`paste.debug.profile`

* Capture ``print`` output and present it in the browser for
  debugging, in :mod:`paste.debug.prints`

* Validate all HTML output from applications using the `WDG Validator
  <http://www.htmlhelp.com/tools/validator/>`_, appending any errors
  or warnings to the page, in :mod:`paste.debug.wdg_validator`

Other Tools
-----------

* A file monitor to allow restarting the server when files have been
  updated (for automatic restarting when editing code) in
  :mod:`paste.reloader`

* A class for generating and traversing URLs, and creating associated
  HTML code, in :mod:`paste.url`

* A small templating language (for internal use) in
  :mod:`paste.util.template`

* A class to help with loops in templates, in :mod:`paste.util.looper`

* Import modules and objects given a string, in
  :mod:`paste.util.import_string`

* Ordered dictionary that can have multiple values with the same key,
  in :mod:`paste.util.multidict`