Cache calculations in Gramex

It’s a bad idea to run calculations after loading cached data.

# This code is wrong:
data = gramex.cache.open(data_file, 'csv')
result = calculations(data)

There is no point re-computing the data unless data_file has changed. Instead, gramex.cache.open supports a transform= parameter. Do the following:

result = gramex.cache.open(data_file, 'csv', transform=calculations)

This will re-run calculations only if the data_file has changed.

You can return multiple calculations, including the dataset, either as a tuple or as a dict. For example:

# Return multiple calculations as a tuple
data, calc1, calc2 = gramex.cache.open(data_file, 'csv', transform=calculations)

or…

# Return a dict of calculations
result = gramex.cache.open(data_file, 'csv', transform=calculations)
result['data']     # has the data
result['calc1']    # has the first calculation results, and so on