diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..9088efc --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,19 @@ +FROM ubuntu + +ARG VENV_PATH=/opt/dev-venv +ENV VENV_ACTIVATE=${VENV_PATH}/bin/activate + +RUN apt update +RUN apt install -y python3.10-venv nvidia-cuda-toolkit gcc vim git + +# the mkdir command bypasses a profiler error, which allows us to run it with +# host code only to at least check that the profiler parameters are correctly +# provided; without this line, some tests will fail +RUN mkdir -p /usr/lib/x86_64-linux-gnu/nsight-compute/sections + +# we create the virtualenv here so that the devcontainer.json setting +# python.defaultInterpreterPath can be used to find it; if we do it in the +# post_create.sh script, the virtualenv will not be loaded and features like +# pylance, black, isort, etc. will not work +RUN python3.10 -m venv ${VENV_PATH} +RUN echo "source ${VENV_ACTIVATE}" >> ~/.bashrc diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..c6e997c --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,26 @@ +{ + "name": "Python Environment", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + "postCreateCommand": "bash .devcontainer/post_create.sh", + "customizations": { + "vscode": { + "extensions": [ + "editorconfig.editorconfig", + "ms-azuretools.vscode-docker", + "ms-python.python", + "ms-python.vscode-pylance", + "ms-python.pylint", + "ms-python.isort", + "ms-python.flake8", + "ms-python.black-formatter", + "ryanluker.vscode-coverage-gutters" + ], + "settings": { + "python.defaultInterpreterPath": "/opt/dev-venv/bin/python" + } + } + } +} diff --git a/.devcontainer/post_create.sh b/.devcontainer/post_create.sh new file mode 100644 index 0000000..15fd069 --- /dev/null +++ b/.devcontainer/post_create.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# install developer dependencies +pip install .[dev] + +# make sure the developer uses pre-commit hooks +pre-commit install