Hello community,
here is the log from the commit of package python-stevedore for openSUSE:Factory checked in at 2016-04-28 16:55:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-stevedore (Old)
and /work/SRC/openSUSE:Factory/.python-stevedore.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-stevedore"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-stevedore/python-stevedore.changes 2016-03-16 10:35:30.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-stevedore.new/python-stevedore.changes 2016-04-28 16:58:55.000000000 +0200
@@ -1,0 +2,25 @@
+Thu Apr 21 07:07:35 UTC 2016 - tbechtold@suse.com
+
+- update to 1.12.0:
+ * Add a reference to entry_point_inspector
+ * Updated from global requirements
+ * Trival:Remove unused logging import
+ * Remove work around for NullHandler
+ * remove unnecessary dependency on argparse
+ * Use Stevedore exceptions for finding extensions
+ * Clean up Python 2.6 related stuff
+ * Updated from global requirements
+ * Remove Python 2.6 classifier
+ * cleanup tox.ini
+ * Updated from global requirements
+ * docs - Set pbr 'warnerrors' option for doc build
+ * Add clarifying language to description of scanning for plugins
+ * clean up default tox environment list
+ * Show how to add a plugin in a separate package
+ * replace the hard-coded history list with an auto-generated one
+ * Fix spelling typo for maunal
+ * Updated from global requirements
+ * Examples typo fix
+- Enable tests during build
+
+-------------------------------------------------------------------
Old:
----
stevedore-1.8.0.tar.gz
New:
----
stevedore-1.12.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-stevedore.spec ++++++
--- /var/tmp/diff_new_pack.ISkVdJ/_old 2016-04-28 16:58:58.000000000 +0200
+++ /var/tmp/diff_new_pack.ISkVdJ/_new 2016-04-28 16:58:58.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-stevedore
-Version: 1.8.0
+Version: 1.12.0
Release: 0
Summary: Manage dynamic plugins for Python applications
License: Apache-2.0
@@ -32,8 +32,10 @@
BuildRequires: python-Sphinx
BuildRequires: python-oslosphinx
# Test requirements:
-#BuildRequires: python-mock
-#BuildRequires: python-nose
+BuildRequires: python-Pillow
+BuildRequires: python-mock
+BuildRequires: python-oslotest
+BuildRequires: python-testrepository
Requires: python-argparse
Requires: python-six >= 1.9.0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -60,8 +62,8 @@
%install
python setup.py install --prefix=%{_prefix} --root=%{buildroot}
-#%%check
-#nosetests
+%check
+python setup.py testr
%files
%defattr(-,root,root,-)
++++++ stevedore-1.8.0.tar.gz -> stevedore-1.12.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/.travis.yml new/stevedore-1.12.0/.travis.yml
--- old/stevedore-1.8.0/.travis.yml 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/.travis.yml 2016-02-25 07:07:57.000000000 +0100
@@ -1,6 +1,5 @@
language: python
python:
- - "2.6"
- "2.7"
- "3.2"
- "3.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/AUTHORS new/stevedore-1.12.0/AUTHORS
--- old/stevedore-1.8.0/AUTHORS 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/AUTHORS 2016-02-25 07:08:18.000000000 +0100
@@ -1,20 +1,27 @@
Abhishek Chanda
+ChangBo Guo(gcb)
Chris Yeoh
+Cleber Rosa
Daniel Rocco
Davanum Srinivas
Dirk Mueller
Doug Hellmann
Doug Hellmann
Doug Hellmann
+Jamie Lennox
Jeremy Stanley
Joshua Harlow
Joshua Harlow
Julien Danjou
Louis Taylor
+Marc Koderer
Philip Tzou
+Ricardo Kirkner
Ryan Petrello
Thomas Goirand
Wes Turner
+Zhao Lei
+caoyue
markmcclain
shuangtai
Łukasz Jernaś
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/ChangeLog new/stevedore-1.12.0/ChangeLog
--- old/stevedore-1.8.0/ChangeLog 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/ChangeLog 2016-02-25 07:08:18.000000000 +0100
@@ -1,6 +1,41 @@
CHANGES
=======
+1.12.0
+------
+
+* Add a reference to entry_point_inspector
+
+1.11.0
+------
+
+* Updated from global requirements
+* Trival:Remove unused logging import
+* Remove work around for NullHandler
+* remove unnecessary dependency on argparse
+
+1.10.0
+------
+
+* Use Stevedore exceptions for finding extensions
+* Clean up Python 2.6 related stuff
+* Updated from global requirements
+* Remove Python 2.6 classifier
+* cleanup tox.ini
+
+1.9.0
+-----
+
+* Updated from global requirements
+* docs - Set pbr 'warnerrors' option for doc build
+* Add clarifying language to description of scanning for plugins
+* clean up default tox environment list
+* Show how to add a plugin in a separate package
+* replace the hard-coded history list with an auto-generated one
+* Fix spelling typo for maunal
+* Updated from global requirements
+* Examples typo fix
+
1.8.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/PKG-INFO new/stevedore-1.12.0/PKG-INFO
--- old/stevedore-1.8.0/PKG-INFO 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/PKG-INFO 2016-02-25 07:08:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: stevedore
-Version: 1.8.0
+Version: 1.12.0
Summary: Manage dynamic plugins for Python applications
Home-page: http://docs.openstack.org/developer/stevedore/
Author: OpenStack
@@ -41,7 +41,6 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/doc/source/history.rst new/stevedore-1.12.0/doc/source/history.rst
--- old/stevedore-1.8.0/doc/source/history.rst 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/doc/source/history.rst 2016-02-25 07:07:57.000000000 +0100
@@ -1,116 +1 @@
-=========
- History
-=========
-
-0.14
-
-- Provide an option to control requirements checking when loading
- plugins, and disable it by default. This removes protection against
- loading the wrong version of a plugin, or that plugin's
- dependencies.
-
-0.13
-
-- Deprecate ``TestExtensionManager`` and replace with
- ``make_test_instance()`` class method to provide test classes that
- behave more like the production class, while still allowing the
- extensions to be injected for testing. (contributed by drocco-007)
-- Include a work-around to avoid a cpython bug with atexit
- (#15881). (contributed by philiptzou)
-- Update documentation to refer to setuptools instead of
- distribute. (contributed by westurner)
-- Add pypy to the list of default test configurations.
-
-0.12
-
-- Fixes an exception when reporting on an error where multiple drivers
- have the same name (:issue:`25`, solution provided by clayg).
-- Switch packaging to use pbr_.
-- Add ``map_method()`` API to controllers.
-
-.. _pbr: https://github.com/openstack-dev/pbr
-
-0.11
-
-- Fixes logging configuration under Python 2.6 with a NullHandler.
- (:issue:`2`)
-
-0.10
-
-- Adds ``propagate_map_exceptions`` parameter to all of the extension
- managers which specifies whether exceptions are propagated up
- through the map call or logged and then ignored. The default is to
- preserve the current behavior of logging and ignoring exceptions.
- Christopher Yeoh
-
-0.9
-
-- Add ``name_order`` parameter to
- :class:`~stevedore.named.NamedExtensionManager` to coerce
- :func:`map` into processing the extensions in the order they are
- named when the manager is created, instead of the random order
- they may have been loaded. Contributed by Daniel Rocco.
-- Change the
- :class:`~stevedore.dispatch.NamedDispatchExtensionManager` to ignore
- missing extensions (:issue:`14`).
-- Add ``__getitem__`` to
- :class:`~stevedore.extension.ExtensionManager` for looking up
- individual plugins by name (:issue:`15`).
-- Start working on the tutorial, :doc:`tutorial/index`.
-- Remove dependency on distribute, now that it is merged back into
- setuptools 0.7 (:issue:`19`).
-
-0.8
-
- - Ignore AssertionError exceptions generated when plugins are
- loaded.
- - Update :class:`~stevedore.named.NamedExtensionManager` to check
- the name of a plugin before loading its code to avoid importing
- anything we are not going to use.
-
-0.7.2
-
- - Fix logging support for Python 2.6.
-
-0.7.1
-
- - Fix an issue with logging configuration.
-
-0.7
-
- - Add memoization to the entrypoint scanning code in
- :class:`~stevedore.extension.ExtensionManager` to avoid
- performance issues in situations where lots of managers are
- instantiated with the same namespace argument.
-
-0.6
-
- - Change the :class:`~stevedore.enabled.EnabledExtensionManager` to
- load the extension before calling the check function so the plugin
- can be asked if it should be enabled.
-
-0.5
-
- - Add :class:`~stevedore.tests.manager.TestExtensionManager` for
- writing tests for classes that use extension managers.
-
-0.4
-
- - Removed the ``name`` argument to plugin constructors.
- - Added ``driver`` property to :class:`~stevedore.driver.DriverManager`.
-
-0.3
-
- - Added dispatch managers for selecting among a set of plugins at
- runtime instead of load time.
- - Added ``__call__`` method to
- :class:`~stevedore.driver.DriverManager` so it can be invoked in a
- more natural fashion for a single plugin.
-
-0.2
-
- - Added documentation
-
-0.1
-
- - First public release
+.. include:: ../../ChangeLog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/doc/source/index.rst new/stevedore-1.12.0/doc/source/index.rst
--- old/stevedore-1.8.0/doc/source/index.rst 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/doc/source/index.rst 2016-02-25 07:07:57.000000000 +0100
@@ -16,6 +16,7 @@
.. toctree::
:glob:
+ :maxdepth: 2
patterns_loading
patterns_enabling
@@ -24,6 +25,10 @@
sphinxext
install
essays/*
+
+.. toctree::
+ :maxdepth: 1
+
history
.. _setuptools entry points: http://packages.python.org/setuptools/pkg_resources.html#convenience-api
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/doc/source/install.rst new/stevedore-1.12.0/doc/source/install.rst
--- old/stevedore-1.8.0/doc/source/install.rst 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/doc/source/install.rst 2016-02-25 07:07:57.000000000 +0100
@@ -5,7 +5,7 @@
Python Versions
===============
-stevedore is tested under Python 2.6, 2.7 and 3.4.
+stevedore is tested under Python 2.7 and 3.4.
.. _install-basic:
@@ -36,6 +36,12 @@
The source is hosted on the OpenStack infrastructure: https://git.openstack.org/cgit/openstack/stevedore/
+Entry point inspector
+=====================
+
+To list entrypoints and registered plugins this tool can be also very useful:
+https://pypi.python.org/pypi/entry_point_inspector
+
Reporting Bugs
==============
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/doc/source/patterns_loading.rst new/stevedore-1.12.0/doc/source/patterns_loading.rst
--- old/stevedore-1.8.0/doc/source/patterns_loading.rst 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/doc/source/patterns_loading.rst 2016-02-25 07:07:57.000000000 +0100
@@ -53,7 +53,7 @@
=======================================
*Hooks*, *signals*, or *callbacks* are invoked based on an event
-occuring within an application. All of the hooks for an application
+occurring within an application. All of the hooks for an application
may share a single namespace (e.g., ``my.application.hooks``) and use
a different name for the triggered event (e.g., ``startup`` and
``precommit``). Multiple entry points can share the same name within
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/doc/source/tutorial/creating_plugins.rst new/stevedore-1.12.0/doc/source/tutorial/creating_plugins.rst
--- old/stevedore-1.8.0/doc/source/tutorial/creating_plugins.rst 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/doc/source/tutorial/creating_plugins.rst 2016-02-25 07:07:57.000000000 +0100
@@ -54,15 +54,9 @@
:language: python
:prepend: # stevedore/example/simple.py
-An alternate implementation produces a reStructuredText `field list`_.
-
-.. literalinclude:: ../../../stevedore/example/fields.py
- :language: python
- :prepend: # stevedore/example/fields.py
-
-There are plenty of other formatting options, but these two examples
-will give us enough to work with to demonstrate registering and using
-pluins.
+There are plenty of other formatting options, but this example will
+give us enough to work with to demonstrate registering and using
+plugins.
Registering the Plugins
=======================
@@ -70,7 +64,7 @@
To use setuptools entry points, you must package your application or
library using setuptools. The build and packaging process generates
metadata which is available after installation to find the plugins
-provided by each python distribution.
+provided by each python distribution.
The entry points must be declared as belonging to a specific
namespace, so we need to pick one before going any further. These
@@ -94,9 +88,9 @@
:language: python
:lines: 37-43
-In this case, there are three plugins registered. The "simple" and
-"field" plugins defined above, and a "plain" plugin, which is just an
-alias for the simple plugin.
+In this case, there are two plugins registered. The "simple" plugin
+defined above, and a "plain" plugin, which is just an alias for the
+simple plugin.
setuptools Metadata
===================
@@ -123,3 +117,45 @@
.. _abc module: http://docs.python.org/2/library/abc.html
.. _field list: http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#field-lis...
+
+Adding Plugins in Other Packages
+================================
+
+Part of the appeal of using entry points for plugins is that they can
+be distributed independently of an application. The namespace
+setuptools uses to find the plugins is different from the Python
+source code namespace. It is common to use a plugin namespace prefixed
+with the name of the application or library that loads the plugins, to
+ensure it is unique, but that name has no bearing on what Python
+package the code for the plugin should live in.
+
+For example, we can add an alternate implementation of a formatter
+plugin that produces a reStructuredText `field list`_.
+
+.. literalinclude:: ../../../stevedore/example2/fields.py
+ :language: python
+ :prepend: # stevedore/example2/fields.py
+
+The new plugin can then be packaged using a ``setup.py`` containing
+
+.. literalinclude:: ../../../stevedore/example2/setup.py
+ :language: python
+ :prepend: # stevedore/example2/setup.py
+
+The new plugin is in a separate ``stevedore-examples2`` package.
+
+.. literalinclude:: ../../../stevedore/example2/setup.py
+ :language: python
+ :lines: 3-4
+
+However, the plugin is registered as part of the
+``stevedore.example.formatter`` namespace.
+
+.. literalinclude:: ../../../stevedore/example2/setup.py
+ :language: python
+ :lines: 36-40
+
+When the plugin namespace is scanned, all packages on the current
+``PYTHONPATH`` are examined and the entry point from the second
+package is found and can be loaded without the application having to
+know where the plugin is actually installed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/requirements.txt new/stevedore-1.12.0/requirements.txt
--- old/stevedore-1.8.0/requirements.txt 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/requirements.txt 2016-02-25 07:07:57.000000000 +0100
@@ -2,6 +2,5 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-pbr<2.0,>=1.6
-argparse
-six>=1.9.0
+pbr>=1.6 # Apache-2.0
+six>=1.9.0 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/setup.cfg new/stevedore-1.12.0/setup.cfg
--- old/stevedore-1.8.0/setup.cfg 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/setup.cfg 2016-02-25 07:08:18.000000000 +0100
@@ -10,7 +10,6 @@
License :: OSI Approved :: Apache Software License
Programming Language :: Python
Programming Language :: Python :: 2
- Programming Language :: Python :: 2.6
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.4
@@ -41,11 +40,14 @@
build-dir = doc/build
source-dir = doc/source
+[pbr]
+warnerrors = True
+
[wheel]
universal = true
[egg_info]
-tag_svn_revision = 0
-tag_date = 0
tag_build =
+tag_date = 0
+tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/setup.py new/stevedore-1.12.0/setup.py
--- old/stevedore-1.8.0/setup.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/setup.py 2016-02-25 07:07:57.000000000 +0100
@@ -25,5 +25,5 @@
pass
setuptools.setup(
- setup_requires=['pbr>=1.3'],
+ setup_requires=['pbr>=1.8'],
pbr=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/__init__.py new/stevedore-1.12.0/stevedore/__init__.py
--- old/stevedore-1.8.0/stevedore/__init__.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/__init__.py 2016-02-25 07:07:57.000000000 +0100
@@ -20,17 +20,5 @@
# the app we're used from does not set up logging.
LOG = logging.getLogger('stevedore')
-if hasattr(logging, 'NullHandler'):
- LOG.addHandler(logging.NullHandler())
-else:
- class NullHandler(logging.Handler):
- def handle(self, record):
- pass
+LOG.addHandler(logging.NullHandler())
- def emit(self, record):
- pass
-
- def createLock(self):
- self.lock = None
-
- LOG.addHandler(NullHandler())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/dispatch.py new/stevedore-1.12.0/stevedore/dispatch.py
--- old/stevedore-1.8.0/stevedore/dispatch.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/dispatch.py 2016-02-25 07:07:57.000000000 +0100
@@ -1,6 +1,7 @@
import logging
from .enabled import EnabledExtensionManager
+from .exception import NoMatches
LOG = logging.getLogger(__name__)
@@ -66,7 +67,7 @@
"""
if not self.extensions:
# FIXME: Use a more specific exception class here.
- raise RuntimeError('No %s extensions found' % self.namespace)
+ raise NoMatches('No %s extensions found' % self.namespace)
response = []
for e in self.extensions:
if filter_func(e, *args, **kwds):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/driver.py new/stevedore-1.12.0/stevedore/driver.py
--- old/stevedore-1.8.0/stevedore/driver.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/driver.py 2016-02-25 07:07:57.000000000 +0100
@@ -1,3 +1,4 @@
+from .exception import NoMatches, MultipleMatches
from .named import NamedExtensionManager
@@ -93,14 +94,14 @@
if not self.extensions:
name = self._names[0]
- raise RuntimeError('No %r driver found, looking for %r' %
- (self.namespace, name))
+ raise NoMatches('No %r driver found, looking for %r' %
+ (self.namespace, name))
if len(self.extensions) > 1:
discovered_drivers = ','.join(e.entry_point_target
for e in self.extensions)
- raise RuntimeError('Multiple %r drivers found: %s' %
- (self.namespace, discovered_drivers))
+ raise MultipleMatches('Multiple %r drivers found: %s' %
+ (self.namespace, discovered_drivers))
def __call__(self, func, *args, **kwds):
"""Invokes func() for the single loaded extension.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/example/base.py new/stevedore-1.12.0/stevedore/example/base.py
--- old/stevedore-1.8.0/stevedore/example/base.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/example/base.py 2016-02-25 07:07:57.000000000 +0100
@@ -5,7 +5,7 @@
@six.add_metaclass(abc.ABCMeta)
class FormatterBase(object):
- """Base class for example plugin used in the tutoral.
+ """Base class for example plugin used in the tutorial.
"""
def __init__(self, max_width=60):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/example/fields.py new/stevedore-1.12.0/stevedore/example/fields.py
--- old/stevedore-1.8.0/stevedore/example/fields.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/example/fields.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-import textwrap
-
-from stevedore.example import base
-
-
-class FieldList(base.FormatterBase):
- """Format values as a reStructuredText field list.
-
- For example::
-
- : name1 : value
- : name2 : value
- : name3 : a long value
- will be wrapped with
- a hanging indent
- """
-
- def format(self, data):
- """Format the data and return unicode text.
-
- :param data: A dictionary with string keys and simple types as
- values.
- :type data: dict(str:?)
- """
- for name, value in sorted(data.items()):
- full_text = ': {name} : {value}'.format(
- name=name,
- value=value,
- )
- wrapped_text = textwrap.fill(
- full_text,
- initial_indent='',
- subsequent_indent=' ',
- width=self.max_width,
- )
- yield wrapped_text + '\n'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/example/setup.py new/stevedore-1.12.0/stevedore/example/setup.py
--- old/stevedore-1.8.0/stevedore/example/setup.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/example/setup.py 2016-02-25 07:07:57.000000000 +0100
@@ -7,16 +7,14 @@
description='Demonstration package for stevedore',
author='Doug Hellmann',
- author_email='doug.hellmann@dreamhost.com',
+ author_email='doug@doughellmann.com',
- url='https://github.com/dreamhost/stevedore',
- download_url='https://github.com/dreamhost/stevedore/tarball/master',
+ url='http://git.openstack.org/cgit/openstack/stevedore',
classifiers=['Development Status :: 3 - Alpha',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
- 'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
@@ -37,7 +35,6 @@
entry_points={
'stevedore.example.formatter': [
'simple = stevedore.example.simple:Simple',
- 'field = stevedore.example.fields:FieldList',
'plain = stevedore.example.simple:Simple',
],
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/example2/fields.py new/stevedore-1.12.0/stevedore/example2/fields.py
--- old/stevedore-1.8.0/stevedore/example2/fields.py 1970-01-01 01:00:00.000000000 +0100
+++ new/stevedore-1.12.0/stevedore/example2/fields.py 2016-02-25 07:07:57.000000000 +0100
@@ -0,0 +1,36 @@
+import textwrap
+
+from stevedore.example import base
+
+
+class FieldList(base.FormatterBase):
+ """Format values as a reStructuredText field list.
+
+ For example::
+
+ : name1 : value
+ : name2 : value
+ : name3 : a long value
+ will be wrapped with
+ a hanging indent
+ """
+
+ def format(self, data):
+ """Format the data and return unicode text.
+
+ :param data: A dictionary with string keys and simple types as
+ values.
+ :type data: dict(str:?)
+ """
+ for name, value in sorted(data.items()):
+ full_text = ': {name} : {value}'.format(
+ name=name,
+ value=value,
+ )
+ wrapped_text = textwrap.fill(
+ full_text,
+ initial_indent='',
+ subsequent_indent=' ',
+ width=self.max_width,
+ )
+ yield wrapped_text + '\n'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/example2/setup.py new/stevedore-1.12.0/stevedore/example2/setup.py
--- old/stevedore-1.8.0/stevedore/example2/setup.py 1970-01-01 01:00:00.000000000 +0100
+++ new/stevedore-1.12.0/stevedore/example2/setup.py 2016-02-25 07:07:57.000000000 +0100
@@ -0,0 +1,42 @@
+from setuptools import setup, find_packages
+
+setup(
+ name='stevedore-examples2',
+ version='1.0',
+
+ description='Demonstration package for stevedore',
+
+ author='Doug Hellmann',
+ author_email='doug@doughellmann.com',
+
+ url='http://git.openstack.org/cgit/openstack/stevedore',
+
+ classifiers=['Development Status :: 3 - Alpha',
+ 'License :: OSI Approved :: Apache Software License',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2',
+ 'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.4',
+ 'Intended Audience :: Developers',
+ 'Environment :: Console',
+ ],
+
+ platforms=['Any'],
+
+ scripts=[],
+
+ provides=['stevedore.examples2',
+ ],
+
+ packages=find_packages(),
+ include_package_data=True,
+
+ entry_points={
+ 'stevedore.example.formatter': [
+ 'field = stevedore.example2.fields:FieldList',
+ ],
+ },
+
+ zip_safe=False,
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/exception.py new/stevedore-1.12.0/stevedore/exception.py
--- old/stevedore-1.8.0/stevedore/exception.py 1970-01-01 01:00:00.000000000 +0100
+++ new/stevedore-1.12.0/stevedore/exception.py 2016-02-25 07:07:57.000000000 +0100
@@ -0,0 +1,10 @@
+class NoUniqueMatch(RuntimeError):
+ """There was more that one on no extensions matching the query."""
+
+
+class NoMatches(NoUniqueMatch):
+ """There were no extensions with the diver name found."""
+
+
+class MultipleMatches(NoUniqueMatch):
+ """There were multiple matches for the given name."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/extension.py new/stevedore-1.12.0/stevedore/extension.py
--- old/stevedore-1.8.0/stevedore/extension.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/extension.py 2016-02-25 07:07:57.000000000 +0100
@@ -5,6 +5,7 @@
import logging
+from .exception import NoMatches
LOG = logging.getLogger(__name__)
@@ -218,7 +219,7 @@
"""
if not self.extensions:
# FIXME: Use a more specific exception class here.
- raise RuntimeError('No %s extensions found' % self.namespace)
+ raise NoMatches('No %s extensions found' % self.namespace)
response = []
for e in self.extensions:
self._invoke_one_plugin(response.append, func, e, args, kwds)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/tests/manager.py new/stevedore-1.12.0/stevedore/tests/manager.py
--- old/stevedore-1.8.0/stevedore/tests/manager.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/tests/manager.py 2016-02-25 07:07:57.000000000 +0100
@@ -3,15 +3,11 @@
Extension manager used only for testing.
"""
-import logging
import warnings
from stevedore import extension
-LOG = logging.getLogger(__name__)
-
-
class TestExtensionManager(extension.ExtensionManager):
"""ExtensionManager that is explicitly initialized for tests.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/tests/test_driver.py new/stevedore-1.12.0/stevedore/tests/test_driver.py
--- old/stevedore-1.8.0/stevedore/tests/test_driver.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/tests/test_driver.py 2016-02-25 07:07:57.000000000 +0100
@@ -4,6 +4,7 @@
import pkg_resources
from stevedore import driver
+from stevedore import exception
from stevedore import extension
from stevedore.tests import test_extension
from stevedore.tests import utils
@@ -37,7 +38,7 @@
def test_no_drivers(self):
try:
driver.DriverManager('stevedore.test.extension.none', 't1')
- except RuntimeError as err:
+ except exception.NoMatches as err:
self.assertIn("No 'stevedore.test.extension.none' driver found",
str(err))
@@ -70,7 +71,7 @@
dm = driver.DriverManager.make_test_instance(extensions[0])
# Call the initialization code that verifies the extension
dm._init_plugins(extensions)
- except RuntimeError as err:
+ except exception.MultipleMatches as err:
self.assertIn("Multiple", str(err))
else:
self.fail('Should have had an error')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/tests/test_example_fields.py new/stevedore-1.12.0/stevedore/tests/test_example_fields.py
--- old/stevedore-1.8.0/stevedore/tests/test_example_fields.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/tests/test_example_fields.py 2016-02-25 07:07:57.000000000 +0100
@@ -1,7 +1,7 @@
-"""Tests for stevedore.exmaple.fields
+"""Tests for stevedore.example2.fields
"""
-from stevedore.example import fields
+from stevedore.example2 import fields
from stevedore.tests import utils
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/tests/test_example_simple.py new/stevedore-1.12.0/stevedore/tests/test_example_simple.py
--- old/stevedore-1.8.0/stevedore/tests/test_example_simple.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/tests/test_example_simple.py 2016-02-25 07:07:57.000000000 +0100
@@ -1,4 +1,4 @@
-"""Tests for stevedore.exmaple.simple
+"""Tests for stevedore.example.simple
"""
from stevedore.example import simple
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore/tests/test_extension.py new/stevedore-1.12.0/stevedore/tests/test_extension.py
--- old/stevedore-1.8.0/stevedore/tests/test_extension.py 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/stevedore/tests/test_extension.py 2016-02-25 07:07:57.000000000 +0100
@@ -3,6 +3,7 @@
import mock
+from stevedore import exception
from stevedore import extension
from stevedore.tests import utils
@@ -159,7 +160,7 @@
)
try:
em.map(mapped, 1, 2, a='A', b='B')
- except RuntimeError as err:
+ except exception.NoMatches as err:
self.assertEqual(expected_str, str(err))
def test_map_method(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore.egg-info/PKG-INFO new/stevedore-1.12.0/stevedore.egg-info/PKG-INFO
--- old/stevedore-1.8.0/stevedore.egg-info/PKG-INFO 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/stevedore.egg-info/PKG-INFO 2016-02-25 07:08:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: stevedore
-Version: 1.8.0
+Version: 1.12.0
Summary: Manage dynamic plugins for Python applications
Home-page: http://docs.openstack.org/developer/stevedore/
Author: OpenStack
@@ -41,7 +41,6 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore.egg-info/SOURCES.txt new/stevedore-1.12.0/stevedore.egg-info/SOURCES.txt
--- old/stevedore-1.8.0/stevedore.egg-info/SOURCES.txt 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/stevedore.egg-info/SOURCES.txt 2016-02-25 07:08:18.000000000 +0100
@@ -42,6 +42,7 @@
stevedore/dispatch.py
stevedore/driver.py
stevedore/enabled.py
+stevedore/exception.py
stevedore/extension.py
stevedore/hook.py
stevedore/named.py
@@ -56,11 +57,13 @@
stevedore.egg-info/top_level.txt
stevedore/example/__init__.py
stevedore/example/base.py
-stevedore/example/fields.py
stevedore/example/load_as_driver.py
stevedore/example/load_as_extension.py
stevedore/example/setup.py
stevedore/example/simple.py
+stevedore/example2/__init__.py
+stevedore/example2/fields.py
+stevedore/example2/setup.py
stevedore/tests/__init__.py
stevedore/tests/extension_unimportable.py
stevedore/tests/manager.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore.egg-info/pbr.json new/stevedore-1.12.0/stevedore.egg-info/pbr.json
--- old/stevedore-1.8.0/stevedore.egg-info/pbr.json 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/stevedore.egg-info/pbr.json 2016-02-25 07:08:18.000000000 +0100
@@ -1 +1 @@
-{"git_version": "d229c84", "is_release": true}
\ No newline at end of file
+{"git_version": "8a19d5f", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/stevedore.egg-info/requires.txt new/stevedore-1.12.0/stevedore.egg-info/requires.txt
--- old/stevedore-1.8.0/stevedore.egg-info/requires.txt 2015-09-08 18:03:12.000000000 +0200
+++ new/stevedore-1.12.0/stevedore.egg-info/requires.txt 2016-02-25 07:08:18.000000000 +0100
@@ -1,3 +1,2 @@
-pbr<2.0,>=1.6
-argparse
+pbr>=1.6
six>=1.9.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/test-requirements.txt new/stevedore-1.12.0/test-requirements.txt
--- old/stevedore-1.8.0/test-requirements.txt 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/test-requirements.txt 2016-02-25 07:07:57.000000000 +0100
@@ -2,11 +2,11 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-Pillow>=2.4.0 # MIT
-sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2
-mock>=1.2
-coverage>=3.6
-testrepository>=0.0.18
-discover
+Pillow>=2.4.0 # PIL License
+sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD
+mock>=1.2 # BSD
+coverage>=3.6 # Apache-2.0
+testrepository>=0.0.18 # Apache-2.0/BSD
+discover # BSD
oslotest>=1.10.0 # Apache-2.0
-oslosphinx>=2.5.0 # Apache-2.0
+oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stevedore-1.8.0/tox.ini new/stevedore-1.12.0/tox.ini
--- old/stevedore-1.8.0/tox.ini 2015-09-08 18:02:37.000000000 +0200
+++ new/stevedore-1.12.0/tox.ini 2016-02-25 07:07:57.000000000 +0100
@@ -1,12 +1,9 @@
[tox]
-envlist = py34,py26,py27,pypy,pep8,docs
+envlist = py34,py27,pep8,docs
[testenv]
deps =
- -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
-# tox passes --pre to pip by default, but we don't want that
-install_command = pip install {opts} {packages}
distribute = False
commands = python setup.py testr --testr-args='{posargs}'