{ "name": "Default Linux Universal", "image": "mcr.microsoft.com/devcontainers/universal:2-linux", "features": { "ghcr.io/devcontainers-contrib/features/poetry:2": {} }, "postCreateCommand": "poetry config virtualenvs.in-project true && poetry install -E all && poetry run pre-commit install && yarn install", "customizations": { "vscode": { "settings": { "python.analysis.diagnosticMode": "workspace", "python.analysis.typeCheckingMode": "basic", "ruff.organizeImports": false, "[python]": { "editor.defaultFormatter": "ms-python.black-formatter", "editor.codeActionsOnSave": { "source.fixAll.ruff": true, "source.organizeImports": true } }, "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[javascriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[typescriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "files.exclude": { "**/__pycache__": true }, "files.watcherExclude": { "**/target/**": true, "**/__pycache__": true } }, "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "ms-python.isort", "ms-python.black-formatter", "charliermarsh.ruff", "EditorConfig.EditorConfig", "esbenp.prettier-vscode", "bradlc.vscode-tailwindcss" ] } } }