import fwr import delimited """ Preplot importing functions. """ def is_fixed_width (file): fixed_width_types = [ "sps1", "sps21", "p190", "fixed-width" ] return type(file) == dict and "type" in file and file["type"] in fixed_width_types def is_delimited (file): delimited_types = [ "csv", "p111", "x-sl+csv" ] return type(file) == dict and "type" in file and file["type"] in delimited_types def from_file (file, realpath = None): """ Return a list of dicts, where each dict has the structure: { "line_name": , "points": [ { "line_name": , "point_number": , "easting": , "northing": }, … ] } On error, return a string describing the error condition. """ filepath = realpath or file["path"] if is_fixed_width(file): records = fwr.from_file(filepath, file) elif is_delimited(file): records = delimited.from_file(filepath, file) else: return "Unrecognised file format" if type(records) == str: # This is an error message return records if file.get("type") == "x-sl+csv": return records lines = [] line_names = set([r["line_name"] for r in records]) for line_name in line_names: line = dict(line_name=line_name) line_points = [r for r in records if r["line_name"] == line_name] if line_points: line["points"] = line_points lines.append(line) return lines