parameters: (
      req,  # type: InstallRequirement
      format_control,  # type: FormatControl
      autobuilding,  # type: bool
      cache_available  # type: bool
  )
return_statement: return True
docstring: Return whether to build an InstallRequirement object using the
      ephemeral cache.
  
      :param cache_available: whether a cache directory is available for the
          autobuilding=True case.
  
      :return: True or False to build the requirement with ephem_cache=True
          or False, respectively; or None not to build the requirement.
docstring_summary: Return whether to build an InstallRequirement object using the
      ephemeral cache.
docstring_tokens: Return whether to build an InstallRequirement object using the ephemeral cache .
function: def should_use_ephemeral_cache(
      req,  # type: InstallRequirement
      format_control,  # type: FormatControl
      autobuilding,  # type: bool
      cache_available  # type: bool
  ):
      # type: (...) -> Optional[bool]
      """
      Return whether to build an InstallRequirement object using the
      ephemeral cache.
  
      :param cache_available: whether a cache directory is available for the
          autobuilding=True case.
  
      :return: True or False to build the requirement with ephem_cache=True
          or False, respectively; or None not to build the requirement.
      """
      if req.constraint:
          return None
      if req.is_wheel:
          if not autobuilding:
              logger.info(
                  'Skipping %s, due to already being wheel.', req.name,
              )
          return None
      if not autobuilding:
          return False
  
      if req.editable or not req.source_dir:
          return None
  
      if req.link and not req.link.is_artifact:
          # VCS checkout. Build wheel just for this run.
          return True
  
      if "binary" not in format_control.get_allowed_formats(
              canonicalize_name(req.name)):
          logger.info(
              "Skipping bdist_wheel for %s, due to binaries "
              "being disabled for it.", req.name,
          )
          return None
  
      link = req.link
      base, ext = link.splitext()
      if cache_available and _contains_egg_info(base):
          return False
  
      # Otherwise, build the wheel just for this run using the ephemeral
      # cache since we are either in the case of e.g. a local directory, or
      # no cache directory is available to use.
      return True
function_tokens: def should_use_ephemeral_cache ( req , # type: InstallRequirement format_control , # type: FormatControl autobuilding , # type: bool cache_available # type: bool ) : # type: (...) -> Optional[bool] if req . constraint : return None if req . is_wheel : if not autobuilding : logger . info ( 'Skipping %s, due to already being wheel.' , req . name , ) return None if not autobuilding : return False if req . editable or not req . source_dir : return None if req . link and not req . link . is_artifact : # VCS checkout. Build wheel just for this run. return True if "binary" not in format_control . get_allowed_formats ( canonicalize_name ( req . name ) ) : logger . info ( "Skipping bdist_wheel for %s, due to binaries " "being disabled for it." , req . name , ) return None link = req . link base , ext = link . splitext ( ) if cache_available and _contains_egg_info ( base ) : return False # Otherwise, build the wheel just for this run using the ephemeral # cache since we are either in the case of e.g. a local directory, or # no cache directory is available to use. return True