cpython/.devcontainer/devcontainer.json

{
    "build": {
        "dockerfile": "Dockerfile"
    },
    "onCreateCommand": [
        // Install common tooling.
        "dnf",
        "install",
        "-y",
        "which",
        "zsh",
        "fish",
        // For umask fix below.
        "/usr/bin/setfacl"
    ],
    "updateContentCommand": {
        // Using the shell for `nproc` usage.
        "python": "./configure --config-cache --with-pydebug && make -s -j `nproc`",
        "docs": [
            "make",
            "--directory",
            "Doc",
            "venv",
            "html"
        ]
    },
    "postCreateCommand": {
        // https://github.com/orgs/community/discussions/26026
        "umask fix: workspace": ["sudo", "setfacl", "-bnR", "."],
        "umask fix: /tmp": ["sudo", "setfacl", "-bnR", "/tmp"]
    },
    "customizations": {
        "vscode": {
            "extensions": [
                // Highlighting for Parser/Python.asdl.
                "brettcannon.zephyr-asdl",
                // Highlighting for configure.ac.
                "maelvalais.autoconf",
                // C auto-complete.
                "ms-vscode.cpptools",
                // To view HTML build of docs.
                "ms-vscode.live-server",
                // Python auto-complete.
                "ms-python.python"
            ],
            "settings": {
                "C_Cpp.default.compilerPath": "/usr/bin/clang",
                "C_Cpp.default.cStandard": "c11",
                "C_Cpp.default.defines": [
                    "CONFIG_64",
                    "Py_BUILD_CORE"
                ],
                "C_Cpp.default.includePath": [
                    "${workspaceFolder}/*",
                    "${workspaceFolder}/Include/**"
                ],
                // https://github.com/microsoft/vscode-cpptools/issues/10732
                "C_Cpp.errorSquiggles": "disabled",
                "editor.insertSpaces": true,
                "editor.rulers": [
                    80
                ],
                "editor.tabSize": 4,
                "editor.trimAutoWhitespace": true,
                "files.associations": {
                    "*.h": "c"
                },
                "files.encoding": "utf8",
                "files.eol": "\n",
                "files.insertFinalNewline": true,
                "files.trimTrailingWhitespace": true,
                "python.analysis.diagnosticSeverityOverrides": {
                    // Complains about shadowing the stdlib w/ the stdlib.
                    "reportShadowedImports": "none",
                    // Doesn't like _frozen_importlib.
                    "reportMissingImports": "none"
                },
                "python.analysis.extraPaths": [
                    "Lib"
                ],
                "python.defaultInterpreterPath": "./python",
                "[restructuredtext]": {
                    "editor.tabSize": 3
                }
            }
        }
    }
}