def dumps(obj, mesh_filename=None, *args, **kwargs): # pylint: disable=unused-argument
    '''
    obj: A dictionary mapping names to a 3-dimension array.
    mesh_filename: If provided, this value is included in the <DataFileName>
      attribute, which Meshlab doesn't seem to use.

    TODO Maybe reconstruct this using xml.etree

    '''
    point_template = '<point x="%f" y="%f" z="%f" name="%s"/>\n'
    file_template = """
    <!DOCTYPE PickedPoints>
    <PickedPoints>
     <DocumentData>
      <DateTime time="16:00:00" date="2014-12-31"/>
      <User name="bodylabs"/>
      <DataFileName name="%s"/>
     </DocumentData>
     %s
    </PickedPoints>
    """
    from blmath.numerics import isnumericarray

    if not isinstance(obj, dict) or not all([isnumericarray(point) for point in obj.itervalues()]):
        raise ValueError('obj should be a dict of points')

    points = '\n'.join([point_template % (tuple(xyz) + (name,)) for name, xyz in obj.iteritems()])

    return file_template % (mesh_filename, points)
obj: A dictionary mapping names to a 3-dimension array.
    mesh_filename: If provided, this value is included in the <DataFileName>
      attribute, which Meshlab doesn't seem to use.

    TODO Maybe reconstruct this using xml.etree