Fix bugs with dependency tracking
This commit is contained in:
		
							parent
							
								
									86e893d7ba
								
							
						
					
					
						commit
						619cae3f45
					
				@ -217,7 +217,7 @@ class DependencyVarProxy:
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            return repr(self)
 | 
					            return repr(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def raw_(self) -> Dict[str, Any]:
 | 
					    def raw_(self) -> Union[Dict[str, Any], List[Any], int, str, bool]:
 | 
				
			||||||
        if not self._current_path_prefix:
 | 
					        if not self._current_path_prefix:
 | 
				
			||||||
            raw_dict = self._vars.toplevel()
 | 
					            raw_dict = self._vars.toplevel()
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
@ -238,6 +238,12 @@ class DependencyVarProxy:
 | 
				
			|||||||
            self._tracker.register_variable(dotted_path, raw_value)
 | 
					            self._tracker.register_variable(dotted_path, raw_value)
 | 
				
			||||||
            return raw_value
 | 
					            return raw_value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __iter__(self):
 | 
				
			||||||
 | 
					        return iter(self.raw_())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __contains__(self, item):
 | 
				
			||||||
 | 
					        return item in self.raw_()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DependencyCache:
 | 
					class DependencyCache:
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
				
			|||||||
@ -247,7 +247,11 @@ class Kitchen:
 | 
				
			|||||||
        sous_vars = recipe.recipe_context.variables
 | 
					        sous_vars = recipe.recipe_context.variables
 | 
				
			||||||
        vars_to_hash = {}
 | 
					        vars_to_hash = {}
 | 
				
			||||||
        for var in prev_book.var_list:
 | 
					        for var in prev_book.var_list:
 | 
				
			||||||
            vars_to_hash[var] = sous_vars.get_dotted(var)
 | 
					            try:
 | 
				
			||||||
 | 
					                vars_to_hash[var] = sous_vars.get_dotted(var)
 | 
				
			||||||
 | 
					            except KeyError:
 | 
				
			||||||
 | 
					                # variable missing
 | 
				
			||||||
 | 
					                return prev_book, False
 | 
				
			||||||
        my_varhash = hash_dict(vars_to_hash)
 | 
					        my_varhash = hash_dict(vars_to_hash)
 | 
				
			||||||
        if prev_book.varhash != my_varhash:
 | 
					        if prev_book.varhash != my_varhash:
 | 
				
			||||||
            return prev_book, False
 | 
					            return prev_book, False
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user