Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-invoke for openSUSE:Factory checked in at 2022-10-18 12:44:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-invoke (Old) and /work/SRC/openSUSE:Factory/.python-invoke.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-invoke" Tue Oct 18 12:44:13 2022 rev:15 rq:1011262 version:1.7.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-invoke/python-invoke.changes 2022-09-25 15:34:41.603534828 +0200 +++ /work/SRC/openSUSE:Factory/.python-invoke.new.2275/python-invoke.changes 2022-10-18 12:44:18.473629207 +0200 @@ -1,0 +2,12 @@ +Sun Oct 16 17:50:36 UTC 2022 - Dirk M??ller <[email protected]> + +- update to 1.7.3: + * Fix a non-fatal bug in our setup.py long_description generation causing + 1.7.0-1.7.2 to have malformed description text on PyPI. + * Fix errors thrown when comparing Task objects to non-Task objects; such + comparisons are now always false. + * Refactor CLI parser instantiation such that the tasks.ignore_unknown_help + feature (added in 1.7) works when Invoke is run in --complete mode, i.e. in + tab-completion scripts. + +------------------------------------------------------------------- Old: ---- invoke-1.7.1.tar.gz New: ---- invoke-1.7.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-invoke.spec ++++++ --- /var/tmp/diff_new_pack.KwP0x3/_old 2022-10-18 12:44:19.017630446 +0200 +++ /var/tmp/diff_new_pack.KwP0x3/_new 2022-10-18 12:44:19.025630464 +0200 @@ -21,12 +21,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-invoke -Version: 1.7.1 +Version: 1.7.3 Release: 0 Summary: Pythonic Task Execution License: BSD-2-Clause Group: Development/Languages/Python -URL: http://www.pyinvoke.org +URL: https://www.pyinvoke.org Source: https://files.pythonhosted.org/packages/source/i/invoke/invoke-%{version}.tar.gz Patch0: 0001-Make-test-fallback-to-system-modules-when-vendorized.patch Patch1: pytest4.patch ++++++ invoke-1.7.1.tar.gz -> invoke-1.7.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/PKG-INFO new/invoke-1.7.3/PKG-INFO --- old/invoke-1.7.1/PKG-INFO 2022-05-11 18:04:22.000000000 +0200 +++ new/invoke-1.7.3/PKG-INFO 2022-09-30 23:52:17.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: invoke -Version: 1.7.1 +Version: 1.7.3 Summary: Pythonic task execution Home-page: https://pyinvoke.org Author: Jeff Forcier @@ -12,7 +12,38 @@ Project-URL: Changelog, https://www.pyinvoke.org/changelog.html Project-URL: CI, https://app.circleci.com/pipelines/github/pyinvoke/invoke Description: - 1.7.1 + |version| |python| |license| |ci| |coverage| + + .. |version| image:: https://img.shields.io/pypi/v/invoke + :target: https://pypi.org/project/invoke/ + :alt: PyPI - Package Version + .. |python| image:: https://img.shields.io/pypi/pyversions/invoke + :target: https://pypi.org/project/invoke/ + :alt: PyPI - Python Version + .. |license| image:: https://img.shields.io/pypi/l/invoke + :target: https://github.com/pyinvoke/invoke/blob/main/LICENSE + :alt: PyPI - License + .. |ci| image:: https://img.shields.io/circleci/build/github/pyinvoke/invoke/main + :target: https://app.circleci.com/pipelines/github/pyinvoke/invoke + :alt: CircleCI + .. |coverage| image:: https://img.shields.io/codecov/c/gh/pyinvoke/invoke + :target: https://app.codecov.io/gh/pyinvoke/invoke + :alt: Codecov + + Welcome to Invoke! + ================== + + Invoke is a Python (2.7 and 3.4+) library for managing shell-oriented + subprocesses and organizing executable Python code into CLI-invokable tasks. It + draws inspiration from various sources (``make``/``rake``, Fabric 1.x, etc) to + arrive at a powerful & clean feature set. + + To find out what's new in this version of Invoke, please see `the changelog + <https://pyinvoke.org/changelog.html#{}>`_. + + The project maintainer keeps a `roadmap + <https://bitprophet.org/projects#roadmap>`_ on his website. + For a high level introduction, including example code, please see `our main project website <https://pyinvoke.org>`_; or for detailed API docs, see `the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/invoke/_version.py new/invoke-1.7.3/invoke/_version.py --- old/invoke-1.7.1/invoke/_version.py 2022-05-11 18:04:21.000000000 +0200 +++ new/invoke-1.7.3/invoke/_version.py 2022-09-30 23:52:02.000000000 +0200 @@ -1,2 +1,2 @@ -__version_info__ = (1, 7, 1) +__version_info__ = (1, 7, 3) __version__ = ".".join(map(str, __version_info__)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/invoke/completion/complete.py new/invoke-1.7.3/invoke/completion/complete.py --- old/invoke-1.7.1/invoke/completion/complete.py 2021-12-23 22:30:34.000000000 +0100 +++ new/invoke-1.7.3/invoke/completion/complete.py 2022-09-30 22:03:27.000000000 +0200 @@ -8,20 +8,16 @@ import shlex from ..exceptions import Exit, ParseError -from ..parser import Parser from ..util import debug, task_name_sort_key -def complete(names, core, initial_context, collection): +def complete(names, core, initial_context, collection, parser): # Strip out program name (scripts give us full command line) # TODO: this may not handle path/to/script though? invocation = re.sub(r"^({}) ".format("|".join(names)), "", core.remainder) debug("Completing for invocation: {!r}".format(invocation)) # Tokenize (shlex will have to do) tokens = shlex.split(invocation) - # Make ourselves a parser (can't just reuse original one as it's mutated / - # been overwritten) - parser = Parser(initial=initial_context, contexts=collection.to_contexts()) # Handle flags (partial or otherwise) if tokens and tokens[-1].startswith("-"): tail = tokens[-1] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/invoke/program.py new/invoke-1.7.3/invoke/program.py --- old/invoke-1.7.1/invoke/program.py 2022-03-19 00:43:51.000000000 +0100 +++ new/invoke-1.7.3/invoke/program.py 2022-09-30 22:03:27.000000000 +0200 @@ -523,6 +523,9 @@ core=self.core, initial_context=self.initial_context, collection=self.collection, + # NOTE: can't reuse self.parser as it has likely been mutated + # between when it was set and now. + parser=self._make_parser(), ) # Fallback behavior if no tasks were given & no default specified @@ -717,6 +720,14 @@ if arg.got_value: context.args[key]._value = arg._value + def _make_parser(self): + return Parser( + initial=self.initial_context, + contexts=self.collection.to_contexts( + ignore_unknown_help=self.config.tasks.ignore_unknown_help + ), + ) + def parse_tasks(self): """ Parse leftover args, which are typically tasks & per-task args. @@ -731,12 +742,7 @@ .. versionadded:: 1.0 """ - self.parser = Parser( - initial=self.initial_context, - contexts=self.collection.to_contexts( - ignore_unknown_help=self.config.tasks.ignore_unknown_help - ), - ) + self.parser = self._make_parser() debug("Parsing tasks against {!r}".format(self.collection)) result = self.parser.parse_argv(self.core.unparsed) self.core_via_tasks = result.pop(0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/invoke/tasks.py new/invoke-1.7.3/invoke/tasks.py --- old/invoke-1.7.1/invoke/tasks.py 2022-03-19 00:43:51.000000000 +0100 +++ new/invoke-1.7.3/invoke/tasks.py 2022-09-30 22:03:27.000000000 +0200 @@ -97,7 +97,7 @@ return "<Task {!r}{}>".format(self.name, aliases) def __eq__(self, other): - if self.name != other.name: + if not isinstance(other, Task) or self.name != other.name: return False # Functions do not define __eq__ but func_code objects apparently do. # (If we're wrapping some other callable, they will be responsible for diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/invoke.egg-info/PKG-INFO new/invoke-1.7.3/invoke.egg-info/PKG-INFO --- old/invoke-1.7.1/invoke.egg-info/PKG-INFO 2022-05-11 18:04:22.000000000 +0200 +++ new/invoke-1.7.3/invoke.egg-info/PKG-INFO 2022-09-30 23:52:17.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: invoke -Version: 1.7.1 +Version: 1.7.3 Summary: Pythonic task execution Home-page: https://pyinvoke.org Author: Jeff Forcier @@ -12,7 +12,38 @@ Project-URL: Changelog, https://www.pyinvoke.org/changelog.html Project-URL: CI, https://app.circleci.com/pipelines/github/pyinvoke/invoke Description: - 1.7.1 + |version| |python| |license| |ci| |coverage| + + .. |version| image:: https://img.shields.io/pypi/v/invoke + :target: https://pypi.org/project/invoke/ + :alt: PyPI - Package Version + .. |python| image:: https://img.shields.io/pypi/pyversions/invoke + :target: https://pypi.org/project/invoke/ + :alt: PyPI - Python Version + .. |license| image:: https://img.shields.io/pypi/l/invoke + :target: https://github.com/pyinvoke/invoke/blob/main/LICENSE + :alt: PyPI - License + .. |ci| image:: https://img.shields.io/circleci/build/github/pyinvoke/invoke/main + :target: https://app.circleci.com/pipelines/github/pyinvoke/invoke + :alt: CircleCI + .. |coverage| image:: https://img.shields.io/codecov/c/gh/pyinvoke/invoke + :target: https://app.codecov.io/gh/pyinvoke/invoke + :alt: Codecov + + Welcome to Invoke! + ================== + + Invoke is a Python (2.7 and 3.4+) library for managing shell-oriented + subprocesses and organizing executable Python code into CLI-invokable tasks. It + draws inspiration from various sources (``make``/``rake``, Fabric 1.x, etc) to + arrive at a powerful & clean feature set. + + To find out what's new in this version of Invoke, please see `the changelog + <https://pyinvoke.org/changelog.html#{}>`_. + + The project maintainer keeps a `roadmap + <https://bitprophet.org/projects#roadmap>`_ on his website. + For a high level introduction, including example code, please see `our main project website <https://pyinvoke.org>`_; or for detailed API docs, see `the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/invoke.egg-info/SOURCES.txt new/invoke-1.7.3/invoke.egg-info/SOURCES.txt --- old/invoke-1.7.1/invoke.egg-info/SOURCES.txt 2022-05-11 18:04:22.000000000 +0200 +++ new/invoke-1.7.3/invoke.egg-info/SOURCES.txt 2022-09-30 23:52:17.000000000 +0200 @@ -106,6 +106,7 @@ sites/docs/concepts/namespaces.rst sites/docs/concepts/testing.rst sites/docs/concepts/watchers.rst +sites/www/.changelog.rst.swp sites/www/changelog.rst sites/www/conf.py sites/www/contact.rst diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/setup.py new/invoke-1.7.3/setup.py --- old/invoke-1.7.1/setup.py 2022-03-25 23:34:57.000000000 +0100 +++ new/invoke-1.7.3/setup.py 2022-09-30 23:50:26.000000000 +0200 @@ -23,9 +23,7 @@ For a high level introduction, including example code, please see `our main project website <https://pyinvoke.org>`_; or for detailed API docs, see `the versioned API website <https://docs.pyinvoke.org>`_. -""".format( - version, open("README.rst").read() -) +""".format(open("README.rst").read()) setup( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/sites/docs/conf.py new/invoke-1.7.3/sites/docs/conf.py --- old/invoke-1.7.1/sites/docs/conf.py 2022-03-18 22:53:07.000000000 +0100 +++ new/invoke-1.7.3/sites/docs/conf.py 2022-06-07 22:06:04.000000000 +0200 @@ -13,5 +13,5 @@ # Sister-site links to WWW html_theme_options["extra_nav_links"] = { - "Main website": "https//www.pyinvoke.org" + "Main website": "https://www.pyinvoke.org" } Binary files old/invoke-1.7.1/sites/www/.changelog.rst.swp and new/invoke-1.7.3/sites/www/.changelog.rst.swp differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/sites/www/changelog.rst new/invoke-1.7.3/sites/www/changelog.rst --- old/invoke-1.7.1/sites/www/changelog.rst 2022-05-11 18:04:18.000000000 +0200 +++ new/invoke-1.7.3/sites/www/changelog.rst 2022-09-30 23:51:50.000000000 +0200 @@ -2,6 +2,16 @@ Changelog ========= +- :release:`1.7.3 <2022-09-30>` +- :support:`- backported` Fix a non-fatal bug in our setup.py + ``long_description`` generation causing 1.7.0-1.7.2 to have malformed + description text on PyPI. +- :release:`1.7.2 <2022-09-30>` +- :bug:`876` Refactor CLI parser instantiation such that the + ``tasks.ignore_unknown_help`` feature (added in 1.7) works when Invoke is run + in ``--complete`` mode, i.e. in tab-completion scripts. +- :bug:`-` Fix errors thrown when comparing `~invoke.tasks.Task` objects to + non-Task objects; such comparisons are now always false. - :release:`1.7.1 <2022-05-11>` - :bug:`659` Improve behavior under ``nohup``, which causes stdin to become an undetectably-unreadable (but otherwise legit) file descriptor. Previously diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/tests/completion.py new/invoke-1.7.3/tests/completion.py --- old/invoke-1.7.1/tests/completion.py 2021-12-23 22:30:34.000000000 +0100 +++ new/invoke-1.7.3/tests/completion.py 2022-09-30 22:03:27.000000000 +0200 @@ -1,7 +1,7 @@ import os import sys -from invoke import Program +from invoke import Program, task, Collection import pytest @@ -191,3 +191,26 @@ for given in ("--ar", "--nope"): completion = _complete("multiple-args {}".format(given), "foo") assert flag in completion + + @trap + def completion_given_parser_by_program(self): + # Trial case: means honoring config ignore_unknown_help option + # (i.e. not exploding when any task in the target collection has unused + # help keys; doesn't actually need the completion invocation to include + # said task!) + # NOTE: subclassing to mimic real world report case, and for ease of + # shoving in a config override + + @task(help=dict(lol="nope")) + def noboomplz(c): + pass + + ns = Collection(noboomplz) + + class MyProgram(Program): + def create_config(self): + super(MyProgram, self).create_config() + self.config.tasks.ignore_unknown_help = True + + MyProgram(namespace=ns).run("inv --complete -- inv noboom", exit=False) + assert sys.stdout.getvalue().strip() == "noboomplz" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/invoke-1.7.1/tests/task.py new/invoke-1.7.3/tests/task.py --- old/invoke-1.7.1/tests/task.py 2022-03-19 00:43:51.000000000 +0100 +++ new/invoke-1.7.3/tests/task.py 2022-09-30 22:03:27.000000000 +0200 @@ -188,6 +188,16 @@ t3 = Task(_func, name="bar") assert t1 != t3 + def equality_testing_false_for_non_task_objects(self): + t = Task(_func, name="foo") + # No name attribute at all + assert t != object() + # Name attr, but not a Task + class Named: + name = "foo" + + assert t != Named() + class function_like_behavior: # Things that help them eg show up in autodoc easier def inherits_module_from_body(self):
