/ .vscode / settings.json
settings.json
  1  {
  2    // Python Configuration
  3    "[python]": {
  4      "editor.defaultFormatter": "charliermarsh.ruff",
  5      "editor.formatOnSave": true,
  6      "editor.codeActionsOnSave": {
  7        "source.fixAll.ruff": "explicit",
  8        "source.organizeImports.ruff": "explicit"
  9      }
 10    },
 11  
 12    // Ruff configuration (uses pyproject.toml automatically)
 13    // The Ruff extension will automatically detect and use the pyproject.toml settings
 14  
 15    // Disable mypy completely (repo only checks dev/clint files)
 16    // The mypy extension doesn't support per-file filtering, so we disable it entirely
 17    // to avoid false positives on files the repo doesn't check
 18    "mypy-type-checker.enabled": false,
 19  
 20    // Python analysis
 21    "python.analysis.typeCheckingMode": "off", // Disable Pylance strict checking
 22    "python.analysis.exclude": [
 23      // Default paths to exclude
 24      "**/node_modules",
 25      "**/__pycache__",
 26      "**/.*",
 27      // Extra paths to exclude
 28      "libs/**"
 29    ],
 30  
 31    // TypeScript/JavaScript Configuration
 32    "[typescript]": {
 33      "editor.defaultFormatter": "esbenp.prettier-vscode",
 34      "editor.formatOnSave": true,
 35      "editor.codeActionsOnSave": {
 36        "source.fixAll.eslint": "explicit"
 37      }
 38    },
 39    "[typescriptreact]": {
 40      "editor.defaultFormatter": "esbenp.prettier-vscode",
 41      "editor.formatOnSave": true,
 42      "editor.codeActionsOnSave": {
 43        "source.fixAll.eslint": "explicit"
 44      }
 45    },
 46    "[javascript]": {
 47      "editor.defaultFormatter": "esbenp.prettier-vscode",
 48      "editor.formatOnSave": true,
 49      "editor.codeActionsOnSave": {
 50        "source.fixAll.eslint": "explicit"
 51      }
 52    },
 53    "[javascriptreact]": {
 54      "editor.defaultFormatter": "esbenp.prettier-vscode",
 55      "editor.formatOnSave": true,
 56      "editor.codeActionsOnSave": {
 57        "source.fixAll.eslint": "explicit"
 58      }
 59    },
 60  
 61    // ESLint configuration
 62    "eslint.workingDirectories": ["./mlflow/server/js"],
 63    "eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"],
 64  
 65    // TypeScript configuration
 66    "typescript.tsdk": "./mlflow/server/js/node_modules/typescript/lib",
 67    "typescript.enablePromptUseWorkspaceTsdk": true,
 68  
 69    // JSON formatting
 70    "[json]": {
 71      "editor.defaultFormatter": "esbenp.prettier-vscode",
 72      "editor.formatOnSave": true
 73    },
 74    "[jsonc]": {
 75      "editor.defaultFormatter": "esbenp.prettier-vscode",
 76      "editor.formatOnSave": true
 77    },
 78  
 79    // YAML formatting
 80    "[yaml]": {
 81      "editor.defaultFormatter": "esbenp.prettier-vscode",
 82      "editor.formatOnSave": true
 83    },
 84  
 85    // GitHub Actions workflow formatting
 86    "[github-actions-workflow]": {
 87      "editor.defaultFormatter": "esbenp.prettier-vscode",
 88      "editor.formatOnSave": true
 89    },
 90  
 91    // Markdown formatting
 92    "[markdown]": {
 93      "editor.defaultFormatter": "esbenp.prettier-vscode",
 94      "editor.formatOnSave": true
 95    },
 96  
 97    // `.prompt.md` files in `.github/prompts`
 98    "[prompt]": {
 99      "editor.defaultFormatter": "esbenp.prettier-vscode",
100      "editor.formatOnSave": true
101    },
102  
103    // Files to exclude from explorer
104    "files.exclude": {
105      "**/__pycache__": true,
106      "**/.pytest_cache": true,
107      "**/*.pyc": true,
108      "**/.mypy_cache": true,
109      "**/.ruff_cache": true,
110      "**/node_modules": true
111    },
112  
113    // Search exclusions
114    "search.exclude": {
115      "**/node_modules": true,
116      "**/__pycache__": true,
117      "**/.pytest_cache": true,
118      "**/build": true,
119      "**/dist": true,
120      "mlflow/server/js/build": true
121    },
122  
123    // Prevent VS Code from following symlinks during searches
124    // This avoids duplicate results from symlinks in libs/ directory
125    "search.followSymlinks": false,
126  
127    // Editor settings
128    "editor.rulers": [100], // Show ruler at 100 chars for Python
129  
130    // Python specific settings
131    "python.terminal.activateEnvironment": false,
132  
133    // File associations
134    "files.associations": {
135      "*.mdx": "markdown",
136      "*.ipynb": "jupyter"
137    },
138    "python.testing.pytestArgs": ["tests"],
139    "python.testing.unittestEnabled": false,
140    "python.testing.pytestEnabled": true
141  }