text: # -*- coding: utf-8 -*-
  ############################################################
  #
  # Autogenerated by the KBase type compiler -
  # any changes made here will be overwritten
  #
  ############################################################
  
  from __future__ import print_function
  # the following is a hack to get the baseclient to import whether we're in a
  # package or not. This makes pep8 unhappy hence the annotations.
  try:
      # baseclient and this client are in a package
      from .baseclient import BaseClient as _BaseClient  # @UnusedImport
  except:
      # no they aren't
      from baseclient import BaseClient as _BaseClient  # @Reimport
  import time
  
  
  class RunTester(object):
  
      def __init__(
              self, url=None, timeout=30 * 60, user_id=None,
              password=None, token=None, ignore_authrc=False,
              trust_all_ssl_certificates=False,
              auth_svc='https://ci.kbase.us/services/auth/api/legacy/KBase/Sessions/Login',
              service_ver='release',
              async_job_check_time_ms=100, async_job_check_time_scale_percent=150, 
              async_job_check_max_time_ms=300000):
          if url is None:
              raise ValueError('A url is required')
          self._service_ver = service_ver
          self._client = _BaseClient(
              url, timeout=timeout, user_id=user_id, password=password,
              token=token, ignore_authrc=ignore_authrc,
              trust_all_ssl_certificates=trust_all_ssl_certificates,
              auth_svc=auth_svc,
              async_job_check_time_ms=async_job_check_time_ms,
              async_job_check_time_scale_percent=async_job_check_time_scale_percent,
              async_job_check_max_time_ms=async_job_check_max_time_ms)
  
      def _check_job(self, job_id):
          return self._client._check_job('RunTester', job_id)
  
      def _run_RunTester_submit(self, params, context=None):
          return self._client._submit_job(
               'RunTester.run_RunTester', [params],
               self._service_ver, context)
  
      def run_RunTester(self, params, context=None):
          """
          This example function accepts any number of parameters and returns results in a KBaseReport
          :param params: instance of mapping from String to unspecified object
          :returns: instance of type "ReportResults" -> structure: parameter
             "report_name" of String, parameter "report_ref" of String
          """
          job_id = self._run_RunTester_submit(params, context)
          async_job_check_time = self._client.async_job_check_time
          while True:
              time.sleep(async_job_check_time)
              async_job_check_time = (async_job_check_time *
                  self._client.async_job_check_time_scale_percent / 100.0)
              if async_job_check_time > self._client.async_job_check_max_time:
                  async_job_check_time = self._client.async_job_check_max_time
              job_state = self._check_job(job_id)
              if job_state['finished']:
                  return job_state['result'][0]
  
      def status(self, context=None):
          job_id = self._client._submit_job('RunTester.status', 
              [], self._service_ver, context)
          async_job_check_time = self._client.async_job_check_time
          while True:
              time.sleep(async_job_check_time)
              async_job_check_time = (async_job_check_time *
                  self._client.async_job_check_time_scale_percent / 100.0)
              if async_job_check_time > self._client.async_job_check_max_time:
                  async_job_check_time = self._client.async_job_check_max_time
              job_state = self._check_job(job_id)
              if job_state['finished']:
                  return job_state['result'][0]
  