docs: def read_file(self, mesh_spacing=1.0):
          '''
          Reads the file and returns an instance of the FaultSource class.
  
          :param float mesh_spacing:
              Fault mesh spacing (km)
          '''
  
          # Process the tectonic regionalisation
          tectonic_reg = self.process_tectonic_regionalisation()
  
          model = mtkActiveFaultModel(self.data['Fault_Model_ID'],
                                      self.data['Fault_Model_Name'])
          for fault in self.data['Fault_Model']:
              fault_geometry = self.read_fault_geometry(fault['Fault_Geometry'],
                                                        mesh_spacing)
              if fault['Shear_Modulus']:
                  fault['Shear_Modulus'] = weight_list_to_tuple(
                      fault['Shear_Modulus'], '%s Shear Modulus' % fault['ID'])
  
              if fault['Displacement_Length_Ratio']:
                  fault['Displacement_Length_Ratio'] = weight_list_to_tuple(
                      fault['Displacement_Length_Ratio'],
                      '%s Displacement to Length Ratio' % fault['ID'])
  
              fault_source = mtkActiveFault(
                  fault['ID'],
                  fault['Fault_Name'],
                  fault_geometry,
                  weight_list_to_tuple(fault['Slip'], '%s - Slip' % fault['ID']),
                  float(fault['Rake']),
                  fault['Tectonic_Region'],
                  float(fault['Aseismic']),
                  weight_list_to_tuple(
                      fault['Scaling_Relation_Sigma'],
                      '%s Scaling_Relation_Sigma' % fault['ID']),
                  neotectonic_fault=None,
                  scale_rel=get_scaling_relation_tuple(
                      fault['Magnitude_Scaling_Relation']),
                  aspect_ratio=fault['Aspect_Ratio'],
                  shear_modulus=fault['Shear_Modulus'],
                  disp_length_ratio=fault['Displacement_Length_Ratio'])
  
              if tectonic_reg:
                  fault_source.get_tectonic_regionalisation(
                      tectonic_reg,
                      fault['Tectonic_Region'])
              assert isinstance(fault['MFD_Model'], list)
              fault_source.generate_config_set(fault['MFD_Model'])
              model.faults.append(fault_source)
  
          return model, tectonic_reg