docs: def run_from_designspace(
          self,
          designspace_path,
          output=(),
          interpolate=False,
          masters_as_instances=False,
          interpolate_binary_layout=False,
          round_instances=False,
          feature_writers=None,
          expand_features_to_instances=False,
          **kwargs
      ):
          """Run toolchain from a DesignSpace document to produce either static
          instance fonts (ttf or otf), interpolatable or variable fonts.
  
          Args:
              designspace_path: Path to designspace document.
              interpolate: If True output all instance fonts, otherwise just
                  masters. If the value is a string, only build instance(s) that
                  match given name. The string is compiled into a regular
                  expression and matched against the "name" attribute of
                  designspace instances using `re.fullmatch`.
              masters_as_instances: If True, output master fonts as instances.
              interpolate_binary_layout: Interpolate layout tables from compiled
                  master binaries.
              round_instances: apply integer rounding when interpolating with
                  MutatorMath.
              kwargs: Arguments passed along to run_from_ufos.
  
          Raises:
              TypeError: "variable" or "interpolatable" outputs are incompatible
                  with arguments "interpolate", "masters_as_instances", and
                  "interpolate_binary_layout".
          """
  
          interp_outputs = INTERPOLATABLE_OUTPUTS.intersection(output)
          static_outputs = STATIC_OUTPUTS.intersection(output)
          if interp_outputs:
              for argname in (
                  "interpolate",
                  "masters_as_instances",
                  "interpolate_binary_layout",
              ):
                  if locals()[argname]:
                      raise TypeError(
                          '"%s" argument incompatible with output %r'
                          % (argname, ", ".join(sorted(interp_outputs)))
                      )
  
          designspace = designspaceLib.DesignSpaceDocument.fromfile(designspace_path)
  
          # if no --feature-writers option was passed, check in the designspace's
          # <lib> element if user supplied a custom featureWriters configuration;
          # if so, use that for all the UFOs built from this designspace
          if feature_writers is None and FEATURE_WRITERS_KEY in designspace.lib:
              feature_writers = loadFeatureWriters(designspace)
  
          if static_outputs:
              self._run_from_designspace_static(
                  designspace,
                  outputs=static_outputs,
                  interpolate=interpolate,
                  masters_as_instances=masters_as_instances,
                  interpolate_binary_layout=interpolate_binary_layout,
                  round_instances=round_instances,
                  feature_writers=feature_writers,
                  expand_features_to_instances=expand_features_to_instances,
                  **kwargs
              )
          if interp_outputs:
              self._run_from_designspace_interpolatable(
                  designspace,
                  outputs=interp_outputs,
                  feature_writers=feature_writers,
                  **kwargs
              )