docs: def build_ext(self):
          """Returns a class that can be used as a replacement for the
          ``build_ext`` command in ``distutils`` and that will download and
          compile the C core of igraph if needed."""
          try:
              from setuptools.command.build_ext import build_ext
          except ImportError:
              from distutils.command.build_ext import build_ext
  
          buildcfg = self
          class custom_build_ext(build_ext):
              def run(self):
                  # Print a warning if pkg-config is not available or does not know about igraph
                  if buildcfg.use_pkgconfig:
                      detected = buildcfg.detect_from_pkgconfig()
                  else:
                      detected = False
  
                  # Check whether we have already compiled igraph in a previous run.
                  # If so, it should be found in igraphcore/include and
                  # igraphcore/lib
                  if os.path.exists("igraphcore"):
                      buildcfg.use_built_igraph()
                      detected = True
  
                  # Download and compile igraph if the user did not disable it and
                  # we do not know the libraries from pkg-config yet
                  if not detected:
                      if buildcfg.download_igraph_if_needed and is_unix_like():
                          detected = buildcfg.download_and_compile_igraph()
                          if detected:
                              buildcfg.use_built_igraph()
  
                  # Fall back to an educated guess if everything else failed
                  if not detected:
                      buildcfg.use_educated_guess()
  
                  # Replaces library names with full paths to static libraries
                  # where possible
                  if buildcfg.static_extension:
                      buildcfg.replace_static_libraries(exclusions=["m"])
  
                  # Prints basic build information
                  buildcfg.print_build_info()
  
                  ext = first(extension for extension in self.extensions
                          if extension.name == "louvain._c_louvain")
                  buildcfg.configure(ext)
  
                  # Run the original build_ext command
                  build_ext.run(self)
  
          return custom_build_ext