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
+
+- Use noun phrase in summary.
+
+-------------------------------------------------------------------
+Mon Dec 17 21:14:33 UTC 2018 - Thomas Bechtold
+
+- 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
+
+- 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: alex.gronholm@nextday.fi
+Home-page: https://pylonsproject.org/
+Author: Ian Bicking
+Author-email: pylons-discuss@googlegroups.com
+Maintainer: Chris Dent
+Maintainer-email: pylons-discuss@googlegroups.com
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: alex.gronholm@nextday.fi
+Home-page: https://pylonsproject.org/
+Author: Ian Bicking
+Author-email: pylons-discuss@googlegroups.com
+Maintainer: Chris Dent
+Maintainer-email: pylons-discuss@googlegroups.com
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
-
-.. 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
-`_.
-
-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 `_. 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 = webmaster@example.com
-
- [app:main]
- use = ...
- set admin_email = bob@example.com
-
-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 = 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
-
-* 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
- `__.
-
-* Added ``paste.filter_app_factory1`` (`doc
- `__) and
- ``paste.server_runner1`` (`doc
- `__) 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='ianb@colorstudy.com',
- maintainer='Alex Gronholm',
- maintainer_email='alex.gronholm@nextday.fi',
- 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="pylons-discuss@googlegroups.com",
+ maintainer="Chris Dent",
+ maintainer_email="pylons-discuss@googlegroups.com",
+ 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]