code: def main_target_requirements(self, specification, project):
          
          assert is_iterable_typed(specification, basestring)
          assert isinstance(project, ProjectTarget)
          # create a copy since the list is being modified
          specification = list(specification)
          specification.extend(toolset.requirements())
  
          requirements = property_set.refine_from_user_input(
              project.get("requirements"), specification,
              project.project_module(), project.get("location"))
  
          return requirements
docs: Returns the requirement to use when declaring a main target,
           which are obtained by
           - translating all specified property paths, and
           - refining project requirements with the one specified for the target
  
           'specification' are the properties xplicitly specified for a
            main target
           'project' is the project where the main taret is to be declared.