This template is designed to streamline the setup of a Python development environment using Miniforge on Debian Bookworm. It's equipped with a collection of tools and extensions specifically chosen to enhance the Python development workflow, from code writing to testing and deployment.
| Feature | Description |
|---|---|
| Operating System | Debian Bookworm, providing a stable foundation for development. |
| Package Management | Miniforge, providing Conda and Mamba for efficient package and environment management. |
| Programming Language | Python, ready for development right out of the box. |
| Version Control | Git and Git LFS integrated for robust version control, including large file handling. |
| Containerization | Supports Docker-in-Docker and Docker-outside-of-Docker. |
| GitHub CLI | Facilitates interaction with GitHub repositories and services directly from the command line. |
| VSCode Extensions | A curated list of VSCode extensions installed, including essentials for Python development. |
| Testing Framework | Pytest configured to run tests from the tests directory, utilizing VSCode's test runner for ease of testing. |
| Environment Setup | Development and application dependencies are managed in separate files but merged in the development environment automatically by the build-environment task. |
- Clone and Open: Clone this repository and open it in VSCode. The project will prompt to reopen in a devcontainer.
- Dev Environment Initialization: The
build-environmenttask runs automatically, preparing your development environment by integrating both development and application dependencies. - Rename the Project Directory: Rename the
/projectdirectory to match the name of your new project to get started.
- Development Dependencies: Defined in
environment.dev.yml. - Application Dependencies: Defined in
environment.yml. A frozen set of these dependencies is created and stored inenvironment.lock.ymlfor reproducible deployments. - Automatic Merging: The
build-environmenttask merges your development and application dependencies when setting up your development environment. For managing dependencies, rely on this task rather than manually using Conda commands.
Tests are run using VSCode's integrated test runner:
- Navigate to the testing sidebar in VSCode.
- You'll see your tests listed there. Test can be run directly from the UI.
VSCode's launch.json is configured to debug the currently open Python file, allowing you to run and debug any part of your project easily.
Note: You may need to tweak
launch.jsonfor specific project requirements, such as adding arguments or setting environment variables.
- Open
project/main.pyor any Python file you intend to run. - Use
F5or the green play button in the "Run and Debug" sidebar to start debugging.
Deploy your application using the dependencies detailed in environment.lock.yml to guarantee that your deployment mirrors the tested state of your application.
We welcome contributions to improve the miniforge-devcontainer-template. Please follow the standard fork and pull request workflow. Make sure to add tests for new features and update the documentation as necessary.
This project is licensed under the MIT License.