docs: def add_modules(self, ignore, *modules):
          """Add the named Python modules to the archive. For consistency's sake
          we only add ``*.py`` files, not ``*.pyc``. We also don't add other
          files, including compiled modules. You'll have to add such files
          manually using :py:meth:`add_file`.
          """
          for module_name in modules:
              module = importlib.import_module(module_name)
  
              if hasattr(module, '__path__'):
                  # https://docs.python.org/3/reference/import.html#module-path
                  for directory in module.__path__:
                      self.add_directory(directory, ignore)
                  if getattr(module, '__file__', None) is None:
  
                      # Likely a namespace package. Try to add *.pth files so
                      # submodules are importable under Python 2.7.
  
                      sitedir = os.path.abspath(os.path.join(list(module.__path__)[0], os.pardir))
                      for filename in os.listdir(sitedir):
                          s = filename.startswith
                          e = filename.endswith
                          if s(module_name) and e('-nspkg.pth'):
                              self.add_file(os.path.join(sitedir, filename))
  
              elif hasattr(module, '__file__'):
                  # https://docs.python.org/3/reference/import.html#__file__
                  path = module.__file__
  
                  if path.endswith('.pyc'):
                      _path = path[:-1]
                      if not os.path.isfile(_path):
                          raise ValueError(
                              'Could not find a *.py source file behind ' + path)
                      path = _path
  
                  if not path.endswith('.py'):
                      raise ValueError(
                          'We need a *.py source file instead of ' + path)
  
                  self.add_file(path)