| 
					
				 | 
			
			
				@@ -16,6 +16,7 @@ from functools import partial 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from itertools import chain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from billiard.einfo import ExceptionInfo  # noqa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from kombu.utils.encoding import safe_str 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from kombu.utils.limits import TokenBucket  # noqa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .utils.functional import LRUCache, first, uniq  # noqa 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -47,37 +48,33 @@ class GraphFormatter(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'style': 'filled', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'fontname': 'Helvetica Neue', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    node_scheme = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'fillcolor': 'palegreen3', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'color': 'palegreen4', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    term_scheme = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'fillcolor': 'palegreen1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'color': 'palegreen2', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     edge_scheme = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'color': 'darkseagreen4', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'arrowcolor': 'black', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'arrowsize': 0.7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    node_scheme = {'fillcolor': 'palegreen3', 'color': 'palegreen4'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    term_scheme = {'fillcolor': 'palegreen1', 'color': 'palegreen2'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     graph_scheme = {'bgcolor': 'mintcream'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def __init__(self, root=None, type=None, id=None, indent=0, inw=' ' * 4): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def __init__(self, root=None, type=None, id=None, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            indent=0, inw=' ' * 4, **scheme): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.id = id or 'dependencies' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.root = root 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.type = type or 'digraph' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.direction = self._dirs[self.type] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.IN = inw * (indent or 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.INp = self.IN + inw 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        #self.graph_scheme = dict(self.graph_scheme, root=self.label(self.root)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.scheme = dict(self.scheme, **scheme) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.graph_scheme = dict(self.graph_scheme, root=self.label(self.root)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def attr(self, name, value): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        value = '"{0}"'.format(str(value)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        value = '"{0}"'.format(value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return self.FMT(self._attr, name=name, value=value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def attrs(self, d, scheme=None): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         d = dict(self.scheme, **dict(scheme, **d or {}) if scheme else d) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return self._attrsep.join(self.attr(k, v) for k, v in d.iteritems()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return self._attrsep.join(safe_str(self.attr(k, v)) for k, v in d.iteritems()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def head(self, **attrs): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return self.FMT(self._head, id=self.id, type=self.type, 
			 |