@@ -434,6 +434,21 @@ def to_string(self, level=0, indent=4, eol='\n', pretty=True, max_chars=80):
434
434
string += "{eol}{indent}])" .format (eol = eol , indent = ' ' * indent * level )
435
435
return string
436
436
437
+ def get_ordered (self , caller = True ):
438
+ if caller :
439
+ try :
440
+ self .to_graph_objs (caller = False )
441
+ except exceptions .PlotlyGraphObjectError as err :
442
+ err .add_note ("Could not order list because it could not be "
443
+ "converted to a valid graph object." )
444
+ err .prepare ()
445
+ raise
446
+ ordered_list = []
447
+ for index , entry in enumerate (self ):
448
+ ordered_list += [entry .get_ordered ()]
449
+ return ordered_list
450
+
451
+
437
452
def force_clean (self , caller = True ):
438
453
"""Attempts to convert to graph_objs and calls force_clean() on entries.
439
454
@@ -753,6 +768,34 @@ def to_string(self, level=0, indent=4, eol='\n', pretty=True, max_chars=80):
753
768
string += "{eol}{indent})" .format (eol = eol , indent = ' ' * indent * level )
754
769
return string
755
770
771
+ def get_ordered (self , caller = True ):
772
+ if caller : # change everything to 'order-able' objs
773
+ try :
774
+ self .to_graph_objs (caller = False )
775
+ except exceptions .PlotlyGraphObjectError as err :
776
+ err .add_note ("dictionary could not be ordered because it "
777
+ "could not be converted to a valid plotly graph "
778
+ "object." )
779
+ err .prepare ()
780
+ raise
781
+ obj_type = NAME_TO_KEY [self .__class__ .__name__ ]
782
+ ordered_dict = collections .OrderedDict ()
783
+ # grab keys like xaxis1, xaxis2, etc...
784
+ unordered_keys = [key for key in self if key not in INFO [obj_type ]]
785
+ for key in INFO [obj_type ]:
786
+ if key in self :
787
+ if isinstance (self [key ], (PlotlyDict , PlotlyList )):
788
+ ordered_dict [key ] = self [key ].get_ordered (caller = False )
789
+ else :
790
+ ordered_dict [key ] = self [key ]
791
+ for key in unordered_keys :
792
+ if isinstance (self [key ], (PlotlyDict , PlotlyList )):
793
+ ordered_dict [key ] = self [key ].get_ordered (caller = False )
794
+ else :
795
+ ordered_dict [key ] = self [key ]
796
+ return ordered_dict
797
+
798
+
756
799
def force_clean (self , caller = True ):
757
800
"""Attempts to convert to graph_objs and call force_clean() on values.
758
801
0 commit comments