<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Config files with specifications
Epoch files
Epoch files are config files which specify a set of options repeatedly on different date/times, represented by sections of the config file. When a value for an option for a given date is requested, the value in the last epoch (section) before the given date is returned.
All options do not need to be set in each epoch. Values are inherited from epoch to epoch in chronological order.
Epoch files have a specification for each option -- a type and default value.
Step1:  Specify an epoch parser with an epoch filename and the specification filename.
<ASSISTANT_TASK:>
Python Code:
%cat epochs_spec.cfg
%cat epochs.cfg
Explanation: Config files with specifications
Epoch files
Epoch files are config files which specify a set of options repeatedly on different date/times, represented by sections of the config file. When a value for an option for a given date is requested, the value in the last epoch (section) before the given date is returned.
All options do not need to be set in each epoch. Values are inherited from epoch to epoch in chronological order.
Epoch files have a specification for each option -- a type and default value.
End of explanation
ep = burin.config.EpochParser('epochs.cfg', 'epochs_spec.cfg')
ep.is_valid()
ep.get('cal_version', date='20180101')
ep.get('cal_version', date='20180101.120000')
Explanation: Specify an epoch parser with an epoch filename and the specification filename.
End of explanation
<END_TASK>