diff --git a/plotly/graph_objs/graph_objs.py b/plotly/graph_objs/graph_objs.py index f2f43449bc2..8e3b3042e3b 100644 --- a/plotly/graph_objs/graph_objs.py +++ b/plotly/graph_objs/graph_objs.py @@ -25,10 +25,11 @@ from __future__ import absolute_import import copy - import re -import six import warnings +from collections import OrderedDict + +import six from plotly import exceptions, graph_reference from plotly.graph_objs import graph_objs_tools @@ -113,17 +114,6 @@ def validate(self): """Everything is *always* validated now. keep for backwards compat.""" pass - def get_ordered(self, **kwargs): - """ - We have no way to order things anymore. Keep for backwards compat. - - See https://github.com/plotly/python-api/issues/290. - - :return: (PlotlyBase) - - """ - return self - class PlotlyList(list, PlotlyBase): """ @@ -311,6 +301,10 @@ def get_data(self, flatten=False): else: return l + def get_ordered(self, **kwargs): + """All children are already validated. Just use get_ordered on them.""" + return [child.get_ordered for child in self] + def to_string(self, level=0, indent=4, eol='\n', pretty=True, max_chars=80): """Get formatted string by calling `to_string` on children items.""" @@ -668,6 +662,17 @@ def get_data(self, flatten=False): del d[key] return d + def get_ordered(self, **kwargs): + """Return a predictable, OrderedDict version of self.""" + keys = sorted(self.keys(), key=graph_objs_tools.sort_keys) + ordered = OrderedDict() + for key in keys: + if isinstance(self[key], PlotlyBase): + ordered[key] = self[key].get_ordered() + else: + ordered[key] = self[key] + return ordered + def to_string(self, level=0, indent=4, eol='\n', pretty=True, max_chars=80): """ diff --git a/plotly/version.py b/plotly/version.py index 20947b68e83..8d94f638ba4 100644 --- a/plotly/version.py +++ b/plotly/version.py @@ -1 +1 @@ -__version__ = '1.8.9' +__version__ = '1.8.10'