Skip to content

Repository files navigation

UCL ARC Python tooling logo

UCL ARC Python Recommendations

This repository collects our recommendations for a research software project in Python. We have a website if you need some advice for what tools to use, and a template if you're starting a project from scratch.

🍪 Our template uses cookiecutter to set up a new package with our preferred tools ready to go.

Note

If you're making a package in a research community that already has a template, use theirs instead!

How to use our template

Here are some quick start steps. We also have a more detailed tutorial and some talks about this that have been presented in workshops for researchers at UCL.

If you have uv installed, run:

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

If you don't want to use uv you can install cookiecutter, then run without uvx:

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

cookiecutter will ask you questions to set up your project. Type your answer, or hit return without typing anything to use the defaults.

When finished, it prints some information to the terminal. These are tips for next steps like creating a repository and making a website for your package.

It will have created a directory for your project:

ls -lt --reverse | tail --lines=1  # Show the last directory that was created

You can see the structure with the tree command. In our example we've called our project example-research-software-project:

tree example-research-software-project

To start working on your project:

  1. change directory to your project directory,
  2. initialise a git repository,
  3. 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 sync

Need help?

You can ask questions in discussions or in the #helpme channel on UCL's Research Programming Hub Slack.

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

🚧
Saransh Chopra
Saransh Chopra

📖 🖋 🚧 👀 📢 📋
Andrew Mitchell
Andrew Mitchell

🐛
Kimberly Meechan
Kimberly Meechan

🐛 ️️️️♿️ 👀 🖋 📖
James Prime
James Prime

️️️️♿️ 🤔
Andrii Tsapko
Andrii Tsapko

️️️️♿️ 💻
James Briant
James Briant

🐛
Stella Prins
Stella Prins

🐛 📖
Connor Aird
Connor Aird

👀

Releases

Used by

Contributors

Languages