class_docstr: Handle to an H2O server launched locally.
  
  Public interface::
  
      hs = H2OLocalServer.start(...)  # launch a new local H2O server
      hs.is_running()                 # check if the server is running
      hs.shutdown()                   # shut down the server
      hs.scheme                       # either "http" or "https"
      hs.ip                           # ip address of the server, typically "127.0.0.1"
      hs.port                         # port on which the server is listening
  
  Once started, the server will run until the script terminates, or until you call ``.shutdown()`` on it. Moreover,
  if the server terminates with an exception, then the server will not stop and will continue to run even after
  Python process exits. This runaway process may end up being in a bad shape (e.g. frozen), then the only way to
  terminate it is to end the Java process from the terminal.
  
  Alternatively, it is possible to start the server as a context manager, in which case it will be automatically
  shut down even if an exception occurs in Python (but not if the Python process is killed)::
  
      with H2OLocalServer.start() as hs:
          # do something with the server -- probably connect to it
class_docstr_tok: ["Handle","to","an","H2O","server","launched","locally",".","Public","interface",":",":","hs","=","H2OLocalServer.start","(","...",")","#","launch","a","new","local","H2O","server","hs.is_running","(",")","#","check","if","the","server","is","running","hs.shutdown","(",")","#","shut","down","the","server","hs.scheme","#","either","``","http","''","or","``","https","''","hs.ip","#","ip","address","of","the","server",",","typically","``","127.0.0.1","''","hs.port","#","port","on","which","the","server","is","listening","Once","started",",","the","server","will","run","until","the","script","terminates",",","or","until","you","call","``",".shutdown","(",")","``","on","it",".","Moreover",",","if","the","server","terminates","with","an","exception",",","then","the","server","will","not","stop","and","will","continue","to","run","even","after","Python","process","exits",".","This","runaway","process","may","end","up","being","in","a","bad","shape","(","e.g",".","frozen",")",",","then","the","only","way","to","terminate","it","is","to","end","the","Java","process","from","the","terminal",".","Alternatively",",","it","is","possible","to","start","the","server","as","a","context","manager",",","in","which","case","it","will","be","automatically","shut","down","even","if","an","exception","occurs","in","Python","(","but","not","if","the","Python","process","is","killed",")",":",":","with","H2OLocalServer.start","(",")","as","hs",":","#","do","something","with","the","server","--","probably","connect","to","it"]
docstr: Return the location of an h2o.jar executable.
  
  :param path0: Explicitly given h2o.jar path. If provided, then we will simply check whether the file is there,
      otherwise we will search for an executable in locations returned by ._jar_paths().
  
  :raises H2OStartupError: if no h2o.jar executable can be found.
docstr_tok: ["Return","the","location","of","an","h2o.jar","executable",".",":","param","path0",":","Explicitly","given","h2o.jar","path",".","If","provided",",","then","we","will","simply","check","whether","the","file","is","there",",","otherwise","we","will","search","for","an","executable","in","locations","returned","by","._jar_paths","(",")",".",":","raises","H2OStartupError",":","if","no","h2o.jar","executable","can","be","found","."]
code: def _find_jar(self, path0=None):
      """
      Return the location of an h2o.jar executable.
  
      :param path0: Explicitly given h2o.jar path. If provided, then we will simply check whether the file is there,
          otherwise we will search for an executable in locations returned by ._jar_paths().
  
      :raises H2OStartupError: if no h2o.jar executable can be found.
      """
      jar_paths = [path0] if path0 else self._jar_paths()
      searched_paths = []
      for jp in jar_paths:
          searched_paths.append(jp)
          if os.path.exists(jp):
              return jp
      raise H2OStartupError(
          "Cannot start local server: h2o.jar not found. Paths searched:\n"
          + "".join("    %s\n" % s for s in searched_paths)
      )
  
imports: from h2o.utils.compatibility import *
  import atexit
  import os
  import subprocess
  import sys
  import tempfile
  import time
  import re
  from random import choice
  from sysconfig import get_config_var
  from warnings import warn
  from h2o.exceptions import H2OServerError, H2OStartupError, H2OValueError
  from h2o.utils.typechecks import assert_is_type, assert_satisfies, BoundInt, I, is_type
label_desc: Use image node_id 9 for calling the H2OLocalServer obj's underlying member method code with example usage: obj._find_jar(path0) and returns: jp