Skip to content

Commit

Permalink
Merge pull request #563 from plotly/fix-component-abc
Browse files Browse the repository at this point in the history
Fix collections.abc deprecation warning for py 3.8
  • Loading branch information
T4rk1n committed Feb 1, 2019
2 parents 0f27d78 + cd8fc62 commit 414cac4
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 4 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## UNRELEASED
## Fixed
- Fixed collections.abc deprecation warning for python 3.8 [#563](https://github.com/plotly/dash/pull/563)

## [0.36.0] - 2019-01-25
## Removed
- Removed support for `Event` system. Use event properties instead, for example the `n_clicks` property instead of the `click` event, see [#531](https://github.com/plotly/dash/issues/531) for details. `dash_renderer` MUST be upgraded to >=0.17.0 together with this, and it is recommended to update `dash_core_components` to >=0.43.0 and `dash_html_components` to >=0.14.0. [#550](https://github.com/plotly/dash/pull/550)
Expand Down
9 changes: 9 additions & 0 deletions dash/_utils.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import uuid
import collections
import six


def interpolate_str(template, **data):
Expand Down Expand Up @@ -40,6 +42,13 @@ def get_asset_path(
])


# pylint: disable=no-member
def patch_collections_abc(member):
if six.PY2:
return getattr(collections, member)
return getattr(collections.abc, member)


class AttributeDict(dict):
"""
Dictionary subclass enabling attribute lookup/assignment of keys/values.
Expand Down
7 changes: 4 additions & 3 deletions dash/dash.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@
from ._utils import interpolate_str as _interpolate
from ._utils import format_tag as _format_tag
from ._utils import generate_hash as _generate_hash
from . import _watch
from ._utils import get_asset_path as _get_asset_path
from ._utils import patch_collections_abc as _patch_collections_abc
from . import _watch
from . import _configs


Expand Down Expand Up @@ -275,7 +276,7 @@ def layout(self):
return self._layout

def _layout_value(self):
if isinstance(self._layout, collections.Callable):
if isinstance(self._layout, _patch_collections_abc('Callable')):
self._cached_layout = self._layout()
else:
self._cached_layout = self._layout
Expand All @@ -284,7 +285,7 @@ def _layout_value(self):
@layout.setter
def layout(self, value):
if (not isinstance(value, Component) and
not isinstance(value, collections.Callable)):
not isinstance(value, _patch_collections_abc('Callable'))):
raise exceptions.NoLayoutException(
''
'Layout must be a dash component '
Expand Down
4 changes: 3 additions & 1 deletion dash/development/base_component.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

import six

from .._utils import patch_collections_abc


# pylint: disable=no-init,too-few-public-methods
class ComponentRegistry:
Expand Down Expand Up @@ -58,7 +60,7 @@ def _check_if_has_indexable_children(item):


@six.add_metaclass(ComponentMeta)
class Component(collections.MutableMapping):
class Component(patch_collections_abc('MutableMapping')):
class _UNDEFINED(object):
def __repr__(self):
return 'undefined'
Expand Down

0 comments on commit 414cac4

Please sign in to comment.