docs: def system_information():
      '''
      Report system versions.
      '''
      def system_version():
          '''
          Return host system version.
          '''
          lin_ver = linux_distribution()
          mac_ver = platform.mac_ver()
          win_ver = platform.win32_ver()
  
          if lin_ver[0]:
              return ' '.join(lin_ver)
          elif mac_ver[0]:
              if isinstance(mac_ver[1], (tuple, list)) and ''.join(mac_ver[1]):
                  return ' '.join([mac_ver[0], '.'.join(mac_ver[1]), mac_ver[2]])
              else:
                  return ' '.join([mac_ver[0], mac_ver[2]])
          elif win_ver[0]:
              return ' '.join(win_ver)
          else:
              return ''
  
      if platform.win32_ver()[0]:
          # Get the version and release info based on the Windows Operating
          # System Product Name. As long as Microsoft maintains a similar format
          # this should be future proof
          import win32api  # pylint: disable=3rd-party-module-not-gated
          import win32con  # pylint: disable=3rd-party-module-not-gated
  
          # Get the product name from the registry
          hkey = win32con.HKEY_LOCAL_MACHINE
          key = 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
          value_name = 'ProductName'
          reg_handle = win32api.RegOpenKey(hkey, key)
  
          # Returns a tuple of (product_name, value_type)
          product_name, _ = win32api.RegQueryValueEx(reg_handle, value_name)
  
          version = 'Unknown'
          release = ''
          if 'Server' in product_name:
              for item in product_name.split(' '):
                  # If it's all digits, then it's version
                  if re.match(r'\d+', item):
                      version = item
                  # If it starts with R and then numbers, it's the release
                  # ie: R2
                  if re.match(r'^R\d+$', item):
                      release = item
              release = '{0}Server{1}'.format(version, release)
          else:
              for item in product_name.split(' '):
                  # If it's a number, decimal number, Thin or Vista, then it's the
                  # version
                  if re.match(r'^(\d+(\.\d+)?)|Thin|Vista$', item):
                      version = item
              release = version
  
          _, ver, sp, extra = platform.win32_ver()
          version = ' '.join([release, ver, sp, extra])
      else:
          version = system_version()
          release = platform.release()
  
      system = [
          ('system', platform.system()),
          ('dist', ' '.join(linux_distribution(full_distribution_name=False))),
          ('release', release),
          ('machine', platform.machine()),
          ('version', version),
          ('locale', __salt_system_encoding__),
      ]
  
      for name, attr in system:
          yield name, attr
          continue