docs: def list_asset_writes(
          project: 'projects.Project'
  ) -> typing.List[file_io.FILE_COPY_ENTRY]:
      """
      Returns a list containing the file/directory writes that should be executed
      to deploy the project assets to the results folder. If the project has no
      assets an empty list is returned.
  
      :param project:
          The project for which the assets should be copied
      :return:
          A list containing the file copy entries for deploying project assets
      """
  
      def make_asset_copy(directory: str) -> file_io.FILE_COPY_ENTRY:
          output_directory = os.path.join(
              project.output_directory,
              directory[len(project.source_directory):].lstrip(os.sep)
          )
  
          return file_io.FILE_COPY_ENTRY(
              source=directory,
              destination=output_directory
          )
  
      copies = [
          make_asset_copy(asset_directory)
          for asset_directory in project.asset_directories
      ]
  
      return list(filter(
          lambda fc: os.path.exists(fc.source),
          copies
      ))