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 - [email protected] + +- 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 <[email protected]> +ChangBo Guo(gcb) <[email protected]> Chris Yeoh <[email protected]> +Cleber Rosa <[email protected]> Daniel Rocco <[email protected]> Davanum Srinivas <[email protected]> Dirk Mueller <[email protected]> Doug Hellmann <[email protected]> Doug Hellmann <[email protected]> Doug Hellmann <[email protected]> +Jamie Lennox <[email protected]> Jeremy Stanley <[email protected]> Joshua Harlow <[email protected]> Joshua Harlow <[email protected]> Julien Danjou <[email protected]> Louis Taylor <[email protected]> +Marc Koderer <[email protected]> Philip Tzou <[email protected]> +Ricardo Kirkner <[email protected]> Ryan Petrello <[email protected]> Thomas Goirand <[email protected]> Wes Turner <[email protected]> +Zhao Lei <[email protected]> +caoyue <[email protected]> markmcclain <[email protected]> shuangtai <[email protected]> Łukasz Jernaś <[email protected]> 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 <[email protected]> - -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-lists + +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='[email protected]', + author_email='[email protected]', - 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='[email protected]', + + 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}'
