@classmethod
def load(cls, filepath, **options):
    """Load a problem instance from a text file.

        Any keyword options are passed to the class constructor. If a keyword
        argument has the same name as a field then they will collide and cause
        an error.

        :param str filepath: path to a problem file
        :param options: any keyword arguments to pass to the constructor
        :return: problem instance
        :rtype: :class:`Problem`
        """
    with open(filepath) as f:
        return cls.read(f, **options)
