Hello community, here is the log from the commit of package python-PasteDeploy for openSUSE:Factory checked in at 2018-12-19 13:53:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-PasteDeploy (Old) and /work/SRC/openSUSE:Factory/.python-PasteDeploy.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PasteDeploy" Wed Dec 19 13:53:58 2018 rev:15 rq:659630 version:2.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-PasteDeploy/python-PasteDeploy.changes 2017-05-06 18:31:33.599069129 +0200 +++ /work/SRC/openSUSE:Factory/.python-PasteDeploy.new.28833/python-PasteDeploy.changes 2018-12-19 13:54:00.550903721 +0100 @@ -1,0 +2,76 @@ +Tue Dec 18 14:43:26 UTC 2018 - Jan Engelhardt <[email protected]> + +- Use noun phrase in summary. + +------------------------------------------------------------------- +Mon Dec 17 21:14:33 UTC 2018 - Thomas Bechtold <[email protected]> + +- update to 2.0.1: + * Use pytest.ini testpaths + * Use pylons-sphinx-themes for pylons + * Add GitHub issue templates (#13) + * tox.ini: Drop py32; add py35 + * Remove dead links + * Fix string-formatting args when raising LookupError + * Eliminate cover and cover3 tox targets + * fix link to paster serve + * Comment out obsolete static path + * Prepare a 2.0.0 release (#19) + * Use .rst for extension for better rendering on GitHub + * rename directory of reST files to use .rst extension + * Update link to Paste, saving a redirect https://pythonpaste.readthedocs.io/en/latest/ + * Update tests to reflect new behaviour of globals and DEFAULT + * Make 'python setup.py test' work (#5) + * Switch to pytest + * Remove obsolete links from navigation + * missed one code-block highlighting + * Add docs environment to tox. Build via `tox -e docs`. + * Close branch pytest + * Establish testing + * update installation instructions + * Move license.txt to root of repo in hopes that GitHub will find it + * Add intersphinx and configure Python docs + * Add rtd.txt to install pylons-sphinx-themes package + * add docs env to tox + * Release 2.0.1 + * Add docs_extra to setup.py + * proper spacing + * Update URLs in README and setup.py + * Rename to README.rst for better rendering on GitHub + * Use correct syntax highlighting + * Remove link to paste.urlmap + * fix spelling + * tox.ini: Don't need pytest-cov in base testenv + * Resolve deprecation warning + * Added tag 1.5.2 for changeset a16d11053bed + * use explicit bytes literal + * use proper link syntax + * Remove license from docs + * comment out static directory via html_static_path + * add docs/.gitignore to add _build + * setup.py update (#17) + * Fix broken link to get initial html docs built + * Close branch tox_drop_py32_add_py35 + * Fix typo in docs/index.txt + * Update link to pastescript in README.rst + * Synch with master + * tox.ini: enable tests on Python 3 + * Comment out templates path as it is not used + * Add Makefile to PR so tox can build docs + * Minor grammar fix (#21) + * Remove obsolete script + * Add contributing.md (#12) + * fix paste_deploy paster template for python3 + * Use current links + * Merged in huang1hao/pastedeploy/huang1hao/fix-typo-in-docsindextxt-1427530235567 (pull request #8) + * Fix links to news and pip + * Update URLs in setup.py and README (#10) + * Modernize conf.py so we don't have to keep updating it for each release and year + * Allow global_conf to override defaults, see: #7. + +------------------------------------------------------------------- +Tue Dec 4 12:51:17 UTC 2018 - Matej Cepl <[email protected]> + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- Old: ---- PasteDeploy-1.5.2.tar.gz New: ---- PasteDeploy-2.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-PasteDeploy.spec ++++++ --- /var/tmp/diff_new_pack.KSi03N/_old 2018-12-19 13:54:01.114902944 +0100 +++ /var/tmp/diff_new_pack.KSi03N/_new 2018-12-19 13:54:01.114902944 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-PasteDeploy # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,22 +12,22 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define oldpython python Name: python-PasteDeploy -Version: 1.5.2 +Version: 2.0.1 Release: 0 Url: http://pythonpaste.org/deploy/ -Summary: Load, configure, and compose WSGI applications and servers +Summary: Tool to load, configure, and compose WSGI applications and servers License: MIT Group: Development/Languages/Python Source: https://files.pythonhosted.org/packages/source/P/PasteDeploy/PasteDeploy-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: %{python_module devel} +BuildRequires: %{python_module pytest-runner} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -61,7 +61,7 @@ %files %{python_files} %defattr(-,root,root,-) -%doc README docs/license.txt docs/news.txt docs/index.txt +%doc README.rst %{python_sitelib}/* %changelog ++++++ PasteDeploy-1.5.2.tar.gz -> PasteDeploy-2.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/PKG-INFO new/PasteDeploy-2.0.1/PKG-INFO --- old/PasteDeploy-1.5.2/PKG-INFO 2013-12-27 18:40:45.000000000 +0100 +++ new/PasteDeploy-2.0.1/PKG-INFO 2018-12-04 15:20:59.000000000 +0100 @@ -1,38 +1,48 @@ -Metadata-Version: 1.0 +Metadata-Version: 2.1 Name: PasteDeploy -Version: 1.5.2 +Version: 2.0.1 Summary: Load, configure, and compose WSGI applications and servers -Home-page: http://pythonpaste.org/deploy/ -Author: Alex Gronholm -Author-email: [email protected] +Home-page: https://pylonsproject.org/ +Author: Ian Bicking +Author-email: [email protected] +Maintainer: Chris Dent +Maintainer-email: [email protected] License: MIT +Project-URL: Issue Tracker, https://github.com/Pylons/pastedeploy/issues +Project-URL: Documentation, https://docs.pylonsproject.org/projects/pastedeploy/en/latest/ +Project-URL: Changelog, https://docs.pylonsproject.org/projects/pastedeploy/en/latest/news.html Description: This tool provides code to load WSGI applications and servers from - URIs; these URIs can refer to Python Eggs for INI-style configuration - files. `Paste Script <http://pythonpaste.org/script>`_ provides + URIs. These URIs can refer to Python eggs for INI-style configuration + files. `Paste Script <https://github.com/cdent/pastescript>`_ provides commands to serve applications based on this configuration file. - The latest version is available in a `Mercurial repository - <http://bitbucket.org/ianb/pastedeploy>`_ (or a `tarball - <http://bitbucket.org/ianb/pastedeploy/get/tip.gz#egg=PasteDeploy-dev>`_). + The latest version is available on `GitHub + <https://github.com/Pylons/pastedeploy/>`_ (or download a wheel or tarball from + `PyPI <https://pypi.org/project/PasteDeploy/#files>`_). For the latest changes see the `news file - <http://pythonpaste.org/deploy/news.html>`_. + <https://docs.pylonsproject.org/projects/pastedeploy/en/latest/news.html>`_. + Keywords: web wsgi application server Platform: UNKNOWN Classifier: Development Status :: 6 - Mature Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2.5 -Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content Classifier: Topic :: Internet :: WWW/HTTP :: WSGI Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Framework :: Paste +Provides-Extra: Config +Provides-Extra: Paste +Provides-Extra: docs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/PasteDeploy.egg-info/PKG-INFO new/PasteDeploy-2.0.1/PasteDeploy.egg-info/PKG-INFO --- old/PasteDeploy-1.5.2/PasteDeploy.egg-info/PKG-INFO 2013-12-27 18:40:45.000000000 +0100 +++ new/PasteDeploy-2.0.1/PasteDeploy.egg-info/PKG-INFO 2018-12-04 15:20:59.000000000 +0100 @@ -1,38 +1,48 @@ -Metadata-Version: 1.0 +Metadata-Version: 2.1 Name: PasteDeploy -Version: 1.5.2 +Version: 2.0.1 Summary: Load, configure, and compose WSGI applications and servers -Home-page: http://pythonpaste.org/deploy/ -Author: Alex Gronholm -Author-email: [email protected] +Home-page: https://pylonsproject.org/ +Author: Ian Bicking +Author-email: [email protected] +Maintainer: Chris Dent +Maintainer-email: [email protected] License: MIT +Project-URL: Issue Tracker, https://github.com/Pylons/pastedeploy/issues +Project-URL: Documentation, https://docs.pylonsproject.org/projects/pastedeploy/en/latest/ +Project-URL: Changelog, https://docs.pylonsproject.org/projects/pastedeploy/en/latest/news.html Description: This tool provides code to load WSGI applications and servers from - URIs; these URIs can refer to Python Eggs for INI-style configuration - files. `Paste Script <http://pythonpaste.org/script>`_ provides + URIs. These URIs can refer to Python eggs for INI-style configuration + files. `Paste Script <https://github.com/cdent/pastescript>`_ provides commands to serve applications based on this configuration file. - The latest version is available in a `Mercurial repository - <http://bitbucket.org/ianb/pastedeploy>`_ (or a `tarball - <http://bitbucket.org/ianb/pastedeploy/get/tip.gz#egg=PasteDeploy-dev>`_). + The latest version is available on `GitHub + <https://github.com/Pylons/pastedeploy/>`_ (or download a wheel or tarball from + `PyPI <https://pypi.org/project/PasteDeploy/#files>`_). For the latest changes see the `news file - <http://pythonpaste.org/deploy/news.html>`_. + <https://docs.pylonsproject.org/projects/pastedeploy/en/latest/news.html>`_. + Keywords: web wsgi application server Platform: UNKNOWN Classifier: Development Status :: 6 - Mature Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2.5 -Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content Classifier: Topic :: Internet :: WWW/HTTP :: WSGI Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Framework :: Paste +Provides-Extra: Config +Provides-Extra: Paste +Provides-Extra: docs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/PasteDeploy.egg-info/SOURCES.txt new/PasteDeploy-2.0.1/PasteDeploy.egg-info/SOURCES.txt --- old/PasteDeploy-1.5.2/PasteDeploy.egg-info/SOURCES.txt 2013-12-27 18:40:45.000000000 +0100 +++ new/PasteDeploy-2.0.1/PasteDeploy.egg-info/SOURCES.txt 2018-12-04 15:20:59.000000000 +0100 @@ -1,5 +1,5 @@ MANIFEST.in -README +README.rst setup.cfg setup.py PasteDeploy.egg-info/PKG-INFO @@ -10,9 +10,6 @@ PasteDeploy.egg-info/not-zip-safe PasteDeploy.egg-info/requires.txt PasteDeploy.egg-info/top_level.txt -docs/index.txt -docs/license.txt -docs/news.txt paste/__init__.py paste/deploy/__init__.py paste/deploy/compat.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/PasteDeploy.egg-info/requires.txt new/PasteDeploy-2.0.1/PasteDeploy.egg-info/requires.txt --- old/PasteDeploy-1.5.2/PasteDeploy.egg-info/requires.txt 2013-12-27 18:40:45.000000000 +0100 +++ new/PasteDeploy-2.0.1/PasteDeploy.egg-info/requires.txt 2018-12-04 15:20:59.000000000 +0100 @@ -1,6 +1,9 @@ +[Config] [Paste] Paste -[Config] +[docs] +Sphinx>=1.7.5 +pylons-sphinx-themes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/README new/PasteDeploy-2.0.1/README --- old/PasteDeploy-1.5.2/README 2012-04-29 06:00:21.000000000 +0200 +++ new/PasteDeploy-2.0.1/README 1970-01-01 01:00:00.000000000 +0100 @@ -1,11 +0,0 @@ -This tool provides code to load WSGI applications and servers from -URIs; these URIs can refer to Python Eggs for INI-style configuration -files. `Paste Script <http://pythonpaste.org/script>`_ provides -commands to serve applications based on this configuration file. - -The latest version is available in a `Mercurial repository -<http://bitbucket.org/ianb/pastedeploy>`_ (or a `tarball -<http://bitbucket.org/ianb/pastedeploy/get/tip.gz#egg=PasteDeploy-dev>`_). - -For the latest changes see the `news file -<http://pythonpaste.org/deploy/news.html>`_. \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/README.rst new/PasteDeploy-2.0.1/README.rst --- old/PasteDeploy-1.5.2/README.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/PasteDeploy-2.0.1/README.rst 2018-11-26 13:51:50.000000000 +0100 @@ -0,0 +1,11 @@ +This tool provides code to load WSGI applications and servers from +URIs. These URIs can refer to Python eggs for INI-style configuration +files. `Paste Script <https://github.com/cdent/pastescript>`_ provides +commands to serve applications based on this configuration file. + +The latest version is available on `GitHub +<https://github.com/Pylons/pastedeploy/>`_ (or download a wheel or tarball from +`PyPI <https://pypi.org/project/PasteDeploy/#files>`_). + +For the latest changes see the `news file +<https://docs.pylonsproject.org/projects/pastedeploy/en/latest/news.html>`_. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/docs/index.txt new/PasteDeploy-2.0.1/docs/index.txt --- old/PasteDeploy-1.5.2/docs/index.txt 2012-04-29 06:03:38.000000000 +0200 +++ new/PasteDeploy-2.0.1/docs/index.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,672 +0,0 @@ -Paste Deployment -================ - -:author: Ian Bicking <[email protected]> - -.. contents:: - -Documents: - -.. toctree:: - :maxdepth: 1 - - news - modules/loadwsgi - modules/config - modules/converters - license - -.. comment: - The names used in sections should be more concrete, and it should - be clearer that they are just arbitrary names. - -Introduction ------------- - -Paste Deployment is a system for finding and configuring WSGI -applications and servers. For WSGI application consumers it provides -a single, simple function (``loadapp``) for loading a WSGI application -from a configuration file or a Python Egg. For WSGI application -providers it only asks for a single, simple entry point to your -application, so that application users don't need to be exposed to the -implementation details of your application. - -The result is something a system administrator can install and manage -without knowing any Python, or the details of the WSGI application or -its container. - -Paste Deployment currently does not require other parts of `Paste -<http://pythonpaste.org>`_, and is distributed as a separate package. - -To see updates that have been made to Paste Deploy see the `news file -<news.html>`_. - -Paste Deploy is released under the `MIT license -<http://www.opensource.org/licenses/mit-license.php>`_. - -Status ------- - -Paste Deploy has passed version 1.0. Paste Script is an actively -maintained project. As of 1.0, we'll make a strong effort to maintain -backward compatibility (this actually started happening long before -1.0, but now it is explicit). This will include deprecation warnings -when necessary. Major changes will take place under new functions or -with new entry points. - -Note that the most key aspect of Paste Deploy is the entry points it -defines (such as ``paste.app_factory``). Paste Deploy is not the only -consumer of these entry points, and many extensions can best take -place by utilizing the entry points instead of using Paste Deploy -directly. The entry points will not change; if changes are necessary, -new entry points will be defined. - -Installation ------------- - -First make sure you have either -`setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_ or its -modern replacement -`distribute <http://pypi.python.org/pypi/distribute>`_ installed. -For Python 3.x you need distribute as setuptools does not work on it. - -Then you can install Paste Deployment using `pip -<http://www.pip-installer.org/en/latest/installing.html>`_ by running:: - - $ sudo pip install PasteDeploy - -If you want to track development, do:: - - $ hg clone http://bitbucket.org/ianb/pastedeploy - $ cd pastedeploy - $ sudo python setup.py develop - -This will install the package globally, but will load the files in the -checkout. You can also simply install ``PasteDeploy==dev``. - -For downloads and other information see the `Cheese Shop PasteDeploy -page <http://cheeseshop.python.org/pypi/PasteDeploy>`_. - -A complimentary package is `Paste Script </script/>`_. To install -that, use ``pip install PasteScript`` (or ``pip install -PasteScript==dev``). - -From the User Perspective -------------------------- - -In the following sections, the Python API for using Paste Deploy is -given. This isn't what users will be using (but it is useful for -Python developers and useful for setting up tests fixtures). - -The primary interaction with Paste Deploy is through its configuration -files. The primary thing you want to do with a configuration file is -serve it. To learn about serving configuration files, see `the -``paster serve`` command -<http://pythonpaste.org/script/#paster-serve>`_. - -The Config File -~~~~~~~~~~~~~~~ - -A config file has different sections. The only sections Paste Deploy -cares about have prefixes, like ``app:main`` or ``filter:errors`` -- -the part after the ``:`` is the "name" of the section, and the part -before gives the "type". Other sections are ignored. - -The format is a simple `INI format -<http://en.wikipedia.org/wiki/INI_file>`_: ``name = value``. You can -extend the value by indenting subsequent lines. ``#`` is a comment. - -Typically you have one or two sections, named "main": an application -section (``[app:main]``) and a server section (``[server:main]``). -``[composite:...]`` signifies something that dispatches to multiple -applications (example below). - -Here's a typical configuration file that also shows off mounting -multiple applications using `paste.urlmap -<http://pythonpaste.org/module-paste.urlmap.html>`_:: - - [composite:main] - use = egg:Paste#urlmap - / = home - /blog = blog - /wiki = wiki - /cms = config:cms.ini - - [app:home] - use = egg:Paste#static - document_root = %(here)s/htdocs - - [filter-app:blog] - use = egg:Authentication#auth - next = blogapp - roles = admin - htpasswd = /home/me/users.htpasswd - - [app:blogapp] - use = egg:BlogApp - database = sqlite:/home/me/blog.db - - [app:wiki] - use = call:mywiki.main:application - database = sqlite:/home/me/wiki.db - -I'll explain each section in detail now:: - - [composite:main] - use = egg:Paste#urlmap - / = home - /blog = blog - /cms = config:cms.ini - -That this is a ``composite`` section means it dispatches the request -to other applications. ``use = egg:Paste#urlmap`` means to use the -composite application named ``urlmap`` from the ``Paste`` package. -``urlmap`` is a particularly common composite application -- it uses a -path prefix to map your request to another application. These are -the applications like "home", "blog", "wiki" and "config:cms.ini". The last -one just refers to another file ``cms.ini`` in the same directory. - -Next up:: - - [app:home] - use = egg:Paste#static - document_root = %(here)s/htdocs - -``egg:Paste#static`` is another simple application, in this case it -just serves up non-dynamic files. It takes one bit of configuration: -``document_root``. You can use variable substitution, which will pull -variables from the section ``[DEFAULT]`` (case sensitive!) with -markers like ``%(var_name)s``. The special variable ``%(here)s`` is -the directory containing the configuration file; you should use that -in lieu of relative filenames (which depend on the current directory, -which can change depending how the server is run). - -Then:: - - [filter-app:blog] - use = egg:Authentication#auth - next = blogapp - roles = admin - htpasswd = /home/me/users.htpasswd - - [app:blogapp] - use = egg:BlogApp - database = sqlite:/home/me/blog.db - -The ``[filter-app:blog]`` section means that you want an application -with a filter applied. The application being filtered is indicated -with ``next`` (which refers to the next section). The -``egg:Authentication#auth`` filter doesn't actually exist, but one -could imagine it logs people in and checks permissions. - -That last section is just a reference to an application that you -probably installed with ``pip install BlogApp``, and one bit of -configuration you passed to it (``database``). - -Lastly:: - - [app:wiki] - use = call:mywiki.main:application - database = sqlite:/home/me/wiki.db - -This section is similar to the previous one, with one important difference. -Instead of an entry point in an egg, it refers directly to the ``application`` -variable in the ``mywiki.main`` module. The reference consist of two parts, -separated by a colon. The left part is the full name of the module and the -right part is the path to the variable, as a Python expression relative to the -containing module. - -So, that's most of the features you'll use. - -Basic Usage ------------ - -The basic way you'll use Paste Deployment is to load `WSGI -<http://www.python.org/peps/pep-3333.html>`_ applications. Many -Python frameworks now support WSGI, so applications written for these -frameworks should be usable. - -The primary function is ``paste.deploy.loadapp``. This loads an -application given a URI. You can use it like:: - - from paste.deploy import loadapp - wsgi_app = loadapp('config:/path/to/config.ini') - -There's two URI formats currently supported: ``config:`` and ``egg:``. - -``config:`` URIs ----------------- - -URIs that being with ``config:`` refer to configuration files. These -filenames can be relative if you pass the ``relative_to`` keyword -argument to ``loadapp()``. - -.. note:: - - Filenames are never considered relative to the current working - directory, as that is a unpredictable location. Generally when - a URI has a context it will be seen as relative to that context; - for example, if you have a ``config:`` URI inside another - configuration file, the path is considered relative to the - directory that contains that configuration file. - -Config Format -~~~~~~~~~~~~~ - -Configuration files are in the INI format. This is a simple format -that looks like:: - - [section_name] - key = value - another key = a long value - that extends over multiple lines - -All values are strings (no quoting is necessary). The keys and -section names are case-sensitive, and may contain punctuation and -spaces (though both keys and values are stripped of leading and -trailing whitespace). Lines can be continued with leading whitespace. - -Lines beginning with ``#`` (preferred) or ``;`` are considered -comments. - -Applications -~~~~~~~~~~~~ - -You can define multiple applications in a single file; each -application goes in its own section. Even if you have just one -application, you must put it in a section. - -Each section name defining an application should be prefixed with -``app:``. The "main" section (when just defining one application) -would go in ``[app:main]`` or just ``[app]``. - -There's two ways to indicate the Python code for the application. The -first is to refer to another URI or name:: - - [app:myapp] - use = config:another_config_file.ini#app_name - - # or any URI: - [app:myotherapp] - use = egg:MyApp - - # or a callable from a module: - [app:mythirdapp] - use = call:my.project:myapplication - - # or even another section: - [app:mylastapp] - use = myotherapp - -It would seem at first that this was pointless; just a way to point to -another location. However, in addition to loading the application -from that location, you can also add or change the configuration. - -The other way to define an application is to point exactly to some -Python code:: - - [app:myapp] - paste.app_factory = myapp.modulename:app_factory - -You must give an explicit *protocol* (in this case -``paste.app_factory``), and the value is something to import. In -this case the module ``myapp.modulename`` is loaded, and the -``app_factory`` object retrieved from it. - -See `Defining Factories`_ for more about the protocols. - -Configuration -~~~~~~~~~~~~~ - -Configuration is done through keys besides ``use`` (or the protocol -names). Any other keys found in the section will be passed as keyword -arguments to the factory. This might look like:: - - [app:blog] - use = egg:MyBlog - database = mysql://localhost/blogdb - blogname = This Is My Blog! - -You can override these in other sections, like:: - - [app:otherblog] - use = blog - blogname = The other face of my blog - -This way some settings could be defined in a generic configuration -file (if you have ``use = config:other_config_file``) or you can -publish multiple (more specialized) applications just by adding a -section. - -Global Configuration -~~~~~~~~~~~~~~~~~~~~ - -Often many applications share the same configuration. While you can -do that a bit by using other config sections and overriding values, -often you want that done for a bunch of disparate configuration -values. And typically applications can't take "extra" configuration -parameters; with global configuration you do something equivalent to -"if this application wants to know the admin email, this is it". - -Applications are passed the global configuration separately, so they -must specifically pull values out of it; typically the global -configuration serves as the basis for defaults when no local -configuration is passed in. - -Global configuration to apply to every application defined in a file -should go in a special section named ``[DEFAULT]``. You can override -global configuration locally like:: - - [DEFAULT] - admin_email = [email protected] - - [app:main] - use = ... - set admin_email = [email protected] - -That is, by using ``set`` in front of the key. - -Composite Applications -~~~~~~~~~~~~~~~~~~~~~~ - -"Composite" applications are things that act like applications, but -are made up of other applications. One example would be a URL mapper, -where you mount applications at different URL paths. This might look -like:: - - [composite:main] - use = egg:Paste#urlmap - / = mainapp - /files = staticapp - - [app:mainapp] - use = egg:MyApp - - [app:staticapp] - use = egg:Paste#static - document_root = /path/to/docroot - -The composite application "main" is just like any other application -from the outside (you load it with ``loadapp`` for instance), but it -has access to other applications defined in the configuration file. - -Other Objects -~~~~~~~~~~~~~ - -In addition to sections with ``app:``, you can define filters and -servers in a configuration file, with ``server:`` and ``filter:`` -prefixes. You load these with ``loadserver`` and ``loadfilter``. The -configuration works just the same; you just get back different kinds -of objects. - -Filter Composition -~~~~~~~~~~~~~~~~~~ - -There are several ways to apply filters to applications. It mostly -depends on how many filters, and in what order you want to apply them. - -The first way is to use the ``filter-with`` setting, like:: - - [app:main] - use = egg:MyEgg - filter-with = printdebug - - [filter:printdebug] - use = egg:Paste#printdebug - # and you could have another filter-with here, and so on... - -Also, two special section types exist to apply filters to your -applications: ``[filter-app:...]`` and ``[pipeline:...]``. Both of -these sections define applications, and so can be used wherever an -application is needed. - -``filter-app`` defines a filter (just like you would in a -``[filter:...]`` section), and then a special key ``next`` which -points to the application to apply the filter to. - -``pipeline:`` is used when you need apply a number of filters. It -takes *one* configuration key ``pipeline`` (plus any global -configuration overrides you want). ``pipeline`` is a list of filters -ended by an application, like:: - - [pipeline:main] - pipeline = filter1 egg:FilterEgg#filter2 filter3 app - - [filter:filter1] - ... - -Getting Configuration -~~~~~~~~~~~~~~~~~~~~~ - -If you want to get the configuration without creating the application, -you can use the ``appconfig(uri)`` function, which is just like the -``loadapp()`` function except it returns the configuration that would -be used, as a dictionary. Both global and local configuration is -combined into a single dictionary, but you can look at just one or the -other with the attributes ``.local_conf`` and ``.global_conf``. - -``egg:`` URIs -------------- - -`Python Eggs <http://peak.telecommunity.com/DevCenter/PythonEggs>`_ -are a distribution and installation format produced by `setuptools -<http://peak.telecommunity.com/DevCenter/setuptools>`_ and -`distribute <http://packages.python.org/distribute/>`_ that adds metadata to a -normal Python package (among other things). - -You don't need to understand a whole lot about Eggs to use them. If -you have a `distutils -<http://python.org/doc/current/lib/module-distutils.html>`_ -``setup.py`` script, just change:: - - from distutils.core import setup - -to:: - - from setuptools import setup - -Now when you install the package it will be installed as an egg. - -The first important part about an Egg is that it has a -*specification*. This is formed from the name of your distribution -(the ``name`` keyword argument to ``setup()``), and you can specify a -specific version. So you can have an egg named ``MyApp``, or -``MyApp==0.1`` to specify a specific version. - -The second is *entry points*. These are references to Python objects -in your packages that are named and have a specific protocol. -"Protocol" here is just a way of saying that we will call them with -certain arguments, and expect a specific return value. We'll talk -more about the protocols later_. - -.. _later: `Defining Factories`_ - -The important part here is how we define entry points. You'll add an -argument to ``setup()`` like:: - - setup( - name='MyApp', - ... - entry_points={ - 'paste.app_factory': [ - 'main=myapp.mymodule:app_factory', - 'ob2=myapp.mymodule:ob_factory'], - }, - ) - -This defines two applications named ``main`` and ``ob2``. You can -then refer to these by ``egg:MyApp#main`` (or just ``egg:MyApp``, -since ``main`` is the default) and ``egg:MyApp#ob2``. - -The values are instructions for importing the objects. ``main`` is -located in the ``myapp.mymodule`` module, in an object named -``app_factory``. - -There's no way to add configuration to objects imported as Eggs. - -Defining Factories ------------------- - -This lets you point to factories (that obey the specific protocols we -mentioned). But that's not much use unless you can create factories -for your applications. - -There's a few protocols: ``paste.app_factory``, -``paste.composite_factory``, ``paste.filter_factory``, and lastly -``paste.server_factory``. Each of these expects a callable (like a -function, method, or class). - -``paste.app_factory`` -~~~~~~~~~~~~~~~~~~~~~~ - -The application is the most common. You define one like:: - - def app_factory(global_config, **local_conf): - return wsgi_app - -The ``global_config`` is a dictionary, and local configuration is -passed as keyword arguments. The function returns a WSGI application. - -``paste.composite_factory`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Composites are just slightly more complex:: - - def composite_factory(loader, global_config, **local_conf): - return wsgi_app - -The ``loader`` argument is an object that has a couple interesting -methods. ``get_app(name_or_uri, global_conf=None)`` return a WSGI -application with the given name. ``get_filter`` and ``get_server`` -work the same way. - -A more interesting example might be a composite factory that does -something. For instance, consider a "pipeline" application:: - - def pipeline_factory(loader, global_config, pipeline): - # space-separated list of filter and app names: - pipeline = pipeline.split() - filters = [loader.get_filter(n) for n in pipeline[:-1]] - app = loader.get_app(pipeline[-1]) - filters.reverse() # apply in reverse order! - for filter in filters: - app = filter(app) - return app - -Then we use it like:: - - [composite:main] - use = <pipeline_factory_uri> - pipeline = egg:Paste#printdebug session myapp - - [filter:session] - use = egg:Paste#session - store = memory - - [app:myapp] - use = egg:MyApp - -``paste.filter_factory`` -~~~~~~~~~~~~~~~~~~~~~~~~~ - -Filter factories are just like app factories (same signature), except -they return filters. Filters are callables that take a WSGI -application as the only argument, and return a "filtered" version of -that application. - -Here's an example of a filter that checks that the ``REMOTE_USER`` CGI -variable is set, creating a really simple authentication filter:: - - def auth_filter_factory(global_conf, req_usernames): - # space-separated list of usernames: - req_usernames = req_usernames.split() - def filter(app): - return AuthFilter(app, req_usernames) - return filter - - class AuthFilter(object): - def __init__(self, app, req_usernames): - self.app = app - self.req_usernames = req_usernames - - def __call__(self, environ, start_response): - if environ.get('REMOTE_USER') in self.req_usernames: - return self.app(environ, start_response) - start_response( - '403 Forbidden', [('Content-type', 'text/html')]) - return ['You are forbidden to view this resource'] - -``paste.filter_app_factory`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This is very similar to ``paste.filter_factory``, except that it also -takes a ``wsgi_app`` argument, and returns a WSGI application. So if -you changed the above example to:: - - class AuthFilter(object): - def __init__(self, app, global_conf, req_usernames): - .... - -Then ``AuthFilter`` would serve as a filter_app_factory -(``req_usernames`` is a required local configuration key in this -case). - -``paste.server_factory`` -~~~~~~~~~~~~~~~~~~~~~~~~~ - -This takes the same signature as applications and filters, but returns -a server. - -A server is a callable that takes a single argument, a WSGI -application. It then serves the application. - -An example might look like:: - - def server_factory(global_conf, host, port): - port = int(port) - def serve(app): - s = Server(app, host=host, port=port) - s.serve_forever() - return serve - -The implementation of ``Server`` is left to the user. - -``paste.server_runner`` -~~~~~~~~~~~~~~~~~~~~~~~~ - -Like ``paste.server_factory``, except ``wsgi_app`` is passed as the -first argument, and the server should run immediately. - -Outstanding Issues ------------------- - -* Should there be a "default" protocol for each type of object? Since - there's currently only one protocol, it seems like it makes sense - (in the future there could be multiple). Except that - ``paste.app_factory`` and ``paste.composite_factory`` overlap - considerably. - -* ConfigParser's INI parsing is kind of annoying. I'd like it both - more constrained and less constrained. Some parts are sloppy (like - the way it interprets ``[DEFAULT]``). - -* ``config:`` URLs should be potentially relative to other locations, - e.g., ``config:$docroot/...``. Maybe using variables from - ``global_conf``? - -* Should other variables have access to ``global_conf``? - -* Should objects be Python-syntax, instead of always strings? Lots of - code isn't usable with Python strings without a thin wrapper to - translate objects into their proper types. - -* Some short-form for a filter/app, where the filter refers to the - "next app". Maybe like:: - - [app-filter:app_name] - use = egg:... - next = next_app - - [app:next_app] - ... - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/docs/license.txt new/PasteDeploy-2.0.1/docs/license.txt --- old/PasteDeploy-1.5.2/docs/license.txt 2012-04-29 06:03:38.000000000 +0200 +++ new/PasteDeploy-2.0.1/docs/license.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -Copyright (c) 2006-2007 Ian Bicking and Contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/docs/news.txt new/PasteDeploy-2.0.1/docs/news.txt --- old/PasteDeploy-1.5.2/docs/news.txt 2013-12-27 18:37:45.000000000 +0100 +++ new/PasteDeploy-2.0.1/docs/news.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,179 +0,0 @@ -Paste Deployment News -===================== - -1.5.2 ------ - -* Fixed Python 3 issue in paste.deploy.util.fix_type_error() - -1.5.1 ------ - -* Fixed use of the wrong variable when determining the context protocol - -* Fixed invalid import of paste.deploy.Config to paste.deploy.config.Config - -* Fixed multi proxy IPs bug in X-Forwarded-For header in PrefixMiddleware - -* Fixed TypeError when trying to raise LookupError on Python 3 - -* Fixed exception reraise on Python 3 - -Thanks to Alexandre Conrad, Atsushi Odagiri, Pior Bastida and Tres Seaver for their contributions. - -1.5.0 ------ - -* Project is now maintained by Alex Grönholm <[email protected]> - -* Was printing extraneous data when calling setup.py - -* Fixed missing paster template files (fixes "paster create -t paste.deploy") - -* Excluded tests from release distributions - -* Added support for the "call:" protocol for loading apps directly as - functions (contributed by Jason Stitt) - -* Added Python 3.x support - -* Dropped Python 2.4 support - -* Removed the ``paste.deploy.epdesc`` and ``paste.deploy.interfaces`` modules - -- contact the maintainer if you actually needed them - -1.3.4 ------ - -* Fix loadconfig path handling on Jython on Windows. - -1.3.3 ------ - -* In :class:`paste.deploy.config.PrefixMiddleware` the headers - ``X-Forwarded-Scheme`` and ``X-Forwarded-Proto`` are now translated - to the key ``environ['wsgi.url_scheme']``. Also ``X-Forwarded-For`` - is translated to ``environ['REMOTE_ADDR']`` - -* Also in PrefixMiddleware, if X-Forwarded-Host has multiple - (comma-separated) values, use only the first value. - -1.3.2 ------ - -* Added ``paste.deploy.converters.asint()``. -* fixed use sections overwriting the config's __file__ value with the - use'd filename. -* ``paste.deploy.loadwsgi`` now supports variable expansion in the - DEFAULT section of config files (unlike plain ConfigParser). - -1.3.1 ------ - -* Fix ``appconfig`` config loading when using a config file with - ``filter-with`` in it (previously you'd get TypeError: iteration - over non-sequence) - -1.3 ---- - -* Added ``scheme`` option to ``PrefixMiddleware``, so you can force a - scheme (E.g., when proxying an HTTPS connection over HTTP). - -* Pop proper values into ``environ['paste.config']`` in - ``ConfigMiddleware``. - -1.1 ---- - -* Any ``global_conf`` extra keys you pass to ``loadapp`` (or the other - loaders) will show up as though they were in ``[DEFAULT]``, so they - can be used in variable interpolation. Note: this won't overwrite - any existing values in ``[DEFAULT]``. - -* Added ``force_port`` option to - ``paste.deploy.config.PrefixMiddleware``. Also the ``prefix`` - argument is stripped of any trailing ``/``, which can't be valid in - that position. - -1.0 ---- - -* Added some documentation for the different kinds of entry points - Paste Deploy uses. - -* Added a feature to ``PrefixMiddleware`` that translates the - ``X-Forwarded-Server`` header to ``Host``. - -0.9.6 ------ - -* Added ``PrefixMiddleware`` which compensates for cases where the - wsgi app is behind a proxy of some sort that isn't moving the prefix - into the SCRIPT_NAME in advance. - -* Changed _loadconfig() so that it works with Windows absolute paths. - -* Make the error messages prettier when you call a function and fail - to give an argument, like a required function argument. - -0.5 ---- - -* Made the ``paste_deploy`` template (used with ``paster create - --template=paste_deploy``) more useful, with an example application - and entry point. - -0.4 ---- - -* Allow filters to have ``filter-with`` values, just like - applications. - -* Renamed ``composit`` to ``composite`` (old names still work, but - aren't documented). - -* Added ``appconfig()`` to load along with ``loadapp()``, but return - the configuration without invoking the application. - -0.3 ---- - -* Allow variable setting like:: - - get local_var = global_var_name - - To bring in global variables to the local scope. - -* Allow interpolation in files, like ``%(here)s``. Anything in the - ``[DEFAULTS]`` section will be available to substitute into a value, - as will variables in the same section. Also, the special value - ``here`` will be the directory the configuration file is located in. - -0.2 ---- - -Released 26 August 2004 - -* Added a ``filter-with`` setting to applications. - -* Removed the ``1`` from all the protocol names (e.g., - ``paste.app_factory1`` is not ``paste.app_factory``). - -* Added ``filter-app:`` and ``pipeline:`` sections. `Docs - <paste-deploy.html#filter-composition>`__. - -* Added ``paste.filter_app_factory1`` (`doc - <paste-deploy.html#paste-filter-app-factory1>`__) and - ``paste.server_runner1`` (`doc - <paste-deploy.html#paste-server-runner1>`__) protocols. - -* Added ``paste.deploy.converters`` module for handling the - string values that are common with this system. - -0.1 ---- - -Released 22 August 2004 - -Initial version released. It's all new. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/paste/deploy/loadwsgi.py new/PasteDeploy-2.0.1/paste/deploy/loadwsgi.py --- old/PasteDeploy-1.5.2/paste/deploy/loadwsgi.py 2013-05-25 22:12:05.000000000 +0200 +++ new/PasteDeploy-2.0.1/paste/deploy/loadwsgi.py 2018-11-22 18:45:15.000000000 +0100 @@ -19,7 +19,13 @@ def import_string(s): - return pkg_resources.EntryPoint.parse("x=" + s).load(False) + ep = pkg_resources.EntryPoint.parse("x=" + s) + if hasattr(ep, 'resolve'): + # this is available on setuptools >= 10.2 + return ep.resolve() + else: + # this causes a DeprecationWarning on setuptools >= 11.3 + return ep.load(False) def _aslist(obj): @@ -406,12 +412,11 @@ global_conf=global_conf) section = self.find_config_section( object_type, name=name) - if global_conf is None: - global_conf = {} - else: - global_conf = global_conf.copy() defaults = self.parser.defaults() - global_conf.update(defaults) + _global_conf = defaults.copy() + if global_conf is not None: + _global_conf.update(global_conf) + global_conf = _global_conf local_conf = {} global_additions = {} get_from_globals = {} @@ -552,7 +557,7 @@ raise LookupError( "The [%s] pipeline section in %s has extra " "(disallowed) settings: %s" - % (', '.join(local_conf.keys()))) + % (section, self.filename, ', '.join(local_conf.keys()))) context = LoaderContext(None, PIPELINE, None, global_conf, local_conf, self) context.app_context = self.get_context( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/paste/deploy/paster_templates/paste_deploy/+package+/sampleapp.py_tmpl new/PasteDeploy-2.0.1/paste/deploy/paster_templates/paste_deploy/+package+/sampleapp.py_tmpl --- old/PasteDeploy-1.5.2/paste/deploy/paster_templates/paste_deploy/+package+/sampleapp.py_tmpl 2012-09-15 23:41:31.000000000 +0200 +++ new/PasteDeploy-2.0.1/paste/deploy/paster_templates/paste_deploy/+package+/sampleapp.py_tmpl 2018-11-22 18:45:15.000000000 +0100 @@ -10,14 +10,14 @@ start_response('200 OK', [('Content-type', 'text/html')]) greeting = CONFIG['greeting'] content = [ - '<html><head><title>%s</title></head>\n' % greeting, - '<body><h1>%s!</h1>\n' % greeting, - '<table border=1>\n', + b'<html><head><title>%s</title></head>\n' % greeting.encode('utf-8'), + b'<body><h1>%s!</h1>\n' % greeting.encode('utf-8'), + b'<table border=1>\n', ] items = environ.items() - items.sort() + items = sorted(items) for key, value in items: - content.append('<tr><td>%s</td><td>%s</td></tr>\n' - % (key, cgi.escape(repr(value)))) - content.append('</table></body></html>') + content.append(b'<tr><td>%s</td><td>%s</td></tr>\n' + % (key.encode('utf-8'), cgi.escape(repr(value)).encode('utf-8'))) + content.append(b'</table></body></html>') return content diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/paste/deploy/paster_templates/paste_deploy/+package+/wsgiapp.py_tmpl new/PasteDeploy-2.0.1/paste/deploy/paster_templates/paste_deploy/+package+/wsgiapp.py_tmpl --- old/PasteDeploy-1.5.2/paste/deploy/paster_templates/paste_deploy/+package+/wsgiapp.py_tmpl 2012-04-29 06:30:37.000000000 +0200 +++ new/PasteDeploy-2.0.1/paste/deploy/paster_templates/paste_deploy/+package+/wsgiapp.py_tmpl 2018-11-22 18:45:15.000000000 +0100 @@ -1,6 +1,7 @@ +from __future__ import absolute_import from paste.deploy.config import ConfigMiddleware -import sampleapp +from . import sampleapp def make_app( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/setup.cfg new/PasteDeploy-2.0.1/setup.cfg --- old/PasteDeploy-1.5.2/setup.cfg 2013-12-27 18:40:45.000000000 +0100 +++ new/PasteDeploy-2.0.1/setup.cfg 2018-12-04 15:20:59.000000000 +0100 @@ -1,8 +1,10 @@ [wheel] universal = true +[aliases] +test = pytest + [egg_info] tag_build = tag_date = 0 -tag_svn_revision = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PasteDeploy-1.5.2/setup.py new/PasteDeploy-2.0.1/setup.py --- old/PasteDeploy-1.5.2/setup.py 2013-12-27 18:38:46.000000000 +0100 +++ new/PasteDeploy-2.0.1/setup.py 2018-12-04 15:08:31.000000000 +0100 @@ -3,50 +3,61 @@ from setuptools import setup, find_packages here = os.path.dirname(__file__) -readme_path = os.path.join(here, 'README') +readme_path = os.path.join(here, "README.rst") readme = open(readme_path).read() +docs_extras = [ + "Sphinx >= 1.7.5", # Read The Docs minimum version + "pylons-sphinx-themes", +] setup( - name='PasteDeploy', - version='1.5.2', - description='Load, configure, and compose WSGI applications and servers', + name="PasteDeploy", + version="2.0.1", + description="Load, configure, and compose WSGI applications and servers", long_description=readme, classifiers=[ - 'Development Status :: 6 - Mature', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Programming Language :: Python', - 'Programming Language :: Python :: 2.5', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.1', - 'Programming Language :: Python :: 3.2', - 'Programming Language :: Python :: 3.3', - 'Topic :: Internet :: WWW/HTTP', - 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', - 'Topic :: Internet :: WWW/HTTP :: WSGI', - 'Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware', - 'Topic :: Software Development :: Libraries :: Python Modules', - 'Framework :: Paste', + "Development Status :: 6 - Mature", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware", + "Topic :: Software Development :: Libraries :: Python Modules", + "Framework :: Paste", ], - keywords='web wsgi application server', - author='Ian Bicking', - author_email='[email protected]', - maintainer='Alex Gronholm', - maintainer_email='[email protected]', - url='http://pythonpaste.org/deploy/', - license='MIT', - namespace_packages=['paste'], - packages=find_packages(exclude=['tests']), + keywords="web wsgi application server", + author="Ian Bicking", + author_email="[email protected]", + maintainer="Chris Dent", + maintainer_email="[email protected]", + url="https://pylonsproject.org/", + project_urls={ + "Documentation": "https://docs.pylonsproject.org/projects/pastedeploy/en/latest/", + "Changelog": "https://docs.pylonsproject.org/projects/pastedeploy/en/latest/news.html", + "Issue Tracker": "https://github.com/Pylons/pastedeploy/issues", + }, + license="MIT", + namespace_packages=["paste"], + packages=find_packages(exclude=["tests"]), include_package_data=True, zip_safe=False, - test_suite='nose.collector', - tests_require=['nose>=0.11'], + setup_requires=["pytest-runner"], + tests_require=["pytest"], extras_require={ - 'Config': [], - 'Paste': ['Paste'], + "Config": [], + "Paste": ["Paste"], + "docs": docs_extras, }, entry_points=""" [paste.filter_app_factory]
