diff --git a/.devcontainer/airbyte-lib/devcontainer.json b/.devcontainer/airbyte-lib/devcontainer.json new file mode 100644 index 000000000000..2b0eb80a1d22 --- /dev/null +++ b/.devcontainer/airbyte-lib/devcontainer.json @@ -0,0 +1,73 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/python +{ + "name": "AirbyteLib DevContainer (Python)", + + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/python:0-3.10", + + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + "ghcr.io/devcontainers-contrib/features/poetry:2": {}, + "ghcr.io/devcontainers/features/docker-in-docker": {}, + "ghcr.io/devcontainers/features/python:1": { + "installJupyterlab": true + } + }, + + "overrideFeatureInstallOrder": [ + // Deterministic order maximizes cache reuse + "ghcr.io/devcontainers-contrib/features/poetry", + "ghcr.io/devcontainers/features/docker-in-docker", + "ghcr.io/devcontainers/features/python" + ], + // "workspaceFolder": "/workspaces/airbyte/airbyte-lib", + + // Configure tool-specific properties. + "customizations": { + "vscode": { + "extensions": [ + // Python extensions: + "charliermarsh.ruff", + "matangover.mypy", + "ms-python.python", + "ms-python.vscode-pylance", + // Toml support + "tamasfe.even-better-toml", + // Yaml and JSON Schema support: + "redhat.vscode-yaml", + // Contributing: + "GitHub.vscode-pull-request-github" + ], + "settings": { + "extensions.ignoreRecommendations": true, + "git.autofetch": true, + "git.openRepositoryInParentFolders": "always", + "python.defaultInterpreterPath": "/workspaces/airbyte/airbyte-lib/.venv/bin/python", + "python.interpreter.infoVisibility": "always", + "python.terminal.activateEnvironment": true, + "python.testing.pytestEnabled": true, + "python.testing.cwd": "/workspaces/airbyte/airbyte-lib", + "python.testing.pytestArgs": [ + "--rootdir=/workspaces/airbyte/airbyte-lib", + "." + ], + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff" + } + } + } + }, + "containerEnv": { + "POETRY_VIRTUALENVS_IN_PROJECT": "true" + }, + + // Mark the root directory as 'safe' for git. + "initializeCommand": "git config --add safe.directory /workspaces/airbyte", + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "python -m pip install jupyter notebook -U && cd airbyte-lib && poetry install" + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +}