@classmethod
def get_kami(cls, section_number, puzzle_number, check_valid=False):
    """
        Get a puzzle based on the section and puzzle numbers.

        :param section_number: Section of puzzle.
        :param puzzle_number: Number of puzzle in section.
        :param check_valid: Check whether the puzzle is valid before returning.
        :return: New puzzle.
        """
    puzzle_filename = f'kami-{section_number}-{puzzle_number}.json'
    puzzle = cls._load_puzzle_by_filename(puzzle_filename)
    if check_valid:
        puzzle._check_valid()
    return puzzle
