setup.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. # If true, then the svn revision won't be used to calculate the
  2. # revision (set to True for real releases)
  3. RELEASE = False
  4. __version__ = '1.7.2'
  5. from setuptools import setup, find_packages
  6. import sys, os
  7. sys.path.insert(0, os.path.join(os.path.dirname(__file__),
  8. 'paste', 'util'))
  9. import finddata
  10. setup(name="Paste",
  11. version=__version__,
  12. description="Tools for using a Web Server Gateway Interface stack",
  13. long_description="""\
  14. These provide several pieces of "middleware" (or filters) that can be nested to build web applications. Each
  15. piece of middleware uses the WSGI (`PEP 333`_) interface, and should
  16. be compatible with other middleware based on those interfaces.
  17. .. _PEP 333: http://www.python.org/peps/pep-0333.html
  18. Includes these features...
  19. Testing
  20. -------
  21. * A fixture for testing WSGI applications conveniently and in-process,
  22. in ``paste.fixture``
  23. * A fixture for testing command-line applications, also in
  24. ``paste.fixture``
  25. * Check components for WSGI-compliance in ``paste.lint``
  26. Dispatching
  27. -----------
  28. * Chain and cascade WSGI applications (returning the first non-error
  29. response) in ``paste.cascade``
  30. * Dispatch to several WSGI applications based on URL prefixes, in
  31. ``paste.urlmap``
  32. * Allow applications to make subrequests and forward requests
  33. internally, in ``paste.recursive``
  34. Web Application
  35. ---------------
  36. * Run CGI programs as WSGI applications in ``paste.cgiapp``
  37. * Traverse files and load WSGI applications from ``.py`` files (or
  38. static files), in ``paste.urlparser``
  39. * Serve static directories of files, also in ``paste.urlparser``; also
  40. in that module serving from Egg resources using ``pkg_resources``.
  41. Tools
  42. -----
  43. * Catch HTTP-related exceptions (e.g., ``HTTPNotFound``) and turn them
  44. into proper responses in ``paste.httpexceptions``
  45. * Several authentication techniques, including HTTP (Basic and
  46. Digest), signed cookies, and CAS single-signon, in the
  47. ``paste.auth`` package.
  48. * Create sessions in ``paste.session`` and ``paste.flup_session``
  49. * Gzip responses in ``paste.gzip``
  50. * A wide variety of routines for manipulating WSGI requests and
  51. producing responses, in ``paste.request``, ``paste.response`` and
  52. ``paste.wsgilib``
  53. Debugging Filters
  54. -----------------
  55. * Catch (optionally email) errors with extended tracebacks (using
  56. Zope/ZPT conventions) in ``paste.exceptions``
  57. * Catch errors presenting a `cgitb
  58. <http://python.org/doc/current/lib/module-cgitb.html>`_-based
  59. output, in ``paste.cgitb_catcher``.
  60. * Profile each request and append profiling information to the HTML,
  61. in ``paste.debug.profile``
  62. * Capture ``print`` output and present it in the browser for
  63. debugging, in ``paste.debug.prints``
  64. * Validate all HTML output from applications using the `WDG Validator
  65. <http://www.htmlhelp.com/tools/validator/>`_, appending any errors
  66. or warnings to the page, in ``paste.debug.wdg_validator``
  67. Other Tools
  68. -----------
  69. * A file monitor to allow restarting the server when files have been
  70. updated (for automatic restarting when editing code) in
  71. ``paste.reloader``
  72. * A class for generating and traversing URLs, and creating associated
  73. HTML code, in ``paste.url``
  74. The latest version is available in a `Subversion repository
  75. <http://svn.pythonpaste.org/Paste/trunk#egg=Paste-dev>`_.
  76. For the latest changes see the `news file
  77. <http://pythonpaste.org/news.html>`_.
  78. """,
  79. classifiers=[
  80. "Development Status :: 5 - Production/Stable",
  81. "Intended Audience :: Developers",
  82. "License :: OSI Approved :: MIT License",
  83. "Programming Language :: Python",
  84. "Topic :: Internet :: WWW/HTTP",
  85. "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
  86. "Topic :: Software Development :: Libraries :: Python Modules",
  87. "Topic :: Internet :: WWW/HTTP :: WSGI",
  88. "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
  89. "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware",
  90. "Topic :: Internet :: WWW/HTTP :: WSGI :: Server",
  91. "Framework :: Paste",
  92. ],
  93. keywords='web application server wsgi',
  94. author="Ian Bicking",
  95. author_email="ianb@colorstudy.com",
  96. url="http://pythonpaste.org",
  97. license="MIT",
  98. packages=find_packages(exclude=['ez_setup', 'examples', 'packages']),
  99. package_data=finddata.find_package_data(),
  100. namespace_packages=['paste'],
  101. zip_safe=False,
  102. extras_require={
  103. 'subprocess': [],
  104. 'hotshot': [],
  105. 'Flup': ['flup'],
  106. 'Paste': [],
  107. 'openid': ['python-openid'],
  108. },
  109. entry_points="""
  110. [paste.app_factory]
  111. cgi = paste.cgiapp:make_cgi_application [subprocess]
  112. static = paste.urlparser:make_static
  113. pkg_resources = paste.urlparser:make_pkg_resources
  114. urlparser = paste.urlparser:make_url_parser
  115. proxy = paste.proxy:make_proxy
  116. test = paste.debug.debugapp:make_test_app
  117. test_slow = paste.debug.debugapp:make_slow_app
  118. transparent_proxy = paste.proxy:make_transparent_proxy
  119. watch_threads = paste.debug.watchthreads:make_watch_threads
  120. [paste.composite_factory]
  121. urlmap = paste.urlmap:urlmap_factory
  122. cascade = paste.cascade:make_cascade
  123. [paste.filter_app_factory]
  124. error_catcher = paste.exceptions.errormiddleware:make_error_middleware
  125. cgitb = paste.cgitb_catcher:make_cgitb_middleware
  126. flup_session = paste.flup_session:make_session_middleware [Flup]
  127. gzip = paste.gzipper:make_gzip_middleware
  128. httpexceptions = paste.httpexceptions:make_middleware
  129. lint = paste.lint:make_middleware
  130. printdebug = paste.debug.prints:PrintDebugMiddleware
  131. profile = paste.debug.profile:make_profile_middleware [hotshot]
  132. recursive = paste.recursive:make_recursive_middleware
  133. # This isn't good enough to deserve the name egg:Paste#session:
  134. paste_session = paste.session:make_session_middleware
  135. wdg_validate = paste.debug.wdg_validate:make_wdg_validate_middleware [subprocess]
  136. evalerror = paste.evalexception.middleware:make_eval_exception
  137. auth_tkt = paste.auth.auth_tkt:make_auth_tkt_middleware
  138. auth_basic = paste.auth.basic:make_basic
  139. auth_digest = paste.auth.digest:make_digest
  140. auth_form = paste.auth.form:make_form
  141. grantip = paste.auth.grantip:make_grantip
  142. openid = paste.auth.open_id:make_open_id_middleware [openid]
  143. pony = paste.pony:make_pony
  144. errordocument = paste.errordocument:make_errordocument
  145. auth_cookie = paste.auth.cookie:make_auth_cookie
  146. translogger = paste.translogger:make_filter
  147. config = paste.config:make_config_filter
  148. registry = paste.registry:make_registry_manager
  149. [paste.server_runner]
  150. http = paste.httpserver:server_runner
  151. """,
  152. )