From a14726c83bbabd898d57539576d5d8f76d102b29 Mon Sep 17 00:00:00 2001 From: Marianne Corvellec Date: Thu, 28 Mar 2019 17:28:11 +0100 Subject: [PATCH 1/6] fix DeprecationWarning when importing ABCs --- dash/development/base_component.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/dash/development/base_component.py b/dash/development/base_component.py index d4e30dea39..94a65ac964 100644 --- a/dash/development/base_component.py +++ b/dash/development/base_component.py @@ -1,7 +1,10 @@ -import collections import abc import inspect import sys +try: + from collections.abc import MutableSequence +except ImportError: + from collections import MutableSequence import six @@ -53,8 +56,7 @@ def is_number(s): def _check_if_has_indexable_children(item): if (not hasattr(item, 'children') or (not isinstance(item.children, Component) and - not isinstance(item.children, (tuple, - collections.MutableSequence)))): + not isinstance(item.children, (tuple, MutableSequence)))): raise KeyError @@ -153,7 +155,7 @@ def _get_set_or_delete(self, id, operation, new_item=None): pass # if children is like a list - if isinstance(self.children, (tuple, collections.MutableSequence)): + if isinstance(self.children, (tuple, MutableSequence)): for i, item in enumerate(self.children): # If the item itself is the one we're looking for if getattr(item, 'id', None) == id: @@ -229,7 +231,7 @@ def traverse_with_paths(self): yield "\n".join(["[*] " + children_string, p]), t # children is a list of components - elif isinstance(children, (tuple, collections.MutableSequence)): + elif isinstance(children, (tuple, MutableSequence)): for idx, i in enumerate(children): list_path = "[{:d}] {:s} {}".format( idx, @@ -262,7 +264,7 @@ def __len__(self): elif isinstance(self.children, Component): length = 1 length += len(self.children) - elif isinstance(self.children, (tuple, collections.MutableSequence)): + elif isinstance(self.children, (tuple, MutableSequence)): for c in self.children: length += 1 if isinstance(c, Component): From 2ec84b718ba274136a27e692a5357b54cd3e2906 Mon Sep 17 00:00:00 2001 From: Marianne Corvellec Date: Fri, 29 Mar 2019 09:28:16 +0100 Subject: [PATCH 2/6] use nicer syntax to handle deprecated import --- dash/development/base_component.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dash/development/base_component.py b/dash/development/base_component.py index 94a65ac964..617addc998 100644 --- a/dash/development/base_component.py +++ b/dash/development/base_component.py @@ -1,15 +1,15 @@ import abc import inspect import sys -try: - from collections.abc import MutableSequence -except ImportError: - from collections import MutableSequence - import six from .._utils import patch_collections_abc +if six.PY2: + from collections import MutableSequence +else: + from collections.abc import MutableSequence + # pylint: disable=no-init,too-few-public-methods class ComponentRegistry: From d5dcd8f60064ddacefd116f0b1ac7301b00ab447 Mon Sep 17 00:00:00 2001 From: Marianne Corvellec Date: Fri, 29 Mar 2019 16:09:41 +0100 Subject: [PATCH 3/6] silence pylint module name error for py3.7 --- dash/development/base_component.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dash/development/base_component.py b/dash/development/base_component.py index 617addc998..9bda3e40c3 100644 --- a/dash/development/base_component.py +++ b/dash/development/base_component.py @@ -6,7 +6,7 @@ from .._utils import patch_collections_abc if six.PY2: - from collections import MutableSequence + from collections import MutableSequence # pylint: disable=no-name-in-module else: from collections.abc import MutableSequence From ef95c92deebdc70015a98aedffae33e869d3e66f Mon Sep 17 00:00:00 2001 From: Marianne Corvellec Date: Fri, 29 Mar 2019 19:44:33 +0100 Subject: [PATCH 4/6] disable single pylint errors using error number --- dash/development/base_component.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dash/development/base_component.py b/dash/development/base_component.py index 9bda3e40c3..19a1845cb1 100644 --- a/dash/development/base_component.py +++ b/dash/development/base_component.py @@ -6,9 +6,9 @@ from .._utils import patch_collections_abc if six.PY2: - from collections import MutableSequence # pylint: disable=no-name-in-module + from collections import MutableSequence # pylint: disable=E0611 else: - from collections.abc import MutableSequence + from collections.abc import MutableSequence # pylint: disable=E0611, E0401 # pylint: disable=no-init,too-few-public-methods From b19c2c46be1eeba38f473a833d424da528b50212 Mon Sep 17 00:00:00 2001 From: Marianne Corvellec Date: Fri, 29 Mar 2019 20:01:38 +0100 Subject: [PATCH 5/6] disable pylint at block level instead of line --- dash/development/base_component.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dash/development/base_component.py b/dash/development/base_component.py index 19a1845cb1..f4756ff5ae 100644 --- a/dash/development/base_component.py +++ b/dash/development/base_component.py @@ -5,10 +5,11 @@ from .._utils import patch_collections_abc +# pylint: disable=no-name-in-module, import-error if six.PY2: - from collections import MutableSequence # pylint: disable=E0611 + from collections import MutableSequence else: - from collections.abc import MutableSequence # pylint: disable=E0611, E0401 + from collections.abc import MutableSequence # pylint: disable=no-init,too-few-public-methods From ad8793c72838044703103339b0da87fb1fa2307e Mon Sep 17 00:00:00 2001 From: Marianne Corvellec Date: Mon, 1 Apr 2019 14:31:43 +0200 Subject: [PATCH 6/6] use custom import from existing utilities --- dash/development/base_component.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/dash/development/base_component.py b/dash/development/base_component.py index f4756ff5ae..01f8189d3e 100644 --- a/dash/development/base_component.py +++ b/dash/development/base_component.py @@ -5,11 +5,7 @@ from .._utils import patch_collections_abc -# pylint: disable=no-name-in-module, import-error -if six.PY2: - from collections import MutableSequence -else: - from collections.abc import MutableSequence +MutableSequence = patch_collections_abc('MutableSequence') # pylint: disable=no-init,too-few-public-methods