docs: def calculate_health(package_name, package_version=None, verbose=False, no_output=False):
      """
      Calculates the health of a package, based on several factors
  
      :param package_name: name of package on pypi.python.org
      :param package_version: version number of package to check, optional - defaults to latest version
      :param verbose: flag to print out reasons
      :param no_output: print no output
      :param lint: run pylint on the package
  
      :returns: (score: integer, reasons: list of reasons for score)
      :rtype: tuple
      """
      total_score = 0
      reasons = []
  
      package_releases = CLIENT.package_releases(package_name)
      if not package_releases:
          if not no_output:
              print(TERMINAL.red('{} is not listed on pypi'.format(package_name)))
          return 0, []
  
      if package_version is None:
          package_version = package_releases[0]
  
      package_info = CLIENT.release_data(package_name, package_version)
      release_urls = CLIENT.release_urls(package_name, package_version)
  
      if not package_info or not release_urls:
          if not no_output:
              print(TERMINAL.red('Version {} is not listed on pypi'.format(
                  package_version)))
          return 0, []
  
      if not no_output:
          print(TERMINAL.bold('{} v{}'.format(package_name, package_version)))
          print('-----')
  
      checkers = [
          checks.check_license,
          checks.check_homepage,
          checks.check_summary,
          checks.check_description,
          checks.check_python_classifiers,
          checks.check_author_info,
          checks.check_release_files,
          checks.check_stale
      ]
  
      for checker in checkers:
          result, reason, score = checker(package_info, release_urls)
          if result:
              total_score += score
          else:
              reasons.append(reason)
  
      if total_score < 0:
          total_score = 0
  
      if not no_output:
          percentage = int(float(total_score) / float(checks.TOTAL_POSSIBLE) * 100)
          score_string = 'score: {}/{} {}%'.format(total_score, checks.TOTAL_POSSIBLE, percentage)
  
          print(get_health_color(percentage)(score_string))
  
      if verbose and not no_output:
          for reason in reasons:
              print(reason)
  
      if no_output:
          return total_score, reasons