docs: def dependency_information(include_salt_cloud=False):
      '''
      Report versions of library dependencies.
      '''
      libs = [
          ('Python', None, sys.version.rsplit('\n')[0].strip()),
          ('Jinja2', 'jinja2', '__version__'),
          ('M2Crypto', 'M2Crypto', 'version'),
          ('msgpack-python', 'msgpack', 'version'),
          ('msgpack-pure', 'msgpack_pure', 'version'),
          ('pycrypto', 'Crypto', '__version__'),
          ('pycryptodome', 'Cryptodome', 'version_info'),
          ('PyYAML', 'yaml', '__version__'),
          ('PyZMQ', 'zmq', '__version__'),
          ('ZMQ', 'zmq', 'zmq_version'),
          ('Mako', 'mako', '__version__'),
          ('Tornado', 'tornado', 'version'),
          ('timelib', 'timelib', 'version'),
          ('dateutil', 'dateutil', '__version__'),
          ('pygit2', 'pygit2', '__version__'),
          ('libgit2', 'pygit2', 'LIBGIT2_VERSION'),
          ('smmap', 'smmap', '__version__'),
          ('cffi', 'cffi', '__version__'),
          ('pycparser', 'pycparser', '__version__'),
          ('gitdb', 'gitdb', '__version__'),
          ('gitpython', 'git', '__version__'),
          ('python-gnupg', 'gnupg', '__version__'),
          ('mysql-python', 'MySQLdb', '__version__'),
          ('cherrypy', 'cherrypy', '__version__'),
          ('docker-py', 'docker', '__version__'),
      ]
  
      if include_salt_cloud:
          libs.append(
              ('Apache Libcloud', 'libcloud', '__version__'),
          )
  
      for name, imp, attr in libs:
          if imp is None:
              yield name, attr
              continue
          try:
              imp = __import__(imp)
              version = getattr(imp, attr)
              if callable(version):
                  version = version()
              if isinstance(version, (tuple, list)):
                  version = '.'.join(map(str, version))
              yield name, version
          except Exception:
              yield name, None