Hello community, here is the log from the commit of package python-cliff for openSUSE:Factory checked in at 2014-09-15 17:41:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-cliff (Old) and /work/SRC/openSUSE:Factory/.python-cliff.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cliff" Changes: -------- --- /work/SRC/openSUSE:Factory/python-cliff/python-cliff.changes 2014-06-30 21:50:28.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-cliff.new/python-cliff.changes 2014-09-15 18:25:03.000000000 +0200 @@ -1,0 +2,20 @@ +Sat Sep 13 16:47:41 UTC 2014 - [email protected] + +- update to 1.7.0: + * Add release notes for 1.7.0 + * Fix stable integration tests + * Updated from global requirements + * Clean up default tox environment list + * Do not allow wheels for stable tests + * Set the main logger name to match the application + * CSV formatter should use system-dependent line ending + * Make show option compatible with Python 2.6 + * Use six.add_metaclass instead of __metaclass__ + * fixed typos found by RETF rules + * The --variable option to shell format is redundant + * Expose load_commands publicly + * Fix wrong method name assert_called_once + * Updated from global requirements + * Fix pep8 failures on rule E265 + +------------------------------------------------------------------- Old: ---- cliff-1.6.1.tar.gz New: ---- cliff-1.7.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-cliff.spec ++++++ --- /var/tmp/diff_new_pack.hvkShz/_old 2014-09-15 18:25:05.000000000 +0200 +++ /var/tmp/diff_new_pack.hvkShz/_new 2014-09-15 18:25:05.000000000 +0200 @@ -17,7 +17,7 @@ Name: python-cliff -Version: 1.6.1 +Version: 1.7.0 Release: 0 Url: https://github.com/dreamhost/cliff Summary: Command Line Interface Formulation Framework @@ -32,21 +32,21 @@ BuildRequires: python-PrettyTable BuildRequires: python-Sphinx BuildRequires: python-cmd2 -BuildRequires: python-coverage -BuildRequires: python-mock >= 1.0.1 +BuildRequires: python-coverage >= 3.6 +BuildRequires: python-mock >= 1.0 BuildRequires: python-nose BuildRequires: python-pbr BuildRequires: python-pyparsing >= 2.0.1 BuildRequires: python-six BuildRequires: python-stevedore -Requires: python-PrettyTable >= 0.6 +Requires: python-PrettyTable >= 0.7 %if 0%{?suse_version} <= 1110 Requires: python-argparse %endif Requires: python-cmd2 >= 0.6.7 Requires: python-pyparsing >= 2.0.1 -Requires: python-six -Requires: python-stevedore +Requires: python-six >= 1.7.0 +Requires: python-stevedore >= 0.14 %if 0%{?suse_version} && 0%{?suse_version} <= 1110 %{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %py_requires @@ -65,6 +65,10 @@ Requires: %{name} = %{version} %description doc +cliff is a framework for building command line programs. It uses +setuptools entry points to provide subcommands, output formatters, and +other extensions. + This package contains documentation files for %{name}. %prep ++++++ cliff-1.6.1.tar.gz -> cliff-1.7.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/AUTHORS new/cliff-1.7.0/AUTHORS --- old/cliff-1.6.1/AUTHORS 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/AUTHORS 2014-09-08 16:54:18.000000000 +0200 @@ -1 +1,28 @@ - +Andrea Frittoli <[email protected]> +ChangBo Guo(gcb) <[email protected]> +Christian Berendt <[email protected]> +Christophe CHAUVET <[email protected]> +Clint Byrum <[email protected]> +Dean Troyer <[email protected]> +Dirk Mueller <[email protected]> +Dirk Mueller <dirk@dmllr> +Doug Hellmann <[email protected]> +Doug Hellmann <[email protected]> +Doug Hellmann <[email protected]> +Duncan McGreggor <[email protected]> +Feodor Tersin <[email protected]> +Ilya Shakhat <[email protected]> +Jamie Lennox <[email protected]> +Joe Server <[email protected]> +Jonathan LaCour <[email protected]> +Mark McClain <[email protected]> +Matt Joyce <[email protected]> +Monty Taylor <[email protected]> +Qiu Yu <[email protected]> +Ryan Petrello <[email protected]> +Sascha Peilicke <[email protected]> +Terry Howe <[email protected]> +Tomaz Muraus <[email protected]> +heavenshell <[email protected]> +markmcclain <[email protected]> +qneill <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/ChangeLog new/cliff-1.7.0/ChangeLog --- old/cliff-1.6.1/ChangeLog 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/ChangeLog 2014-09-08 16:54:18.000000000 +0200 @@ -1,6 +1,25 @@ CHANGES ======= +1.7.0 +----- + +* Add release notes for 1.7.0 +* Fix stable integration tests +* Updated from global requirements +* Clean up default tox environment list +* Do not allow wheels for stable tests +* Set the main logger name to match the application +* CSV formatter should use system-dependent line ending +* Make show option compatible with Python 2.6 +* Use six.add_metaclass instead of __metaclass__ +* fixed typos found by RETF rules +* The --variable option to shell format is redundant +* Expose load_commands publicly +* Fix wrong method name assert_called_once +* Updated from global requirements +* Fix pep8 failures on rule E265 + 1.6.1 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/PKG-INFO new/cliff-1.7.0/PKG-INFO --- old/cliff-1.6.1/PKG-INFO 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/PKG-INFO 2014-09-08 16:54:19.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: cliff -Version: 1.6.1 +Version: 1.7.0 Summary: Command Line Interface Formulation Framework Home-page: https://launchpad.net/python-cliff Author: Doug Hellmann diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/app.py new/cliff-1.7.0/cliff/app.py --- old/cliff-1.6.1/cliff/app.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/app.py 2014-09-08 16:53:54.000000000 +0200 @@ -33,9 +33,6 @@ logging.getLogger('cliff').addHandler(NullHandler()) -LOG = logging.getLogger(__name__) - - class App(object): """Application base class. @@ -57,6 +54,7 @@ """ NAME = os.path.splitext(os.path.basename(sys.argv[0]))[0] + LOG = logging.getLogger(NAME) CONSOLE_MESSAGE_FORMAT = '%(message)s' LOG_FILE_MESSAGE_FORMAT = \ @@ -205,10 +203,10 @@ else: debug = True if debug: - LOG.exception(err) + self.LOG.exception(err) raise else: - LOG.error(err) + self.LOG.error(err) return 1 result = 1 if self.interactive_mode: @@ -265,7 +263,7 @@ if self.options.debug: raise else: - LOG.error(err) + self.LOG.error(err) return 2 cmd_factory, cmd_name, sub_argv = subcommand cmd = cmd_factory(self, self.options) @@ -282,16 +280,16 @@ result = cmd.run(parsed_args) except Exception as err: if self.options.debug: - LOG.exception(err) + self.LOG.exception(err) else: - LOG.error(err) + self.LOG.error(err) try: self.clean_up(cmd, result, err) except Exception as err2: if self.options.debug: - LOG.exception(err2) + self.LOG.exception(err2) else: - LOG.error('Could not clean up: %s', err2) + self.LOG.error('Could not clean up: %s', err2) if self.options.debug: raise else: @@ -299,7 +297,7 @@ self.clean_up(cmd, result, None) except Exception as err3: if self.options.debug: - LOG.exception(err3) + self.LOG.exception(err3) else: - LOG.error('Could not clean up: %s', err3) + self.LOG.error('Could not clean up: %s', err3) return result diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/command.py new/cliff-1.7.0/cliff/command.py --- old/cliff-1.6.1/cliff/command.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/command.py 2014-09-08 16:53:54.000000000 +0200 @@ -3,15 +3,16 @@ import argparse import inspect +import six + [email protected]_metaclass(abc.ABCMeta) class Command(object): """Base class for command plugins. :param app: Application instance invoking the command. :paramtype app: cliff.app.App """ - __metaclass__ = abc.ABCMeta - def __init__(self, app, app_args): self.app = app self.app_args = app_args diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/commandmanager.py new/cliff-1.7.0/cliff/commandmanager.py --- old/cliff-1.6.1/cliff/commandmanager.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/commandmanager.py 2014-09-08 16:53:54.000000000 +0200 @@ -28,7 +28,7 @@ for the plugins to be loaded. For example, ``'cliff.formatter.list'``. :param convert_underscores: Whether cliff should convert underscores to - to spaces in entry_point commands. + spaces in entry_point commands. """ def __init__(self, namespace, convert_underscores=True): self.commands = {} @@ -37,7 +37,12 @@ self._load_commands() def _load_commands(self): - for ep in pkg_resources.iter_entry_points(self.namespace): + # NOTE(jamielennox): kept for compatability. + self.load_commands(self.namespace) + + def load_commands(self, namespace): + """Load all the commands from an entrypoint""" + for ep in pkg_resources.iter_entry_points(namespace): LOG.debug('found command %r', ep.name) cmd_name = (ep.name.replace('_', ' ') if self.convert_underscores diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/display.py new/cliff-1.7.0/cliff/display.py --- old/cliff-1.6.1/cliff/display.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/display.py 2014-09-08 16:53:54.000000000 +0200 @@ -1,8 +1,19 @@ """Application base class for displaying data. """ import abc + +try: + from itertools import compress +except ImportError: + # for py26 compat + from itertools import izip + + def compress(data, selectors): + return (d for d, s in izip(data, selectors) if s) + import logging +import six import stevedore from .command import Command @@ -11,10 +22,10 @@ LOG = logging.getLogger(__name__) [email protected]_metaclass(abc.ABCMeta) class DisplayCommandBase(Command): """Command base class for displaying data about a single object. """ - __metaclass__ = abc.ABCMeta def __init__(self, app, app_args): super(DisplayCommandBase, self).__init__(app, app_args) @@ -80,3 +91,7 @@ column_names, data = self.take_action(parsed_args) self.produce_output(parsed_args, column_names, data) return 0 + + @staticmethod + def _compress_iterable(iterable, selectors): + return compress(iterable, selectors) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/formatters/base.py new/cliff-1.7.0/cliff/formatters/base.py --- old/cliff-1.6.1/cliff/formatters/base.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/formatters/base.py 2014-09-08 16:53:54.000000000 +0200 @@ -3,9 +3,11 @@ import abc +import six + [email protected]_metaclass(abc.ABCMeta) class Formatter(object): - __metaclass__ = abc.ABCMeta @abc.abstractmethod def add_argument_group(self, parser): @@ -15,10 +17,10 @@ """ [email protected]_metaclass(abc.ABCMeta) class ListFormatter(Formatter): """Base class for formatters that know how to deal with multiple objects. """ - __metaclass__ = abc.ABCMeta @abc.abstractmethod def emit_list(self, column_names, data, stdout, parsed_args): @@ -32,10 +34,10 @@ """ [email protected]_metaclass(abc.ABCMeta) class SingleFormatter(Formatter): """Base class for formatters that work with single objects. """ - __metaclass__ = abc.ABCMeta @abc.abstractmethod def emit_one(self, column_names, data, stdout, parsed_args): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/formatters/commaseparated.py new/cliff-1.7.0/cliff/formatters/commaseparated.py --- old/cliff-1.6.1/cliff/formatters/commaseparated.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/formatters/commaseparated.py 2014-09-08 16:53:54.000000000 +0200 @@ -2,6 +2,7 @@ """ import csv +import os from .base import ListFormatter @@ -28,6 +29,7 @@ def emit_list(self, column_names, data, stdout, parsed_args): writer = csv.writer(stdout, quoting=self.QUOTE_MODES[parsed_args.quote_mode], + lineterminator=os.linesep, ) writer.writerow(column_names) for row in data: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/formatters/shell.py new/cliff-1.7.0/cliff/formatters/shell.py --- old/cliff-1.6.1/cliff/formatters/shell.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/formatters/shell.py 2014-09-08 16:53:54.000000000 +0200 @@ -3,6 +3,7 @@ from .base import SingleFormatter +import argparse import six @@ -19,7 +20,7 @@ default=[], dest='variables', metavar='VARIABLE', - help='specify the variable(s) to include, can be repeated', + help=argparse.SUPPRESS, ) group.add_argument( '--prefix', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/interactive.py new/cliff-1.7.0/cliff/interactive.py --- old/cliff-1.6.1/cliff/interactive.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/interactive.py 2014-09-08 16:53:54.000000000 +0200 @@ -39,7 +39,7 @@ cmd2.Cmd.__init__(self, 'tab', stdin=stdin, stdout=stdout) def default(self, line): - # Tie in the the default command processor to + # Tie in the default command processor to # dispatch commands known to the command manager. # We send the message through our parent app, # since it already has the logic for executing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/lister.py new/cliff-1.7.0/cliff/lister.py --- old/cliff-1.6.1/cliff/lister.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/lister.py 2014-09-08 16:53:54.000000000 +0200 @@ -1,28 +1,20 @@ """Application base class for providing a list of data as output. """ import abc - -try: - from itertools import compress -except ImportError: - # for py26 compat - from itertools import izip - - def compress(data, selectors): - return (d for d, s in izip(data, selectors) if s) - import logging +import six + from .display import DisplayCommandBase LOG = logging.getLogger(__name__) [email protected]_metaclass(abc.ABCMeta) class Lister(DisplayCommandBase): """Command base class for providing a list of data as output. """ - __metaclass__ = abc.ABCMeta @property def formatter_namespace(self): @@ -56,7 +48,7 @@ # of data that the user has expressed interest in # seeing. We have to convert the compress() output to a # list so the table formatter can ask for its length. - data_gen = (list(compress(row, selector)) + data_gen = (list(self._compress_iterable(row, selector)) for row in data) self.formatter.emit_list(columns_to_include, data_gen, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/show.py new/cliff-1.7.0/cliff/show.py --- old/cliff-1.6.1/cliff/show.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/show.py 2014-09-08 16:53:54.000000000 +0200 @@ -1,19 +1,20 @@ """Application base class for displaying data about a single object. """ import abc -import itertools import logging +import six + from .display import DisplayCommandBase LOG = logging.getLogger(__name__) [email protected]_metaclass(abc.ABCMeta) class ShowOne(DisplayCommandBase): """Command base class for displaying data about a single object. """ - __metaclass__ = abc.ABCMeta @property def formatter_namespace(self): @@ -38,7 +39,7 @@ # Set up argument to compress() selector = [(c in columns_to_include) for c in column_names] - data = list(itertools.compress(data, selector)) + data = list(self._compress_iterable(data, selector)) self.formatter.emit_one(columns_to_include, data, self.app.stdout, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/tests/test_app.py new/cliff-1.7.0/cliff/tests/test_app.py --- old/cliff-1.6.1/cliff/tests/test_app.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/tests/test_app.py 2014-09-08 16:53:54.000000000 +0200 @@ -106,7 +106,7 @@ else: assert False, 'Should have had an exception' - app.clean_up.assert_called_once() + assert app.clean_up.called call_args = app.clean_up.call_args_list[0] assert call_args == mock.call(mock.ANY, 1, mock.ANY) args, kwargs = call_args @@ -123,7 +123,7 @@ ) app.run(['error']) - app.clean_up.assert_called_once() + assert app.clean_up.called call_args = app.clean_up.call_args_list[0] assert call_args == mock.call(mock.ANY, 1, mock.ANY) args, kwargs = call_args @@ -150,7 +150,7 @@ else: assert False, 'Should have had an exception' - app.clean_up.assert_called_once() + assert app.clean_up.called call_args = app.clean_up.call_args_list[0] assert call_args == mock.call(mock.ANY, 1, mock.ANY) args, kwargs = call_args @@ -167,7 +167,7 @@ ) app.run(['mock']) - app.clean_up.assert_called_once() + assert app.clean_up.called call_args = app.clean_up.call_args_list[0] assert call_args == mock.call(mock.ANY, 0, None) @@ -181,7 +181,7 @@ ) app.run(['--debug', 'mock']) - app.clean_up.assert_called_once() + assert app.clean_up.called call_args = app.clean_up.call_args_list[0] assert call_args == mock.call(mock.ANY, 0, None) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/tests/test_commandmanager.py new/cliff-1.7.0/cliff/tests/test_commandmanager.py --- old/cliff-1.6.1/cliff/tests/test_commandmanager.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/tests/test_commandmanager.py 2014-09-08 16:53:54.000000000 +0200 @@ -2,24 +2,7 @@ import mock from cliff.commandmanager import CommandManager - - -class TestCommand(object): - @classmethod - def load(cls): - return cls - - def __init__(self): - return - - -class TestCommandManager(CommandManager): - def _load_commands(self): - self.commands = { - 'one': TestCommand, - 'two words': TestCommand, - 'three word command': TestCommand, - } +from cliff.tests import utils def test_lookup_and_find(): @@ -28,7 +11,7 @@ assert cmd assert name == ' '.join(argv) assert not remaining - mgr = TestCommandManager('test') + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) for expected in [['one'], ['two', 'words'], ['three', 'word', 'command'], @@ -42,7 +25,7 @@ cmd, name, remaining = mgr.find_command(argv) assert cmd assert remaining == ['--opt'] - mgr = TestCommandManager('test') + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) for expected in [['one', '--opt'], ['two', 'words', '--opt'], ['three', 'word', 'command', '--opt'], @@ -52,7 +35,7 @@ def test_find_invalid_command(): - mgr = TestCommandManager('test') + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) def check_one(argv): try: @@ -68,7 +51,7 @@ def test_find_unknown_command(): - mgr = TestCommandManager('test') + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) try: mgr.find_command(['a', 'b']) except ValueError as err: @@ -78,7 +61,7 @@ def test_add_command(): - mgr = TestCommandManager('test') + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) mock_cmd = mock.Mock() mgr.add_command('mock', mock_cmd) found_cmd, name, args = mgr.find_command(['mock']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/tests/test_help.py new/cliff-1.7.0/cliff/tests/test_help.py --- old/cliff-1.6.1/cliff/tests/test_help.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/tests/test_help.py 2014-09-08 16:53:54.000000000 +0200 @@ -6,39 +6,8 @@ import mock from cliff.app import App -from cliff.command import Command -from cliff.commandmanager import CommandManager from cliff.help import HelpCommand - - -class TestParser(object): - - def print_help(self, stdout): - stdout.write('TestParser') - - -class TestCommand(Command): - - @classmethod - def load(cls): - return cls - - def get_parser(self, ignore): - # Make it look like this class is the parser - # so parse_args() is called. - return TestParser() - - def take_action(self, args): - return - - -class TestCommandManager(CommandManager): - def _load_commands(self): - self.commands = { - 'one': TestCommand, - 'two words': TestCommand, - 'three word command': TestCommand, - } +from cliff.tests import utils def test_show_help_for_command(): @@ -46,7 +15,9 @@ # do commands know too much about apps by using them to get to the # command manager? stdout = StringIO() - app = App('testing', '1', TestCommandManager('cliff.test'), stdout=stdout) + app = App('testing', '1', + utils.TestCommandManager(utils.TEST_NAMESPACE), + stdout=stdout) app.NAME = 'test' help_cmd = HelpCommand(app, mock.Mock()) parser = help_cmd.get_parser('test') @@ -63,7 +34,9 @@ # do commands know too much about apps by using them to get to the # command manager? stdout = StringIO() - app = App('testing', '1', TestCommandManager('cliff.test'), stdout=stdout) + app = App('testing', '1', + utils.TestCommandManager(utils.TEST_NAMESPACE), + stdout=stdout) app.NAME = 'test' help_cmd = HelpCommand(app, mock.Mock()) parser = help_cmd.get_parser('test') @@ -83,7 +56,9 @@ # do commands know too much about apps by using them to get to the # command manager? stdout = StringIO() - app = App('testing', '1', TestCommandManager('cliff.test'), stdout=stdout) + app = App('testing', '1', + utils.TestCommandManager(utils.TEST_NAMESPACE), + stdout=stdout) app.NAME = 'test' help_cmd = HelpCommand(app, mock.Mock()) parser = help_cmd.get_parser('test') @@ -103,7 +78,9 @@ # do commands know too much about apps by using them to get to the # command manager? stdout = StringIO() - app = App('testing', '1', TestCommandManager('cliff.test'), stdout=stdout) + app = App('testing', '1', + utils.TestCommandManager(utils.TEST_NAMESPACE), + stdout=stdout) app.NAME = 'test' help_cmd = HelpCommand(app, mock.Mock()) parser = help_cmd.get_parser('test') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/tests/test_show.py new/cliff-1.7.0/cliff/tests/test_show.py --- old/cliff-1.6.1/cliff/tests/test_show.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/cliff/tests/test_show.py 2014-09-08 16:53:54.000000000 +0200 @@ -1,5 +1,7 @@ #!/usr/bin/env python +import weakref + from cliff.show import ShowOne import mock @@ -9,15 +11,16 @@ def __init__(self): self.args = [] + self.obj = weakref.proxy(self) - def emit_list(self, columns, data, stdout, args): + def emit_one(self, columns, data, stdout, args): self.args.append((columns, data)) class ExerciseShowOne(ShowOne): - def load_formatter_plugins(self): - self.formatters = { + def _load_formatter_plugins(self): + return { 'test': FauxFormatter(), } return @@ -29,21 +32,22 @@ ) -# def test_formatter_args(): -# app = mock.Mock() -# test_lister = ExerciseLister(app, []) - -# parsed_args = mock.Mock() -# parsed_args.columns = ('Col1', 'Col2') -# parsed_args.formatter = 'test' - -# test_lister.run(parsed_args) -# f = test_lister.formatters['test'] -# assert len(f.args) == 1 -# args = f.args[0] -# assert args[0] == list(parsed_args.columns) -# data = list(args[1]) -# assert data == [['a', 'A'], ['b', 'B']] +def test_formatter_args(): + app = mock.Mock() + test_show = ExerciseShowOne(app, []) + + parsed_args = mock.Mock() + parsed_args.columns = ('Col1', 'Col2') + parsed_args.formatter = 'test' + + test_show.run(parsed_args) + f = test_show._formatter_plugins['test'] + assert len(f.args) == 1 + args = f.args[0] + assert args[0] == list(parsed_args.columns) + data = list(args[1]) + assert data == [('a', 'A'), ('b', 'B')] + def test_dict2columns(): app = mock.Mock() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff/tests/utils.py new/cliff-1.7.0/cliff/tests/utils.py --- old/cliff-1.6.1/cliff/tests/utils.py 1970-01-01 01:00:00.000000000 +0100 +++ new/cliff-1.7.0/cliff/tests/utils.py 2014-09-08 16:53:54.000000000 +0200 @@ -0,0 +1,30 @@ + +from cliff.command import Command +from cliff.commandmanager import CommandManager + +TEST_NAMESPACE = 'cliff.test' + + +class TestParser(object): + + def print_help(self, stdout): + stdout.write('TestParser') + + +class TestCommand(Command): + + def get_parser(self, ignore): + # Make it look like this class is the parser + # so parse_args() is called. + return TestParser() + + def take_action(self, args): + return + + +class TestCommandManager(CommandManager): + + def load_commands(self, namespace): + if namespace == TEST_NAMESPACE: + for key in ('one', 'two words', 'three word command'): + self.add_command(key, TestCommand) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff.egg-info/PKG-INFO new/cliff-1.7.0/cliff.egg-info/PKG-INFO --- old/cliff-1.6.1/cliff.egg-info/PKG-INFO 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/cliff.egg-info/PKG-INFO 2014-09-08 16:54:18.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: cliff -Version: 1.6.1 +Version: 1.7.0 Summary: Command Line Interface Formulation Framework Home-page: https://launchpad.net/python-cliff Author: Doug Hellmann diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff.egg-info/SOURCES.txt new/cliff-1.7.0/cliff.egg-info/SOURCES.txt --- old/cliff-1.6.1/cliff.egg-info/SOURCES.txt 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/cliff.egg-info/SOURCES.txt 2014-09-08 16:54:19.000000000 +0200 @@ -46,6 +46,7 @@ cliff/tests/test_help.py cliff/tests/test_lister.py cliff/tests/test_show.py +cliff/tests/utils.py demoapp/README.rst demoapp/setup.py demoapp/cliffdemo/__init__.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff.egg-info/entry_points.txt new/cliff-1.7.0/cliff.egg-info/entry_points.txt --- old/cliff-1.6.1/cliff.egg-info/entry_points.txt 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/cliff.egg-info/entry_points.txt 2014-09-08 16:54:18.000000000 +0200 @@ -1,13 +1,13 @@ [cliff.formatter.completion] -none = cliff.complete:CompleteNoCode bash = cliff.complete:CompleteBash +none = cliff.complete:CompleteNoCode [cliff.formatter.list] -table = cliff.formatters.table:TableFormatter csv = cliff.formatters.commaseparated:CSVLister +table = cliff.formatters.table:TableFormatter [cliff.formatter.show] -table = cliff.formatters.table:TableFormatter shell = cliff.formatters.shell:ShellFormatter +table = cliff.formatters.table:TableFormatter value = cliff.formatters.value:ValueFormatter diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/cliff.egg-info/requires.txt new/cliff-1.7.0/cliff.egg-info/requires.txt --- old/cliff-1.6.1/cliff.egg-info/requires.txt 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/cliff.egg-info/requires.txt 2014-09-08 16:54:18.000000000 +0200 @@ -1,5 +1,6 @@ +argparse cmd2>=0.6.7 PrettyTable>=0.7,<0.8 pyparsing>=2.0.1 -six>=1.4.1 -stevedore>=0.12 \ No newline at end of file +six>=1.7.0 +stevedore>=0.14 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/docs/source/conf.py new/cliff-1.7.0/docs/source/conf.py --- old/cliff-1.6.1/docs/source/conf.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/docs/source/conf.py 2014-09-08 16:53:54.000000000 +0200 @@ -18,12 +18,12 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) +# sys.path.insert(0, os.path.abspath('.')) # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' +# needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom @@ -37,7 +37,7 @@ source_suffix = '.rst' # The encoding of source files. -#source_encoding = 'utf-8-sig' +# source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' @@ -59,13 +59,13 @@ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. -#language = None +# language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: -#today = '' +# today = '' # Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' +# today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -73,24 +73,24 @@ # The reST default role (used for this markup: `text`) to use for all # documents. -#default_role = None +# default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True +# add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). -#add_module_names = True +# add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. -#show_authors = False +# show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] +# modindex_common_prefix = [] # -- Options for HTML output ------------------------------------------------- @@ -102,26 +102,26 @@ # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. -#html_theme_options = {} +# html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] +# html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # "<project> v<release> documentation". -#html_title = None +# html_title = None # A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None +# html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. -#html_logo = None +# html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. -#html_favicon = None +# html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -130,44 +130,44 @@ # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' +# html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. -#html_use_smartypants = True +# html_use_smartypants = True # Custom sidebar templates, maps document names to template names. -#html_sidebars = {} +# html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. -#html_additional_pages = {} +# html_additional_pages = {} # If false, no module index is generated. -#html_domain_indices = True +# html_domain_indices = True # If false, no index is generated. -#html_use_index = True +# html_use_index = True # If true, the index is split into individual pages for each letter. -#html_split_index = False +# html_split_index = False # If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True +# html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True +# html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True +# html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a <link> tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. -#html_use_opensearch = '' +# html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None +# html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'cliffdoc' @@ -177,13 +177,13 @@ latex_elements = { # The paper size ('letterpaper' or 'a4paper'). - #'papersize': 'letterpaper', + # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). - #'pointsize': '10pt', + # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. - #'preamble': '', + # 'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples @@ -196,23 +196,23 @@ # The name of an image file (relative to this directory) to place at the top of # the title page. -#latex_logo = None +# latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. -#latex_use_parts = False +# latex_use_parts = False # If true, show page references after internal links. -#latex_show_pagerefs = False +# latex_show_pagerefs = False # If true, show URL addresses after external links. -#latex_show_urls = False +# latex_show_urls = False # Documents to append as an appendix to all manuals. -#latex_appendices = [] +# latex_appendices = [] # If false, no module index is generated. -#latex_domain_indices = True +# latex_domain_indices = True # -- Options for manual page output ------------------------------------------ @@ -225,7 +225,7 @@ ] # If true, show URL addresses after external links. -#man_show_urls = False +# man_show_urls = False # -- Options for Texinfo output ---------------------------------------------- @@ -240,10 +240,10 @@ ] # Documents to append as an appendix to all manuals. -#texinfo_appendices = [] +# texinfo_appendices = [] # If false, no module index is generated. -#texinfo_domain_indices = True +# texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' +# texinfo_show_urls = 'footnote' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/docs/source/history.rst new/cliff-1.7.0/docs/source/history.rst --- old/cliff-1.6.1/docs/source/history.rst 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/docs/source/history.rst 2014-09-08 16:53:54.000000000 +0200 @@ -2,13 +2,50 @@ Release History ================= -dev +1.7.0 +----- -- Change the formatters attribute of display commands to reflect the - fact that it is meant to be an implementation detail of the base - class, and not used or modified by outsiders. +* Updated dependencies from OpenStack global requirements +* Clean up default tox environment list +* Do not allow wheels for stable tests +* Set the main logger name to match the application +* CSV formatter should use system-dependent line ending +* Make show option compatible with Python 2.6 +* Use six.add_metaclass instead of __metaclass__ +* fixed typos found by RETF rules +* The --variable option to shell format is redundant +* Expose load_commands publicly +* Fix wrong method name assert_called_once +* Fix pep8 failures on rule E265 + +1.6.1 +----- + +* Remove PrettyTable from documentation requirements +* Fix a bug in ShellFormatter's escaping of double quotes in strings +* Import run_cross_tests.sh from oslo-incubator +* add doc requirements to venv + +1.6.0 +----- + +* Add max-width support for table formatter +* Add value only output formattter +* Update readme with links to bug tracker and source +* Move pep8 dependency into pep8 tox test +* Fix doc build with Python 2.6.x +* Fix interactive mode with command line args +* Update .gitreview after repo rename +* Escape double quotes in shell formatter +* Add unit test for shell formatter +* Rename private attribute to avoid conflict +* Sync with global requirements +* Add integration tests with known consumers +* update history for previous change +* Make the formatters a private part of the command 1.5.2 +----- - Fix the arguments passed to commands when they are instantiated to pull out help. See https://github.com/dreamhost/cliff/issues/52 for @@ -18,32 +55,38 @@ - Use pbr for packaging. 1.4.5 +----- - Update the pyparsing dependency to a version that supports both Python 2 and Python 3. - Add PyPy testing. 1.4.4 +----- - Provide better error handling for unknown commands run from the command line. (Contributed by Christophe Chauvet.) 1.4.3 +----- - More stdout encoding issues with Python 2.6. 1.4.2 +----- - Fix an issue with unicode output under Python 2.6. See https://github.com/dreamhost/cliff/pull/40 for details. 1.4.1 +----- - Add ``dict2columns`` method to ``ShowOne``. (Contributed by Dean Troyer) - Pin the requirement for cmd2 more tightly. 1.4 +--- - Store a reference to the InteractiveApp on the App while in interactive mode to allow commands to update the interactive @@ -53,6 +96,7 @@ breaks updates in some cases, so just fail if it isn't there. 1.3.3 +----- - Restore compatibility with prettytable < 0.7.2 by forcing no output if there is no data (instead of printing an empty @@ -60,6 +104,7 @@ - Update to allow cmd2 version 0.6.5.1. Contributed by Dirk Mueller. 1.3.2 +----- - Add ``convert_underscores`` parameter to ``CommandManager`` ``__init__`` method to allow underscores to be used in command names. This optional @@ -72,6 +117,7 @@ .. _flake8: https://pypi.python.org/pypi/flake8 1.3.1 +----- - Sort list of commands in interactive help mode. (contributed by Ilya Shakhat) @@ -80,6 +126,7 @@ the Python version. 1.3 +--- - Allow user to pass ``argparse_kwargs`` argument to the ``build_option_parser`` method. This argument can contain extra @@ -88,11 +135,13 @@ - Updated documentation to include dependency on distribute. 1.2.1 +----- - Fix problem with documentation packaging. - Fix problem with missing ``izip`` import in ``lister.py``. 1.2 +--- - Fix problem with interactive mode ``help`` command. - Disable logging by default but add a ``--log-file`` option to @@ -101,16 +150,19 @@ OpenStack Quantum) 1.1.2 +----- - Fix a packaging problem introduced in version 1.1. 1.1 +--- - Move tablib support (JSON, YAML, and HTML formatters) to a separate project to comply with Ubuntu packaging requirements. See https://github.com/dreamhost/cliff-tablib 1.0 +--- - Add trailing newlines after output from tablib-based formatters (JSON, YAML, and HTML). Contributed by Matt Joyce. @@ -123,40 +175,47 @@ instead of :func:`get_data`. 0.7 +--- - - Clean up interactive mode flag settting. + - Clean up interactive mode flag setting. - Add support for Python 2.6, contributed by heavenshell. - Fix multi-word commands in interactive mode. 0.6 +--- - Pass the non-global argument list to :func:`initialize_app` to be used in initialization work. 0.5.1 +----- - Remove pinned version requirement for PrettyTable until the OpenStack clients catch up to the API change. 0.5 +--- - Asking for help about a command by prefix lists all matching commands. - Add formatters for HTML, JSON, and YAML. 0.4 +--- - Add shell formatter for single objects. - Add interactive mode. - Expand documentation. 0.3 +--- - Add ShowOne base class for commands that show details about single objects. - Fix a problem with Lister when there is no data to be printed. 0.2 +--- - Incorporate changes from dtroyer to replace use of optparse in App with argparse. @@ -164,6 +223,7 @@ subcommands. 0.1 +--- - Initial public release. - Included App, CommandManager, Lister, csv and table formatters, a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/integration-tests/neutronclient-stable.sh new/cliff-1.7.0/integration-tests/neutronclient-stable.sh --- old/cliff-1.6.1/integration-tests/neutronclient-stable.sh 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/integration-tests/neutronclient-stable.sh 2014-09-08 16:53:54.000000000 +0200 @@ -6,7 +6,7 @@ # Manually download the source from PyPI and build it with the --editable flag. # This gives us access to run the tests. -pip install --pre --no-deps --no-install --no-clean python-neutronclient +pip install --pre --no-deps --no-install --no-clean --no-use-wheel python-neutronclient # This is where the source will end up after pip is done downloading and building it srcdir=$envdir/build/python-neutronclient/ @@ -18,5 +18,9 @@ # Install the test requirements pip install --no-clean -r $srcdir/test-requirements.txt +# Force a known hash seed value to avoid sorting errors from tox +# giving us a random one. +export PYTHONHASHSEED=0 + # Run testr python setup.py testr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/integration-tests/openstackclient-stable.sh new/cliff-1.7.0/integration-tests/openstackclient-stable.sh --- old/cliff-1.6.1/integration-tests/openstackclient-stable.sh 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/integration-tests/openstackclient-stable.sh 2014-09-08 16:53:54.000000000 +0200 @@ -6,7 +6,7 @@ # Manually download the source from PyPI and build it with the --editable flag. # This gives us access to run the tests. -pip install --pre --no-deps --no-install --no-clean python-openstackclient +pip install --pre --no-deps --no-install --no-clean --no-use-wheel python-openstackclient # This is where the source will end up after pip is done downloading and building it srcdir=$envdir/build/python-openstackclient/ @@ -18,5 +18,9 @@ # Install the test requirements pip install --no-clean -r $srcdir/test-requirements.txt +# Force a known hash seed value to avoid sorting errors from tox +# giving us a random one. +export PYTHONHASHSEED=0 + # Run testr python setup.py testr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/integration-tests/openstackclient-tip.sh new/cliff-1.7.0/integration-tests/openstackclient-tip.sh --- old/cliff-1.6.1/integration-tests/openstackclient-tip.sh 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/integration-tests/openstackclient-tip.sh 2014-09-08 16:53:54.000000000 +0200 @@ -11,4 +11,8 @@ pip install -r test-requirements.txt +# Force a known hash seed value to avoid sorting errors from tox +# giving us a random one. +export PYTHONHASHSEED=0 + python setup.py testr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/requirements.txt new/cliff-1.7.0/requirements.txt --- old/cliff-1.6.1/requirements.txt 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/requirements.txt 2014-09-08 16:53:54.000000000 +0200 @@ -2,5 +2,5 @@ cmd2>=0.6.7 PrettyTable>=0.7,<0.8 pyparsing>=2.0.1 -six>=1.4.1 -stevedore>=0.12 +six>=1.7.0 +stevedore>=0.14 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/setup.cfg new/cliff-1.7.0/setup.cfg --- old/cliff-1.6.1/setup.cfg 2014-04-08 15:09:53.000000000 +0200 +++ new/cliff-1.7.0/setup.cfg 2014-09-08 16:54:19.000000000 +0200 @@ -43,7 +43,7 @@ source-dir = docs/source [egg_info] -tag_build = tag_date = 0 +tag_build = tag_svn_revision = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/setup.py new/cliff-1.7.0/setup.py --- old/cliff-1.6.1/setup.py 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/setup.py 2014-09-08 16:53:54.000000000 +0200 @@ -1,11 +1,27 @@ #!/usr/bin/env python +# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT import setuptools # In python < 2.7.4, a lazy loading of package `pbr` will break # setuptools if some other modules registered functions in `atexit`. # solution from: http://bugs.python.org/issue15881#msg170215 try: - import multiprocessing # flake8: noqa + import multiprocessing # noqa except ImportError: pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.6.1/tox.ini new/cliff-1.7.0/tox.ini --- old/cliff-1.6.1/tox.ini 2014-04-08 15:09:38.000000000 +0200 +++ new/cliff-1.7.0/tox.ini 2014-09-08 16:53:54.000000000 +0200 @@ -1,5 +1,5 @@ [tox] -envlist = py26,py27,py32,py33,pypy,pep8 +envlist = py33,py26,py27,pypy,pep8 [testenv] distribute = False -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
