UCL-ARC / python-tooling

Python package template for new research software projects
http://github-pages.arc.ucl.ac.uk/python-tooling/
MIT License
43 stars 2 forks source link
cookiecutter hacktoberfest python python-template python-templates python3 research-software research-software-engineering ucl
UCL ARC Python tooling logo

UCL ARC Python Recommendations

This repository collects the UCL ARC recommendations for a research software project in Python. It contains a template for new Python packages and a website documenting our recommendations. We've turned on discussions for this repo, and we welcome questions there or in the #helpme channel on the UCL research programming hub Slack.

πŸͺ Our template is a cookiecutter template which automatically creates new Python packages with our recommended tooling set up and ready to go.

Note If you're making a package within a community that has an existing package template (e.g., scikit-hep), we recommend using their template instead of this one.

Tutorial

Some quick instructions for using our template are below. We also have a tutorial that has been presented in a couple of workshops aimed at researchers at UCL.

Using our template

If you have uv installed, you can use our template with the following one-liner:

uvx cookiecutter gh:ucl-arc/python-tooling --checkout latest

Alternatively you can install cookiecutter (following the recommended instructions). Do this if you don't use uv, or if you're likely to want to use cookiecutter again.

Then you'll need to run cookiecutter with our template:

cookiecutter gh:ucl-arc/python-tooling --checkout latest

When cookiecutter runs, it will ask you a series of questions to configure your project. Type the answer or hit return without typing anything to use the default option (shown in parenthesis). At the end, it will print some more follow-up information in the terminal for things like creating a remote repository and making a website for your package.

It will have created a directory for your project. You can see the structure with the tree command. In our example we've called our project example-research-software-project:

ls -ltr | tail -n1 # Shows the last directory that was created
tree example-research-software-project

To work on your project, initialise a git repository and install your new package editable mode. You probably want to do this in a virtual environment. The comments show how to do this in uv with uv venv:

cd example-research-software-project
git init
# uv venv
# source .venv/bin/activate
uv pip install -e ".[dev]"

Contributors

Patrick J. Roddy
Patrick J. Roddy

πŸ€” πŸ› πŸ’» πŸ–‹ πŸ“– πŸ“‹ πŸ“† πŸ’¬ πŸ‘€ πŸ“’ ⚠️
Sam Cunliffe
Sam Cunliffe

πŸ€” πŸ› πŸ’» πŸ–‹ πŸ“– πŸ“‹ πŸ“† πŸ’¬ πŸ‘€ πŸ“’ ⚠️
David Stansby
David Stansby

πŸ€” πŸ› πŸ’» πŸ–‹ πŸ“– πŸ“‹ πŸ“† πŸ‘€ ⚠️
Matt Graham
Matt Graham

πŸ› πŸ’» πŸ–‹ πŸ“– 🎨 πŸ“‹ πŸ‘€ πŸ“’ ⚠️
sfmig
sfmig

πŸ› πŸ’» πŸ–‹ πŸ‘€ ⚠️
Paul Smith
Paul Smith

πŸ› πŸ’» πŸ–‹ πŸ“– πŸ’¬ πŸ‘€ ⚠️
Renovate Bot
Renovate Bot

🚧
ruaridhg
ruaridhg

πŸ› πŸ’» πŸ–‹ πŸ‘€
Miguel Xochicale, PhD
Miguel Xochicale, PhD

πŸ› πŸ’» πŸ–‹ 🎨 πŸ“– πŸ‘€
yidilozdemir
yidilozdemir

πŸ“– ⚠️
Mosè Giordano
Mosè Giordano

πŸ› πŸ“– πŸ‘€
Tom Young
Tom Young

πŸ› πŸ–‹ πŸ‘€
Alessandro Felder
Alessandro Felder

πŸ› πŸ–‹
Adam Tyson
Adam Tyson

πŸ–‹
Will Graham
Will Graham

πŸ–‹ πŸ‘€
nikk-nikaznan
nikk-nikaznan

πŸ–‹
Katie Buntic
Katie Buntic

πŸ–‹
Robert Vickerstaff
Robert Vickerstaff

πŸ“–
David PΓ©rez-SuΓ‘rez
David PΓ©rez-SuΓ‘rez

πŸ’» πŸ’¬
llapira
llapira

πŸ›
pre-commit.ci
pre-commit.ci

🚧