<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def load_project(self, filename, overwrite=False):
 r""" Loads a Project from the specified 'pnm' file The loaded project is added to the Workspace . This will *not* delete any existing Projects in the Workspace and will rename any Projects being loaded if necessary. Parameters filename : string or path object The name of the file to open. See Notes for more information. See Also -------- load_workspace Notes ----- The filename can be a string such as 'saved_file.pnm'. The string can include absolute path such as 'C:\networks\saved_file.pnm', or can be a relative path such as '..\..\saved_file.pnm', which will look 2 directories above the current working directory. Can also be a path object object such as that produced by ``pathlib`` or ``os.path`` in the Python standard library. """

        filename = self._parse_filename(filename=filename, ext='pnm')
        temp = {}  # Read file into temporary dict
        with open(filename, 'rb') as f:
            d = pickle.load(f)
            # A normal pnm file is a dict of lists (projects)
            if type(d) is dict:
                for name in d.keys():
                    # If dict item is a list, assume it's a valid project
                    if isinstance(d[name], list):
                        temp[name] = d[name]
                    else:
                        warnings.warn('File contents must be a dictionary, ' +
                                      'of lists, or a single list')
            else:
                if isinstance(d, list):  # If pickle contains a single list
                    temp[filename] = d
                else:
                    warnings.warn('File contents must be a dictionary, ' +
                                  'of lists, or a single list')

        # Now scan through temp dict to ensure valid types and names
        conflicts = set(temp.keys()).intersection(set(self.keys()))
        for name in list(temp.keys()):
            if name in conflicts:
                new_name = self._gen_name()
                warnings.warn('A project named ' + name + ' already exists, ' +
                              'renaming to ' + new_name)
                self[new_name] = temp[name]
            else:
                self[name] = temp[name]