{
  example = {
    plugins.lsp = {
      enable = true;

      servers.pylsp = {
        enable = true;

        settings = {
          configurationSources = "pycodestyle";

          plugins = {
            autopep8 = {
              enabled = true;
            };
            flake8 = {
              config = null;
              enabled = true;
              exclude = [ ];
              executable = "flake8";
              filename = null;
              hangClosing = null;
              ignore = [ ];
              maxComplexity = null;
              maxLineLength = null;
              indentSize = null;
              perFileIgnores = [ ];
              select = null;
            };
            jedi = {
              auto_import_modules = [ "numpy" ];
              extra_paths = [ ];
              environment = null;
            };
            jedi_completion = {
              enabled = true;
              include_params = true;
              include_class_objects = false;
              include_function_objects = false;
              fuzzy = false;
              eager = false;
              resolve_at_most = 25;
              cache_for = [
                "pandas"
                "numpy"
                "tensorflow"
                "matplotlib"
              ];
            };
            jedi_definition = {
              enabled = true;
              follow_imports = true;
              follow_builtin_imports = true;
              follow_builtin_definitions = true;
            };
            jedi_hover = {
              enabled = true;
            };
            jedi_references = {
              enabled = true;
            };
            jedi_signature_help = {
              enabled = true;
            };
            jedi_symbols = {
              enabled = true;
              all_scopes = true;
              include_import_symbols = true;
            };
            mccabe = {
              enabled = true;
              threshold = 15;
            };
            preload = {
              enabled = true;
              modules = [ ];
            };
            pycodestyle = {
              enabled = true;
              exclude = [ ];
              filename = [ ];
              ropeFolder = null;
              ignore = [ ];
              hangClosing = true;
              maxLineLength = 80;
              indentSize = 4;
            };
            pydocstyle = {
              enabled = false;
              convention = null;
              addIgnore = [ ];
              addSelect = [ ];
              ignore = [ ];
              select = null;
              match = "(?!test_).*\\.py";
              matchDir = "[^\\.].*";
            };
            pyflakes = {
              enabled = true;
            };
            pylint = {
              enabled = true;
              args = [ ];
              executable = null;
            };
            rope_autoimport = {
              enabled = true;
              memory = false;
            };
            rope_completion = {
              enabled = true;
              eager = false;
            };
            yapf = {
              enabled = true;
            };
            # Third party plugins
            pylsp_mypy = {
              enabled = true;
              live_mode = true;
              dmypy = false;
              strict = false;
              overrides = [ true ];
              dmypy_status_file = ".dmypy.json";
              config_sub_paths = [ ];
              report_progress = false;
            };
            black = {
              enabled = true;
              cache_config = true;
              line_length = 100;
              preview = true;
            };
            memestra = {
              enabled = true;
            };
            rope = {
              enabled = true;
            };
            ruff = {
              enabled = true;
              config = "/foo/bar/pyproject.toml";
              exclude = [
                "foo"
                "bar"
              ];
              executable = "/foo/bar/ruff";
              ignore = [
                "E42"
                "E720"
              ];
              extendIgnore = [ "E12" ];
              lineLength = 123;
              perFileIgnores = {
                "__init__.py" = [ "E402" ];
                "path/to/file.py" = [ "E402" ];
              };
              select = [
                "E01"
                "E56"
              ];
              extendSelect = [ "E68" ];
              format = [ "E90" ];
            };
          };
          rope = {
            extensionModules = null;
            ropeFolder = null;
          };
        };
      };
    };
  };
}
