Copier (https://copier.readthedocs.io/.) template to create scaffolding for different project types (python packages, etc.).
copier-ProjectScaffolding is a Copier template used to setup the scaffolding associated with different project types. When using copier-ProjectScaffolding, you will be asked to create a project along a number of different dimensions:
- Generate Documentation: Yes, No
- Repository Tool: git, None
- Hosting Platform: GitHub, None
- Project Type: Python Execution Environment, Python Package
- Continuous Integration / Delivery / Deployment: Yes, No
- Sign Artifacts: Yes, No
- Generate docker Images: Yes, No
- Additional Options based on project type (for more information, see Project Types)
Examples of generated output can be found at gt-sse-center/copier-ProjectScaffolding-Sample-PythonExecutionEnvironment and gt-sse-center/copier-ProjectScaffolding-Sample-PythonPackage.
When running copier with the copier-ProjectScaffolding template, you are prompted to select a project type to generate. Information on all available project types can be found in the following sections.
The Python Execution Environment package type creates an environment that contains a stand-alone version of python and installs all required dependencies during the bootstrap process. It produces a small number of files and is best suited for running python scripts. However, it does not contain the tooling required for modern python development (see Python Package for a project type that does include this type of tooling).
- Python bootstrapping via PythonBootstrapper
- Automatic dependency installation via requirements.txt
- GitHub Recommended Community Standards documentation
- GitHub pull request template
- GitHub issue templates
The Python Package project type creates an environment suitable for the development and publishing of python packages that adhere to modern best practices.
- Python bootstrapping via PythonBootstrapper
- Source code formatting via black
- Static source analysis via pylint
- Automated test execution via pytest
- Code coverage extraction via coverage
- Semantic version generation via AutoGitSemVer
- Python wheel creation
- Wheel deployment to PyPi
- Executable generation via cx_Freeze
- Simple local development through
Build.py
- Full Continuous Integration, Continuous Delivery, and Continuous Deployment (via GitHub Actions) for everything listed above
- GitHub Recommended Community Standards documentation
- GitHub pull request template
- GitHub issue templates
- [Optional] Build artifact signing via Minisign
- [Optional] Participation in the Open Source Security Foundation (OpenSSF) Best Practices Badge Program
- [Optional] Generation of development environment docker images in support of FAIR principles
There are different techniques to run copier with this template, where each of these techniques result in the same generated output. Your choice of a specific technique depends solely on your comfort and familiarity with the tools employed in the technique itself.
Running with docker is a good choice if you are familiar with docker, as no other dependencies are required. Information on installing docker is available at https://docs.docker.com/engine/install/.
Scenario | Command Line |
---|---|
Copy | docker run -it --rm -v .:/output gtssecenter/copier-projectscaffolding copy /output --trust |
Recopy | docker run -it --rm -v .:/output gtssecenter/copier-projectscaffolding recopy /output --trust |
Update | docker run -it --rm -v .:/output gtssecenter/copier-projectscaffolding update /output --trust |
copier-ProjectScaffolding requires additional python packages, which must be installed before invoking copier directly. Run the following command (ideally in a python virtual environment to avoid dependency conflicts) before invoking copier.
pip install copier copier-templates-extensions dbrownell_Common
Specific package versions used by the docker image above can be found in the Dockerfile used to build it.
Scenario | Command Line |
---|---|
Copy | copier copy https://github.com/gt-sse-center/copier-ProjectScaffolding /output --trust |
Recopy | copier recopy /output --trust |
Update | copier update /output --trust |
You can run copier directly on the copier-ProjectScaffolding source, if you plan on making changes to the template. See DEVELOPMENT.md for more information on each of these steps.
git clone https://github.com/gt-sse-center/copier-ProjectScaffolding
Bootstrap.sh
orBootstrap.cmd
. ./Activate.sh
orActivate.cmd
Scenario | Command Line |
---|---|
Copy | copier copy . /output --trust --vcs-ref=HEAD |
Recopy | copier recopy /output --trust --vcs-ref=HEAD |
Update | copier update /output --trust --vcs-ref=HEAD |
No additional setup is required to use this project.
Please visit Contributing and Development for information on contributing to this project.
Additional information can be found at these locations.
Title | Document | Description |
---|---|---|
Code of Conduct | CODE_OF_CONDUCT.md | Information about the the norms, rules, and responsibilities we adhere to when participating in this open source community. |
Contributing | CONTRIBUTING.md | Information about contributing code changes to this project. |
Development | DEVELOPMENT.md | Information about development activities involved in making changes to this project. |
Governance | GOVERNANCE.md | Information about how this project is governed. |
Maintainers | MAINTAINERS.md | Information about individuals who maintain this project. |
Security | SECURITY.md | Information about how to privately report security issues associated with this project. |
copier-ProjectScaffolding is licensed under the MIT license.