Add some warnings around cache invalidation when mutating items
This commit is contained in:
		
							parent
							
								
									2e5d51b0af
								
							
						
					
					
						commit
						f36350ebee
					
				@ -69,6 +69,8 @@ class Library:
 | 
			
		||||
    def __setitem__(self, key: str, value: PatternGenerator) -> None:
 | 
			
		||||
        self.primary[key] = value
 | 
			
		||||
        if key in self.cache:
 | 
			
		||||
            logger.warning(f'Replaced library item "{key}" & existing cache entry.'
 | 
			
		||||
                           ' Previously-generated Pattern will *not* be updated!')
 | 
			
		||||
            del self.cache[key]
 | 
			
		||||
 | 
			
		||||
    def __delitem__(self, key: str) -> None:
 | 
			
		||||
@ -78,6 +80,8 @@ class Library:
 | 
			
		||||
            del self.secondary[key]
 | 
			
		||||
 | 
			
		||||
        if key in self.cache:
 | 
			
		||||
            logger.warning(f'Deleting library item "{key}" & existing cache entry.'
 | 
			
		||||
                           ' Previously-generated Pattern may remain in the wild!')
 | 
			
		||||
            del self.cache[key]
 | 
			
		||||
 | 
			
		||||
    def __getitem__(self, key: str) -> 'Pattern':
 | 
			
		||||
@ -113,6 +117,13 @@ class Library:
 | 
			
		||||
        self.cache[key2] = pat
 | 
			
		||||
        return pat
 | 
			
		||||
 | 
			
		||||
    def set_secondary(self, key: str, tag: str, value: PatternGenerator) -> None:
 | 
			
		||||
        self.secondary[(key, tag)] = value
 | 
			
		||||
        if (key, tag) in self.cache:
 | 
			
		||||
            logger.warning(f'Replaced library item "{key}" & existing cache entry.'
 | 
			
		||||
                           ' Previously-generated Pattern will *not* be updated!')
 | 
			
		||||
            del self.cache[(key, tag)]
 | 
			
		||||
 | 
			
		||||
    def resolve_subpatterns(self, pat: 'Pattern', tag: str) -> 'Pattern':
 | 
			
		||||
        logger.debug(f'Resolving subpatterns in {pat.name}')
 | 
			
		||||
        for sp in pat.subpatterns:
 | 
			
		||||
@ -293,6 +304,19 @@ class Library:
 | 
			
		||||
        del self.cache[key2]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def clear_cache(self: L) -> L:
 | 
			
		||||
        """
 | 
			
		||||
        Clear the cache of this library.
 | 
			
		||||
        This is usually used before modifying or deleting cells, e.g. when merging
 | 
			
		||||
          with another library.
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
            self
 | 
			
		||||
        """
 | 
			
		||||
        self.cache = {}
 | 
			
		||||
        return self
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
r"""
 | 
			
		||||
    #   Add a filter for names which aren't added
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user