{"name": "Python", "settings": "{\"settings\": \"{\\n //\\n //\\n //\\n // PYTHON GENERAL\\n //\\n //\\n //\\n \\\"[python]\\\": {\\n //\\n // ruff formatter, see https://github.com/astral-sh/ruff-vscode#example-configurations\\n //\\n \\\"editor.codeActionsOnSave\\\": {\\n \\\"source.organizeImports\\\": \\\"explicit\\\",\\n \\\"source.fixAll\\\": \\\"explicit\\\"\\n },\\n //\\n // editor\\n //\\n \\\"editor.rulers\\\": [\\n { // PEP8 documentation\\n \\\"column\\\": 72,\\n \\\"color\\\": \\\"#37ff001b\\\"\\n },\\n { // PEP8\\n \\\"column\\\": 79\\n },\\n { // black formatter\\n \\\"column\\\": 88,\\n \\\"color\\\": \\\"#ffff00\\\"\\n },\\n { // the max of the max\\n \\\"column\\\": 120,\\n \\\"color\\\": \\\"#ff0000\\\"\\n }\\n ],\\n \\\"editor.defaultFormatter\\\": \\\"charliermarsh.ruff\\\",\\n \\\"editor.acceptSuggestionOnCommitCharacter\\\": false,\\n \\\"files.trimTrailingWhitespace\\\": false\\n },\\n \\\"python.terminal.activateEnvInCurrentTerminal\\\": true,\\n \\\"python.terminal.activateEnvironment\\\": true,\\n //\\n //\\n //\\n // NOTEBOOKS\\n //\\n //\\n //\\n \\\"notebook.formatOnSave.enabled\\\": true,\\n \\\"notebook.compactView\\\": true,\\n \\\"notebook.codeActionsOnSave\\\": {\\n \\\"source.fixAll\\\": \\\"explicit\\\",\\n \\\"source.organizeImports.ruff\\\": \\\"explicit\\\",\\n },\\n \\\"notebook.stickyScroll.enabled\\\": true,\\n \\\"notebook.consolidatedRunButton\\\": true,\\n //\\n //\\n //\\n // Formatting / Linting / Type Checking\\n //\\n //\\n //\\n \\\"python.languageServer\\\": \\\"Pylance\\\",\\n \\\"python.analysis.typeCheckingMode\\\": \\\"standard\\\", // the same setting in the pyproject.toml file overrides this if set\\n \\\"python.analysis.autoFormatStrings\\\": true,\\n \\\"python.analysis.gotoDefinitionInStringLiteral\\\": true,\\n \\\"python.analysis.autoImportCompletions\\\": true,\\n \\\"python.analysis.useLibraryCodeForTypes\\\": true,\\n \\\"python.analysis.completeFunctionParens\\\": false,\\n \\\"ruff.enable\\\": true,\\n \\\"ruff.codeAction.fixViolation\\\": {\\n \\\"enable\\\": true\\n },\\n \\\"ruff.codeAction.disableRuleComment\\\": {\\n \\\"enable\\\": true\\n },\\n \\\"ruff.configurationPreference\\\": \\\"filesystemFirst\\\",\\n \\\"ruff.lineLength\\\": 88,\\n \\\"ruff.lint.select\\\": [\\n \\\"E\\\",\\n \\\"F\\\",\\n \\\"UP\\\",\\n \\\"EM\\\",\\n \\\"W\\\",\\n \\\"I\\\",\\n \\\"N\\\",\\n \\\"YTT\\\",\\n \\\"ASYNC\\\",\\n \\\"BLE\\\",\\n \\\"FBT\\\",\\n \\\"B\\\",\\n \\\"A\\\",\\n \\\"C4\\\",\\n \\\"DTZ\\\",\\n \\\"EXE\\\",\\n \\\"FA\\\",\\n \\\"ICN\\\",\\n \\\"INP\\\",\\n \\\"PT\\\",\\n \\\"RSE\\\",\\n \\\"SLOT\\\",\\n \\\"SIM\\\",\\n \\\"PTH\\\",\\n \\\"PD\\\",\\n \\\"PL\\\",\\n \\\"TRY\\\",\\n \\\"FLY\\\",\\n \\\"NPY\\\",\\n \\\"FAST\\\",\\n \\\"PERF\\\",\\n \\\"FURB\\\",\\n \\\"RUF\\\",\\n ],\\n \\\"ruff.lint.ignore\\\": [],\\n //\\n // - errors\\n //\\n \\\"python.analysis.diagnosticSeverityOverrides\\\": {\\n //\\\"reportMissingTypeStubs\\\": \\\"information\\\" // https://github.com/microsoft/pyright/blob/main/docs/type-stubs.md#generating-type-stubs-in-vs-code\\n },\\n //\\n //\\n //\\n // EDITOR\\n //\\n //\\n // - font / writing style\\n //\\n \\\"editor.fontFamily\\\": \\\"'JetbrainsMono Nerd Font', 'Consolas', 'Courier New', monospace\\\",\\n \\\"editor.fontLigatures\\\": false,\\n \\\"editor.fontSize\\\": 14,\\n \\\"editor.lineHeight\\\": 24,\\n \\\"editor.matchBrackets\\\": \\\"always\\\",\\n \\\"editor.renderWhitespace\\\": \\\"trailing\\\",\\n \\\"editor.bracketPairColorization.enabled\\\": true,\\n \\\"editor.bracketPairColorization.independentColorPoolPerBracketType\\\": true,\\n \\\"editor.guides.highlightActiveBracketPair\\\": true,\\n \\\"editor.guides.highlightActiveIndentation\\\": true,\\n \\\"editor.mouseWheelZoom\\\": true,\\n //\\n // - auto-completion / formatting / linting / highlighting\\n //\\n \\\"editor.formatOnSave\\\": true,\\n \\\"editor.formatOnPaste\\\": true,\\n \\\"editor.formatOnType\\\": true,\\n \\\"editor.suggest.insertMode\\\": \\\"replace\\\",\\n \\\"editor.inlineSuggest.enabled\\\": true,\\n \\\"editor.insertSpaces\\\": true,\\n \\\"editor.detectIndentation\\\": true,\\n \\\"editor.linkedEditing\\\": true,\\n \\\"editor.suggest.showWords\\\": false,\\n \\\"editor.occurrencesHighlight\\\": \\\"singleFile\\\",\\n \\\"editor.acceptSuggestionOnEnter\\\": \\\"smart\\\",\\n //\\n // - minimap\\n //\\n \\\"editor.minimap.enabled\\\": true,\\n \\\"editor.minimap.size\\\": \\\"fill\\\",\\n \\\"editor.minimap.autohide\\\": true,\\n //\\n //\\n //\\n // WORKBENCH\\n //\\n //\\n //\\n \\\"workbench.tree.indent\\\": 15,\\n \\\"workbench.tree.renderIndentGuides\\\": \\\"always\\\",\\n //\\n //\\n //\\n // FILES\\n //\\n //\\n //\\n \\\"files.autoSave\\\": \\\"afterDelay\\\",\\n \\\"files.autoSaveDelay\\\": 1000, // in ms\\n \\\"files.trimTrailingWhitespace\\\": true,\\n \\\"files.readonlyInclude\\\": {\\n \\\"**/.venv/**\\\": true,\\n \\\"**/venv/**\\\": true\\n },\\n \\\"files.exclude\\\": {\\n \\\"**/.git\\\": true,\\n \\\"**/__pycache__\\\": true,\\n \\\"**/.cache\\\": true,\\n \\\"**/.coverage\\\": true,\\n \\\"**/.coverage.*\\\": true,\\n \\\"**/.hypothesis\\\": true,\\n \\\"**/.mypy_cache\\\": true,\\n \\\"**/.nox\\\": true,\\n \\\"**/.pytest_cache\\\": true,\\n \\\"**/.ruff_cache\\\": true,\\n \\\"**/.tox\\\": true\\n },\\n //\\n //\\n //\\n // EXPLORER / SEARCH\\n //\\n //\\n //\\n \\\"explorer.autoReveal\\\": false,\\n \\\"explorer.copyRelativePathSeparator\\\": \\\"/\\\",\\n //\\n //\\n //\\n // TERMINAL\\n //\\n //\\n //\\n \\\"terminal.integrated.scrollback\\\": 10000,\\n \\\"terminal.integrated.fontSize\\\": 13,\\n \\\"terminal.integrated.cursorStyle\\\": \\\"line\\\",\\n \\\"terminal.integrated.cursorBlinking\\\": true,\\n \\\"terminal.integrated.shellIntegration.suggestEnabled\\\": true,\\n \\\"terminal.integrated.unicodeVersion\\\": \\\"11\\\",\\n \\\"terminal.integrated.enableImages\\\": true,\\n //\\n //\\n //\\n // COMMENT HIGHLIGHTING / TODOs\\n //\\n //\\n //\\n \\\"better-comments.multilineComments\\\": true,\\n \\\"better-comments.highlightPlainText\\\": true,\\n \\\"todo-tree.highlights.enabled\\\": false, // already done with better comments\\n \\\"todo-tree.general.statusBar\\\": \\\"top three\\\",\\n \\\"todo-tree.general.showIconsInsteadOfTagsInStatusBar\\\": true,\\n \\\"todo-tree.filtering.ignoreGitSubmodules\\\": true,\\n \\\"todo-tree.filtering.useBuiltInExcludes\\\": \\\"file excludes\\\",\\n \\\"todo-tree.tree.scanMode\\\": \\\"workspace only\\\",\\n \\\"todo-tree.general.debug\\\": false,\\n \\\"todo-tree.filtering.includeHiddenFiles\\\": true,\\n \\\"todo-tree.tree.showCountsInTree\\\": true,\\n \\\"todo-tree.tree.flat\\\": true,\\n \\\"todo-tree.filtering.excludeGlobs\\\": [\\n \\\"**/.venv/*/**\\\",\\n \\\"**/.tox/**\\\"\\n ],\\n \\\"todo-tree.general.tags\\\": [\\n \\\"BUG\\\",\\n \\\"FIXME\\\",\\n \\\"TODO\\\",\\n \\\"?\\\"\\n ],\\n //\\n //\\n //\\n // THEMES / CUSTOMIZATION\\n //\\n //\\n //\\n \\\"workbench.colorTheme\\\": \\\"One Dark Pro\\\",\\n \\\"editor.tokenColorCustomizations\\\": {\\n \\\"[One Dark Pro*]\\\": {\\n \\\"textMateRules\\\": [\\n {\\n \\\"name\\\": \\\"italic comment\\\",\\n \\\"scope\\\": \\\"comment, punctuation.definition.comment, variable.parameter.language.python\\\",\\n \\\"settings\\\": {\\n \\\"fontStyle\\\": \\\"italic\\\"\\n }\\n }\\n ]\\n }\\n },\\n \\\"editor.semanticTokenColorCustomizations\\\": {\\n \\\"[One Dark Pro*]\\\": {\\n \\\"enabled\\\": true,\\n \\\"rules\\\": {\\n // see https://github.com/Binaryify/OneDark-Pro#python--pylance-users for more rules\\n \\\"*.typeHint:python\\\": \\\"#8c8c8c\\\",\\n \\\"*.async:python\\\": \\\"#eb78ff\\\",\\n \\\"comment\\\": {\\n \\\"italic\\\": true\\n },\\n \\\"*.typeHintComment:python\\\": {\\n \\\"foreground\\\": \\\"#8c8c8c\\\",\\n \\\"italic\\\": false\\n },\\n \\\"parameter:python\\\": {\\n \\\"italic\\\": true\\n },\\n \\\"*.abstract:python\\\": {\\n \\\"bold\\\": true\\n },\\n \\\"module:python\\\": {\\n \\\"bold\\\": true\\n }\\n }\\n }\\n },\\n //\\n //\\n //\\n // MARKDOWN\\n //\\n //\\n //\\n \\\"[markdown]\\\": {\\n \\\"editor.defaultFormatter\\\": \\\"vscode.markdown-language-features\\\"\\n },\\n \\\"markdown.editor.pasteUrlAsFormattedLink.enabled\\\": \\\"smart\\\",\\n}\"}", "keybindings": "{\"keybindings\": \"// Place your key bindings in this file to override the defaults\\n[\\n //\\n //\\n // PYTHON\\n //\\n //\\n //\\n {\\n \\\"key\\\": \\\"ctrl+enter\\\",\\n \\\"command\\\": \\\"python.execInTerminal-icon\\\",\\n \\\"when\\\": \\\"editorLangId == 'python'\\\"\\n },\\n //\\n //\\n // TERMINAL\\n //\\n //\\n //\\n {\\n \\\"key\\\": \\\"ctrl+k t\\\",\\n \\\"command\\\": \\\"workbench.action.terminal.clear\\\"\\n },\\n {\\n \\\"key\\\": \\\"ctrl+shift t\\\",\\n \\\"command\\\": \\\"workbench.action.terminal.new\\\"\\n },\\n {\\n \\\"key\\\": \\\"ctrl+t\\\",\\n \\\"command\\\": \\\"workbench.action.terminal.toggleTerminal\\\"\\n },\\n //\\n //\\n // EDITOR\\n //\\n //\\n //\\n {\\n \\\"key\\\": \\\"f4\\\",\\n \\\"command\\\": \\\"editor.action.goToReferences\\\",\\n \\\"when\\\": \\\"editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor\\\"\\n }\\n]\", \"platform\": 3}", "snippets": "{\"snippets\": {\"python.json\": \"{\\n \\\"if\\\": {\\n \\\"prefix\\\": \\\"if\\\",\\n \\\"body\\\": [\\n \\\"if ${1:expression}:\\\",\\n \\\"\\\\t${2:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an if statement\\\"\\n },\\n \\\"if/else\\\": {\\n \\\"prefix\\\": \\\"if/else\\\",\\n \\\"body\\\": [\\n \\\"if ${1:condition}:\\\",\\n \\\"\\\\t${2:pass}\\\",\\n \\\"else:\\\",\\n \\\"\\\\t${3:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an if statement with else\\\"\\n },\\n \\\"elif\\\": {\\n \\\"prefix\\\": \\\"elif\\\",\\n \\\"body\\\": [\\n \\\"elif ${1:expression}:\\\",\\n \\\"\\\\t${2:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an elif\\\"\\n },\\n \\\"else\\\": {\\n \\\"prefix\\\": \\\"else\\\",\\n \\\"body\\\": [\\n \\\"else:\\\",\\n \\\"\\\\t${1:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an else\\\"\\n },\\n \\\"while\\\": {\\n \\\"prefix\\\": \\\"while\\\",\\n \\\"body\\\": [\\n \\\"while ${1:expression}:\\\",\\n \\\"\\\\t${2:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a while loop\\\"\\n },\\n \\\"while/else\\\": {\\n \\\"prefix\\\": \\\"while/else\\\",\\n \\\"body\\\": [\\n \\\"while ${1:expression}:\\\",\\n \\\"\\\\t${2:pass}\\\",\\n \\\"else:\\\",\\n \\\"\\\\t${3:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a while loop with else\\\"\\n },\\n \\\"for\\\": {\\n \\\"prefix\\\": \\\"for\\\",\\n \\\"body\\\": [\\n \\\"for ${1:target_list} in ${2:expression_list}:\\\",\\n \\\"\\\\t${3:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a for loop\\\"\\n },\\n \\\"for/else\\\": {\\n \\\"prefix\\\": \\\"for/else\\\",\\n \\\"body\\\": [\\n \\\"for ${1:target_list} in ${2:expression_list}:\\\",\\n \\\"\\\\t${3:pass}\\\",\\n \\\"else:\\\",\\n \\\"\\\\t${4:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a for loop with else\\\"\\n },\\n \\\"try/except\\\": {\\n \\\"prefix\\\": \\\"try/except\\\",\\n \\\"body\\\": [\\n \\\"try:\\\",\\n \\\"\\\\t${1:pass}\\\",\\n \\\"except ${2:expression} as ${3:identifier}:\\\",\\n \\\"\\\\t${4:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a try/except statement\\\"\\n },\\n \\\"try/finally\\\": {\\n \\\"prefix\\\": \\\"try/finally\\\",\\n \\\"body\\\": [\\n \\\"try:\\\",\\n \\\"\\\\t${1:pass}\\\",\\n \\\"finally:\\\",\\n \\\"\\\\t${2:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a try/finally statement\\\"\\n },\\n \\\"try/except/else\\\": {\\n \\\"prefix\\\": \\\"try/except/else\\\",\\n \\\"body\\\": [\\n \\\"try:\\\",\\n \\\"\\\\t${1:pass}\\\",\\n \\\"except ${2:expression} as ${3:identifier}:\\\",\\n \\\"\\\\t${4:pass}\\\",\\n \\\"else:\\\",\\n \\\"\\\\t${5:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a try/except/else statement\\\"\\n },\\n \\\"try/except/finally\\\": {\\n \\\"prefix\\\": \\\"try/except/finally\\\",\\n \\\"body\\\": [\\n \\\"try:\\\",\\n \\\"\\\\t${1:pass}\\\",\\n \\\"except ${2:expression} as ${3:identifier}:\\\",\\n \\\"\\\\t${4:pass}\\\",\\n \\\"finally:\\\",\\n \\\"\\\\t${5:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a try/except/finally statement\\\"\\n },\\n \\\"try/except/else/finally\\\": {\\n \\\"prefix\\\": \\\"try/except/else/finally\\\",\\n \\\"body\\\": [\\n \\\"try:\\\",\\n \\\"\\\\t${1:pass}\\\",\\n \\\"except ${2:expression} as ${3:identifier}:\\\",\\n \\\"\\\\t${4:pass}\\\",\\n \\\"else:\\\",\\n \\\"\\\\t${5:pass}\\\",\\n \\\"finally:\\\",\\n \\\"\\\\t${6:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a try/except/else/finally statement\\\"\\n },\\n \\\"with\\\": {\\n \\\"prefix\\\": \\\"with\\\",\\n \\\"body\\\": [\\n \\\"with ${1:expression} as ${2:target}:\\\",\\n \\\"\\\\t${3:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a with statement\\\"\\n },\\n \\\"def\\\": {\\n \\\"prefix\\\": \\\"def\\\",\\n \\\"body\\\": [\\n \\\"def ${1:funcname}(${2:parameter_list}):\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${3:docstring}\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${4:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a function definition\\\"\\n },\\n \\\"def(class method)\\\": {\\n \\\"prefix\\\": \\\"def(class method)\\\",\\n \\\"body\\\": [\\n \\\"def ${1:funcname}(self, ${2:parameter_list}):\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${3:docstring}\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${4:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a class method\\\"\\n },\\n \\\"def(static class method)\\\": {\\n \\\"prefix\\\": \\\"def(static class method)\\\",\\n \\\"body\\\": [\\n \\\"@staticmethod\\\",\\n \\\"def ${1:funcname}(${2:parameter_list}):\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${3:docstring}\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${4:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a static class method\\\"\\n },\\n \\\"def(abstract class method)\\\": {\\n \\\"prefix\\\": \\\"def(abstract class method)\\\",\\n \\\"body\\\": [\\n \\\"def ${1:funcname}(self, ${2:parameter_list}):\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${3:docstring}\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\traise NotImplementedError\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an abstract class method\\\"\\n },\\n \\\"class\\\": {\\n \\\"prefix\\\": \\\"class\\\",\\n \\\"body\\\": [\\n \\\"class ${1:classname}(${2:object}):\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${3:docstring}\\\",\\n \\\"\\\\t\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\n \\\"\\\\t${4:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a class definition\\\"\\n },\\n \\\"lambda\\\": {\\n \\\"prefix\\\": \\\"lambda\\\",\\n \\\"body\\\": [\\n \\\"lambda ${1:parameter_list}: ${2:expression}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a lambda statement\\\"\\n },\\n \\\"if(main)\\\": {\\n \\\"prefix\\\": \\\"__main__\\\",\\n \\\"body\\\": [\\n \\\"if __name__ == \\\\\\\"__main__\\\\\\\":\\\",\\n \\\" ${1:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for a `if __name__ == \\\\\\\"__main__\\\\\\\": ...` block\\\"\\n },\\n \\\"async/def\\\": {\\n \\\"prefix\\\": \\\"async/def\\\",\\n \\\"body\\\": [\\n \\\"async def ${1:funcname}(${2:parameter_list}):\\\",\\n \\\"\\\\t${3:pass}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an async statement\\\"\\n },\\n \\\"async/for\\\": {\\n \\\"prefix\\\": \\\"async/for\\\",\\n \\\"body\\\": [\\n \\\"async for ${1:target} in ${2:iter}:\\\",\\n \\\"\\\\t${3:block}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an async for statement\\\"\\n },\\n \\\"async/for/else\\\": {\\n \\\"prefix\\\": \\\"async/for/else\\\",\\n \\\"body\\\": [\\n \\\"async for ${1:target} in ${2:iter}:\\\",\\n \\\"\\\\t${3:block}\\\",\\n \\\"else:\\\",\\n \\\"\\\\t${4:block}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an async for statement with else\\\"\\n },\\n \\\"async/with\\\": {\\n \\\"prefix\\\": \\\"async/with\\\",\\n \\\"body\\\": [\\n \\\"async with ${1:expr} as ${2:var}:\\\",\\n \\\"\\\\t${3:block}\\\"\\n ],\\n \\\"description\\\": \\\"Code snippet for an async with statement\\\"\\n }\\n}\"}}", "extensions": "[\n {\"identifier\": {\"id\": \"ms-python.python\"}, \"displayName\": \"Python\"},\n {\"identifier\": {\"id\": \"ms-python.vscode-pylance\"}, \"displayName\": \"Pylance\"},\n {\"identifier\": {\"id\": \"donjayamanne.python-environment-manager\"}, \"displayName\": \"Python Environment Manager\"},\n {\"identifier\": {\"id\": \"charliermarsh.ruff\"}, \"displayName\": \"Ruff\"},\n {\"identifier\": {\"id\": \"kevinrose.vsc-python-indent\"}, \"displayName\": \"Python Indent\"},\n {\"identifier\": {\"id\": \"njpwerner.autodocstring\"}, \"displayName\": \"Auto Docstring\"},\n {\"identifier\": {\"id\": \"tamasfe.even-better-toml\"}, \"displayName\": \"Even Better TOML\"},\n {\"identifier\": {\"id\": \"gruntfuggly.todo-tree\"}, \"displayName\": \"Todo Tree\"},\n {\"identifier\": {\"id\": \"aaron-bond.better-comments\"}, \"displayName\": \"Better Comments\"},\n {\"identifier\": {\"id\": \"zhuangtongfa.material-theme\"}, \"displayName\": \"One Dark Pro\"}\n]"}