# Procedure to release a new version: # # - run tests: run tox # - update version in setup.py (__version__) # - update tag_build in setup.cfg # - update changelog: docs/news.txt # - modify setup.py: set RELEASE to True # - check that "python setup.py sdist" contains all files tracked by # the SCM (Mercurial): update MANIFEST.in if needed # # - hg ci # - hg tag VERSION # - hg push # - python setup.py register sdist bdist_wheel upload # # - increment version in setup.py (__version__) # - hg ci && hg push # If true, then the svn revision won't be used to calculate the # revision (set to True for real releases) RELEASE = True __version__ = '2.0' from setuptools import setup, find_packages import sys, os sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'paste', 'util')) import finddata setup(name="Paste", version=__version__, description="Tools for using a Web Server Gateway Interface stack", long_description="""\ These provide several pieces of "middleware" (or filters) that can be nested to build web applications. Each piece of middleware uses the WSGI (`PEP 333`_) interface, and should be compatible with other middleware based on those interfaces. .. _PEP 333: http://www.python.org/dev/peps/pep-0333.html Includes these features... Testing ------- * A fixture for testing WSGI applications conveniently and in-process, in ``paste.fixture`` * A fixture for testing command-line applications, also in ``paste.fixture`` * Check components for WSGI-compliance in ``paste.lint`` Dispatching ----------- * Chain and cascade WSGI applications (returning the first non-error response) in ``paste.cascade`` * Dispatch to several WSGI applications based on URL prefixes, in ``paste.urlmap`` * Allow applications to make subrequests and forward requests internally, in ``paste.recursive`` Web Application --------------- * Run CGI programs as WSGI applications in ``paste.cgiapp`` * Traverse files and load WSGI applications from ``.py`` files (or static files), in ``paste.urlparser`` * Serve static directories of files, also in ``paste.urlparser``; also in that module serving from Egg resources using ``pkg_resources``. Tools ----- * Catch HTTP-related exceptions (e.g., ``HTTPNotFound``) and turn them into proper responses in ``paste.httpexceptions`` * Several authentication techniques, including HTTP (Basic and Digest), signed cookies, and CAS single-signon, in the ``paste.auth`` package. * Create sessions in ``paste.session`` and ``paste.flup_session`` * Gzip responses in ``paste.gzip`` * A wide variety of routines for manipulating WSGI requests and producing responses, in ``paste.request``, ``paste.response`` and ``paste.wsgilib`` Debugging Filters ----------------- * Catch (optionally email) errors with extended tracebacks (using Zope/ZPT conventions) in ``paste.exceptions`` * Catch errors presenting a `cgitb `_-based output, in ``paste.cgitb_catcher``. * Profile each request and append profiling information to the HTML, in ``paste.debug.profile`` * Capture ``print`` output and present it in the browser for debugging, in ``paste.debug.prints`` * Validate all HTML output from applications using the `WDG Validator `_, appending any errors or warnings to the page, in ``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 ``paste.reloader`` * A class for generating and traversing URLs, and creating associated HTML code, in ``paste.url`` The official development repo is at https://bitbucket.org/ianb/paste. For the latest changes see the `news file `_. """, classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware", "Topic :: Internet :: WWW/HTTP :: WSGI :: Server", "Framework :: Paste", ], keywords='web application server wsgi', author="Ian Bicking", author_email="ianb@colorstudy.com", url="http://pythonpaste.org", license="MIT", packages=find_packages(exclude=['ez_setup', 'examples', 'packages', 'tests*']), package_data=finddata.find_package_data( exclude_directories=finddata.standard_exclude_directories + ('tests',)), namespace_packages=['paste'], zip_safe=False, test_suite='nose.collector', tests_require=['nose>=0.11'], extras_require={ 'subprocess': [], 'hotshot': [], 'Flup': ['flup'], 'Paste': [], 'openid': ['python-openid'], 'six': [], }, entry_points=""" [paste.app_factory] cgi = paste.cgiapp:make_cgi_application [subprocess] static = paste.urlparser:make_static pkg_resources = paste.urlparser:make_pkg_resources urlparser = paste.urlparser:make_url_parser proxy = paste.proxy:make_proxy test = paste.debug.debugapp:make_test_app test_slow = paste.debug.debugapp:make_slow_app transparent_proxy = paste.proxy:make_transparent_proxy watch_threads = paste.debug.watchthreads:make_watch_threads [paste.composite_factory] urlmap = paste.urlmap:urlmap_factory cascade = paste.cascade:make_cascade [paste.filter_app_factory] error_catcher = paste.exceptions.errormiddleware:make_error_middleware cgitb = paste.cgitb_catcher:make_cgitb_middleware flup_session = paste.flup_session:make_session_middleware [Flup] gzip = paste.gzipper:make_gzip_middleware httpexceptions = paste.httpexceptions:make_middleware lint = paste.lint:make_middleware printdebug = paste.debug.prints:PrintDebugMiddleware profile = paste.debug.profile:make_profile_middleware [hotshot] recursive = paste.recursive:make_recursive_middleware # This isn't good enough to deserve the name egg:Paste#session: paste_session = paste.session:make_session_middleware wdg_validate = paste.debug.wdg_validate:make_wdg_validate_middleware [subprocess] evalerror = paste.evalexception.middleware:make_eval_exception auth_tkt = paste.auth.auth_tkt:make_auth_tkt_middleware auth_basic = paste.auth.basic:make_basic auth_digest = paste.auth.digest:make_digest auth_form = paste.auth.form:make_form grantip = paste.auth.grantip:make_grantip openid = paste.auth.open_id:make_open_id_middleware [openid] pony = paste.pony:make_pony cowbell = paste.cowbell:make_cowbell errordocument = paste.errordocument:make_errordocument auth_cookie = paste.auth.cookie:make_auth_cookie translogger = paste.translogger:make_filter config = paste.config:make_config_filter registry = paste.registry:make_registry_manager [paste.server_runner] http = paste.httpserver:server_runner """, )