class_docstr: A launch project specification.
class_docstr_tok: ["A","launch","project","specification","."]
docstr: Returns the first entrypoint for the project, or None if no entry point was provided because a docker image was provided.
docstr_tok: ["Returns","the","first","entrypoint","for","the","project",",","or","None","if","no","entry","point","was","provided","because","a","docker","image","was","provided","."]
code: def get_single_entry_point(self) -> Optional["EntryPoint"]:
      """Returns the first entrypoint for the project, or None if no entry point was provided because a docker image was provided."""
      # assuming project only has 1 entry point, pull that out
      # tmp fn until we figure out if we want to support multiple entry points or not
      if not self._entry_point:
          if not self.docker_image:
              raise LaunchError(
                  "Project must have at least one entry point unless docker image is specified."
              )
          return None
      return self._entry_point
  
imports: import enum
  import json
  import logging
  import os
  import tempfile
  from copy import deepcopy
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, cast
  import wandb
  import wandb.docker
  from wandb.apis.internal import Api
  from wandb.errors import CommError
  from wandb.sdk.launch import utils
  from wandb.sdk.lib.runid import generate_id
  from .errors import LaunchError
  from .utils import LOG_PREFIX, recursive_macro_sub
label_desc: Use image node_id 15 for calling the LaunchProject obj's underlying member method code with example usage: obj.get_single_entry_point() and returns: self, None