Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-transitions for openSUSE:Factory checked in at 2024-06-03 17:41:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-transitions (Old) and /work/SRC/openSUSE:Factory/.python-transitions.new.24587 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-transitions" Mon Jun 3 17:41:47 2024 rev:13 rq:1177995 version:0.9.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-transitions/python-transitions.changes 2024-01-12 23:46:12.640319352 +0100 +++ /work/SRC/openSUSE:Factory/.python-transitions.new.24587/python-transitions.changes 2024-06-03 17:41:57.827718378 +0200 @@ -1,0 +2,12 @@ +Thu May 30 08:25:50 UTC 2024 - Markéta Machová <mmachova@suse.com> + +- update to 0.9.1 + * several bugfixes + * typing improvements + * introduces `on_final` callbacks on machines (as well as + `NestedState`) and `final` flags for states + * see the full list in Changelog.md +- Add remove-py2-crumbs.patch to get rid of most py2 remnants +- Add iteritems.patch to clean the rest of six + +------------------------------------------------------------------- Old: ---- transitions-0.9.0.tar.gz New: ---- iteritems.patch remove-py2-crumbs.patch transitions-0.9.1.tar.gz BETA DEBUG BEGIN: New:- Add remove-py2-crumbs.patch to get rid of most py2 remnants - Add iteritems.patch to clean the rest of six New: * see the full list in Changelog.md - Add remove-py2-crumbs.patch to get rid of most py2 remnants - Add iteritems.patch to clean the rest of six BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-transitions.spec ++++++ --- /var/tmp/diff_new_pack.57OCoh/_old 2024-06-03 17:42:00.255810711 +0200 +++ /var/tmp/diff_new_pack.57OCoh/_new 2024-06-03 17:42:00.271811319 +0200 @@ -18,17 +18,20 @@ Name: python-transitions -Version: 0.9.0 +Version: 0.9.1 Release: 0 Summary: A lightweight, object-oriented Python state machine implementation License: MIT Group: Development/Languages/Python URL: https://github.com/pytransitions/transitions Source: https://files.pythonhosted.org/packages/source/t/transitions/transitions-%{version}.tar.gz +# PATCH-FIX-UPSTREAM https://github.com/pytransitions/transitions/pull/653 remove Python 2 crumbs +Patch: remove-py2-crumbs.patch +# PATCH-FIX-UPSTREAM https://github.com/a-detiste/transitions/pull/1 remove more python crumbs +Patch: iteritems.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-six Suggests: python-pygraphviz Suggests: python-pytest BuildArch: noarch @@ -38,7 +41,6 @@ BuildRequires: %{python_module pycodestyle} BuildRequires: %{python_module pygraphviz} BuildRequires: %{python_module pytest} -BuildRequires: %{python_module six} # png support for graphviz BuildRequires: graphviz-gnome BuildRequires: noto-sans-fonts ++++++ iteritems.patch ++++++ Index: transitions-0.9.1/transitions/extensions/factory.py =================================================================== --- transitions-0.9.1.orig/transitions/extensions/factory.py +++ transitions-0.9.1/transitions/extensions/factory.py @@ -9,7 +9,6 @@ from functools import partial import itertools -from six import iteritems from ..core import Machine, Transition @@ -78,7 +77,7 @@ class LockedGraphMachine(GraphMachine, L ", ".join(itertools.chain( (str(_) for _ in func.args[1:]), ("%s=%s" % (key, value) - for key, value in iteritems(func.keywords if func.keywords else {}))))) + for key, value in (func.keywords.items() if func.keywords else {}.items()))))) return GraphMachine.format_references(func) Index: transitions-0.9.1/transitions/extensions/markup.py =================================================================== --- transitions-0.9.1.orig/transitions/extensions/markup.py +++ transitions-0.9.1/transitions/extensions/markup.py @@ -13,8 +13,6 @@ import importlib import itertools import numbers -from six import iteritems - from ..core import Machine from .nesting import HierarchicalMachine @@ -125,7 +123,7 @@ class MarkupMachine(Machine): ", ".join(itertools.chain( (str(_) for _ in func.args), ("%s=%s" % (key, value) - for key, value in iteritems(func.keywords if func.keywords else {}))))) + for key, value in (func.keywords.items() if func.keywords else {}.items()))))) return str(func) def _convert_states_and_transitions(self, root): Index: transitions-0.9.1/transitions/extensions/nesting.py =================================================================== --- transitions-0.9.1.orig/transitions/extensions/nesting.py +++ transitions-0.9.1/transitions/extensions/nesting.py @@ -730,11 +730,11 @@ class HierarchicalMachine(Machine): """ with self(): source_path = [] if source == "*" \ - else source.split(self.state_cls.separator) if isinstance(source, string_types) \ + else source.split(self.state_cls.separator) if isinstance(source, str) \ else self._get_enum_path(source) if isinstance(source, Enum) \ else self._get_state_path(source) dest_path = [] if dest == "*" \ - else dest.split(self.state_cls.separator) if isinstance(dest, string_types) \ + else dest.split(self.state_cls.separator) if isinstance(dest, str) \ else self._get_enum_path(dest) if isinstance(dest, Enum) \ else self._get_state_path(dest) self._remove_nested_transitions(trigger, source_path, dest_path) ++++++ remove-py2-crumbs.patch ++++++ From 3758cd4a28dfb162e19e29601d8cfe3b8ae1d410 Mon Sep 17 00:00:00 2001 From: Alexandre Detiste <alexandre.detiste@gmail.com> Date: Sun, 14 Apr 2024 14:28:03 +0200 Subject: [PATCH] remove Python 2 crumbs --- tests/test_nesting.py | 7 +------ transitions/core.py | 23 +++----------------- transitions/extensions/diagrams_base.py | 4 +--- transitions/extensions/factory.py | 2 +- transitions/extensions/markup.py | 19 ++++------------- transitions/extensions/nesting.py | 28 +++++++------------------ 6 files changed, 18 insertions(+), 65 deletions(-) diff --git a/tests/test_nesting.py b/tests/test_nesting.py index a982aba0..13323869 100644 --- a/tests/test_nesting.py +++ b/tests/test_nesting.py @@ -1,10 +1,5 @@ # -*- coding: utf-8 -*- -try: - from builtins import object -except ImportError: - pass - import sys import tempfile from os.path import getsize @@ -37,7 +32,7 @@ default_separator = NestedState.separator -class Dummy(object): +class Dummy: pass diff --git a/transitions/core.py b/transitions/core.py index 8b42d553..e9480c2a 100644 --- a/transitions/core.py +++ b/transitions/core.py @@ -6,23 +6,7 @@ and transition concepts. """ - -try: - from builtins import object -except ImportError: # pragma: no cover - # python2 - pass - -try: - # Enums are supported for Python 3.4+ and Python 2.7 with enum34 package installed - from enum import Enum, EnumMeta -except ImportError: # pragma: no cover - # If enum is not available, create dummy classes for type checks - class Enum: # type:ignore - """This is just an Enum stub for Python 2 and Python 3.3 and before without Enum support.""" - - class EnumMeta: # type:ignore - """This is just an EnumMeta stub for Python 2 and Python 3.3 and before without Enum support.""" +from enum import Enum, EnumMeta import inspect import itertools @@ -31,7 +15,6 @@ class EnumMeta: # type:ignore from collections import OrderedDict, defaultdict, deque from functools import partial -from six import string_types _LOGGER = logging.getLogger(__name__) _LOGGER.addHandler(logging.NullHandler()) @@ -820,7 +803,7 @@ def add_states(self, states, on_enter=None, on_exit=None, states = listify(states) for state in states: - if isinstance(state, (string_types, Enum)): + if isinstance(state, (str, Enum)): state = self._create_state( state, on_enter=on_enter, on_exit=on_exit, ignore_invalid_triggers=ignore, **kwargs) @@ -1178,7 +1161,7 @@ def resolve_callable(func, event_data): Returns: callable function resolved from string or func """ - if isinstance(func, string_types): + if isinstance(func, str): try: func = getattr(event_data.model, func) if not callable(func): # if a property or some other not callable attribute was passed diff --git a/transitions/extensions/diagrams_base.py b/transitions/extensions/diagrams_base.py index b70ae553..c831e5cb 100644 --- a/transitions/extensions/diagrams_base.py +++ b/transitions/extensions/diagrams_base.py @@ -8,14 +8,12 @@ import copy import abc import logging -import six _LOGGER = logging.getLogger(__name__) _LOGGER.addHandler(logging.NullHandler()) -@six.add_metaclass(abc.ABCMeta) -class BaseGraph(object): +class BaseGraph(metaclass=abc.ABCMeta): """Provides the common foundation for graphs generated either with pygraphviz or graphviz. This abstract class should not be instantiated directly. Use .(py)graphviz.(Nested)Graph instead. Attributes: diff --git a/transitions/extensions/factory.py b/transitions/extensions/factory.py index e56541c6..30d6a961 100644 --- a/transitions/extensions/factory.py +++ b/transitions/extensions/factory.py @@ -34,7 +34,7 @@ class NestedAsyncTransition(NestedTransition): # type: ignore """A mock of NestedAsyncTransition for Python 3.6 and earlier.""" -class MachineFactory(object): +class MachineFactory: """Convenience factory for machine class retrieval.""" # get one of the predefined classes which fulfill the criteria diff --git a/transitions/extensions/markup.py b/transitions/extensions/markup.py index 7d5e1bdf..b42f9607 100644 --- a/transitions/extensions/markup.py +++ b/transitions/extensions/markup.py @@ -7,24 +7,13 @@ also be used to store and transfer machines. """ +from enum import Enum, EnumMeta from functools import partial import importlib import itertools import numbers -from six import string_types, iteritems - -try: - # Enums are supported for Python 3.4+ and Python 2.7 with enum34 package installed - from enum import Enum, EnumMeta -except ImportError: # pragma: no cover - # If enum is not available, create dummy classes for type checks - # typing must be prevent redefinition issues with mypy - class Enum: # type:ignore - """This is just an Enum stub for Python 2 and Python 3.3 and before without Enum support.""" - - class EnumMeta: # type:ignore - """This is just an EnumMeta stub for Python 2 and Python 3.3 and before without Enum support.""" +from six import iteritems from ..core import Machine from .nesting import HierarchicalMachine @@ -229,7 +218,7 @@ class HierarchicalMarkupMachine(MarkupMachine, HierarchicalMachine): def rep(func, format_references=None): """Return a string representation for `func`.""" - if isinstance(func, string_types): + if isinstance(func, str): return func if isinstance(func, numbers.Number): return str(func) @@ -242,7 +231,7 @@ def _convert(obj, attributes, format_references): val = getattr(obj, key, False) if not val: continue - if isinstance(val, string_types): + if isinstance(val, str): definition[key] = val else: try: diff --git a/transitions/extensions/nesting.py b/transitions/extensions/nesting.py index d8c54ef7..96ccbfb1 100644 --- a/transitions/extensions/nesting.py +++ b/transitions/extensions/nesting.py @@ -9,23 +9,11 @@ from collections import OrderedDict import copy +from enum import Enum, EnumMeta from functools import partial, reduce import inspect import logging -try: - # Enums are supported for Python 3.4+ and Python 2.7 with enum34 package installed - from enum import Enum, EnumMeta -except ImportError: # pragma: no cover - # If enum is not available, create dummy classes for type checks - class Enum: # type: ignore - """This is just an Enum stub for Python 2 and Python 3.3 and before without Enum support.""" - - class EnumMeta: # type: ignore - """This is just an EnumMeta stub for Python 2 and Python 3.3 and before without Enum support.""" - -from six import string_types - from ..core import State, Machine, Transition, Event, listify, MachineError, EventData _LOGGER = logging.getLogger(__name__) @@ -374,7 +362,7 @@ def __init__(self, model=Machine.self_literal, states=None, initial='initial', t ) def __call__(self, to_scope=None): - if isinstance(to_scope, string_types): + if isinstance(to_scope, str): state_name = to_scope.split(self.state_cls.separator)[0] state = self.states[state_name] to_scope = (state, state.states, state.events, self.prefix_path + [state_name]) @@ -408,7 +396,7 @@ def add_model(self, model, initial=None): if hasattr(initial_name, 'name'): initial_name = initial_name.name # initial states set by add_model or machine might contain initial states themselves. - if isinstance(initial_name, string_types): + if isinstance(initial_name, str): initial_states = self._resolve_initial(models, initial_name.split(self.state_cls.separator)) # when initial is set to a (parallel) state, we accept it as it is else: @@ -473,7 +461,7 @@ def add_states(self, states, on_enter=None, on_exit=None, ignore_invalid_trigger state = {'name': state, 'children': state.value} elif isinstance(state.value, dict): state = dict(name=state, **state.value) - if isinstance(state, string_types): + if isinstance(state, str): self._add_string_state(state, on_enter, on_exit, ignore, remap, **kwargs) elif isinstance(state, Enum): self._add_enum_state(state, on_enter, on_exit, ignore, remap, **kwargs) @@ -600,7 +588,7 @@ def get_state(self, state, hint=None): """ if isinstance(state, Enum): state = self._get_enum_path(state) - elif isinstance(state, string_types): + elif isinstance(state, str): state = state.split(self.state_cls.separator) if not hint: state = copy.copy(state) @@ -652,11 +640,11 @@ def get_transitions(self, trigger="", source="*", dest="*", delegate=False): """ with self(): source_path = [] if source == "*" \ - else source.split(self.state_cls.separator) if isinstance(source, string_types) \ + else source.split(self.state_cls.separator) if isinstance(source, str) \ else self._get_enum_path(source) if isinstance(source, Enum) \ else self._get_state_path(source) dest_path = [] if dest == "*" \ - else dest.split(self.state_cls.separator) if isinstance(dest, string_types) \ + else dest.split(self.state_cls.separator) if isinstance(dest, str) \ else self._get_enum_path(dest) if isinstance(dest, Enum) \ else self._get_state_path(dest) matches = self.get_nested_transitions(trigger, source_path, dest_path) @@ -1064,7 +1052,7 @@ def _init_state(self, state): self._init_state(substate) def _recursive_initial(self, value): - if isinstance(value, string_types): + if isinstance(value, str): path = value.split(self.state_cls.separator, 1) if len(path) > 1: state_name, suffix = path ++++++ transitions-0.9.0.tar.gz -> transitions-0.9.1.tar.gz ++++++ ++++ 5517 lines of diff (skipped)