def needs_values(func):
 @wraps(func)
 def assure_data_present(self, *args, **kwargs):
  self.read()
  return func(self, *args, **kwargs)
 return assure_data_present

def needs_values ( func ) : @ wraps ( func ) def assure_data_present ( self , * args , ** kwargs ) : self . read ( ) return func ( self , * args , ** kwargs ) return assure_data_present
returns method assuring we read values before we try to access them .