{
    "python.analysis.typeCheckingMode": "basic",
    "python.analysis.autoImportCompletions": true,
    "python.analysis.inlayHints.functionReturnTypes": true,

    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true,
        "editor.codeActionsOnSave": {
            "source.organizeImports": "explicit"
        }
    },
    "black-formatter.args": ["--line-length", "88"],
    "ruff.lint.run": "onSave",

    "editor.rulers": [88, 120],
    "editor.tabSize": 4,
    "editor.insertSpaces": true,
    "editor.renderWhitespace": "trailing",
    "editor.bracketPairColorization.enabled": true,
    "editor.stickyScroll.enabled": true,
    "editor.minimap.enabled": false,

    "files.autoSave": "afterDelay",
    "files.autoSaveDelay": 1000,
    "files.trimTrailingWhitespace": true,
    "files.insertFinalNewline": true,
    "files.exclude": {
        "**/__pycache__": true,
        "**/.ipynb_checkpoints": true,
        "**/.pytest_cache": true,
        "**/.ruff_cache": true
    },

    "notebook.output.scrolling": true,
    "notebook.output.textLineLimit": 500,

    "terminal.integrated.scrollback": 10000,
    "terminal.integrated.fontSize": 13,
    "terminal.integrated.defaultProfile.osx": "zsh",
    "terminal.integrated.defaultProfile.linux": "bash",

    "git.autofetch": true,

    "search.exclude": {
        "**/.venv": true,
        "**/node_modules": true,
        "**/__pycache__": true
    }
}
