Changeset 1757:1aee9d34655b in orange-bioinformatics for _bioinformatics/obiKEGG/caching.py


Ignore:
Timestamp:
04/19/13 20:15:02 (12 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Disabled automatic cache invalidation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _bioinformatics/obiKEGG/caching.py

    r1734 r1757  
    118118    def key_from_args(self, args, kwargs=None): 
    119119        key = self.function.__name__ + repr(args) 
     120        if kwargs is not None: 
     121            raise NotImplementedError("kwargs are not supported yet") 
    120122        return key 
    121123 
     
    125127 
    126128    def last_modified_from_args(self, args, kwargs=None): 
    127         key = self.key_from_args(args, kwargs) 
    128129        if self.instance is not None: 
    129             self.instance.last_modified(args) 
     130            return self.instance.last_modified(args) 
    130131 
    131132    def invalidate_args(self, args): 
     
    150151        key = self.key_from_args(args) 
    151152        with closing(self.cache_store()) as store: 
    152             valid = True 
    153             if key not in store: 
    154                 valid = False 
     153            if self.key_has_valid_cache(key, store): 
     154                rval = store[key].value 
    155155            else: 
    156                 entry = store[key] 
    157                 rval = entry.value 
    158  
    159                 if not self.is_entry_valid(entry, args): 
    160                     valid = False 
    161             if not valid: 
    162156                rval = self.function(self.instance, *args) 
    163157                store[key] = cache_entry(rval, datetime.now(), None) 
     
    165159        return rval 
    166160 
    167     def min_timestamp(self, args): 
    168         key = self.key_from_args(args) 
    169         return datetime.fromtimestamp(0) 
     161    def key_has_valid_cache(self, key, store): 
     162        if key not in store: 
     163            return False 
     164        else: 
     165            entry = store[key] 
     166            return self.is_entry_valid(entry, None) 
    170167 
    171168    def is_entry_valid(self, entry, args): 
     169        # For now always return True, the caching architecture needs to be 
     170        # completely reworked 
     171        return True 
     172 
    172173        # Need to check datetime first (it subclasses date) 
    173174        if isinstance(entry.mtime, datetime): 
     
    177178                             entry.mtime.day, 1, 1, 1) 
    178179        else: 
    179             return False 
    180  
    181         if self.min_timestamp(args) > mtime: 
    182180            return False 
    183181 
Note: See TracChangeset for help on using the changeset viewer.