code: def TempFilePath(suffix = "", prefix = "tmp",
                   dir = None):  # pylint: disable=redefined-builtin
    
    precondition.AssertType(suffix, Text)
    precondition.AssertType(prefix, Text)
    precondition.AssertOptionalType(dir, Text)
  
    root = _TempRootPath()
    if not dir:
      dir = root
    elif root and not os.path.commonprefix([dir, root]):
      raise ValueError("path '%s' must start with '%s'" % (dir, root))
  
    # `mkstemp` returns an open descriptor for the file. We don't care about it as
    # we are only concerned with the path, but we need to close it first or else
    # the file will remain open until the garbage collectors steps in.
    desc, path = tempfile.mkstemp(suffix=suffix, prefix=prefix, dir=dir)
    os.close(desc)
    return path
docs: Creates a temporary file based on the environment configuration.
  
    If no directory is specified the file will be placed in folder as specified by
    the `TEST_TMPDIR` environment variable if available or fallback to
    `Test.tmpdir` of the current configuration if not.
  
    If directory is specified it must be part of the default test temporary
    directory.
  
    Args:
      suffix: A suffix to end the file name with.
      prefix: A prefix to begin the file name with.
      dir: A directory to place the file in.
  
    Returns:
      An absolute path to the created file.
  
    Raises:
      ValueError: If the specified directory is not part of the default test
          temporary directory.