python-tooling

Python package template for new research software projects

https://github.com/ucl-arc/python-tooling

Science Score: 62.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    3 of 17 committers (17.6%) from academic institutions
  • Institutional organization owner
    Organization ucl-arc has institutional domain (www.ucl.ac.uk)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.8%) to scientific vocabulary

Keywords

cookiecutter hacktoberfest python python-template python-templates python3 research-software research-software-engineering ucl

Keywords from Contributors

batteries napari particles brain jax histogram automatic-differentiation visualisation vtk physics
Last synced: 4 months ago · JSON representation ·

Repository

Python package template for new research software projects

Basic Info
Statistics
  • Stars: 54
  • Watchers: 18
  • Forks: 6
  • Open Issues: 26
  • Releases: 0
Topics
cookiecutter hacktoberfest python python-template python-templates python3 research-software research-software-engineering ucl
Created almost 3 years ago · Last pushed 4 months ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

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-Surgery), we recommend using their template instead of this one.

Using our Python package template

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

If you have uv installed, you can use our template with the following command:

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

If you don't want to use uv you can install cookiecutter using pip, and run the above command without the leading uvx.

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:

sh 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:

```sh cd example-research-software-project git init

uv venv

source .venv/bin/activate

uv sync ```

Note that uv>=0.6.7 is required to use the --group option.

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

🐛

Owner

  • Name: UCL Advanced Research Computing Centre
  • Login: UCL-ARC
  • Kind: organization
  • Location: United Kingdom

Citation (CITATION.cff)

cff-version: "1.2.0"
message:
  "If you use this template or the associated website, please cite it using
  these metadata."
type: software
title: "python-tooling: Python package template for new research software projects"
repository-code: "https://github.com/UCL-ARC/python-tooling"
url: "http://github-pages.arc.ucl.ac.uk/python-tooling/"
keywords:
  - python
  - cookiecutter
  - "python template"
  - "research software"
  - "research software engineering"
license: MIT
authors:
  - affiliation: "University College London"
    family-names: Roddy
    given-names: "Patrick J."
    orcid: "https://orcid.org/0000-0002-6271-1700"
  - affiliation: "University College London"
    family-names: Cunliffe
    given-names: Sam
    orcid: "https://orcid.org/0000-0003-0167-8641"
  - affiliation: "University College London"
    family-names: Stansby
    given-names: David
    orcid: "https://orcid.org/0000-0002-1365-1908"
  - affiliation: "University College London"
    family-names: Graham
    given-names: "Matthew M."
    orcid: "https://orcid.org/0000-0001-9104-7960"
  - affiliation: "University College London"
    family-names: "Miñano"
    given-names: "Sofía"
    orcid: "https://orcid.org/0000-0001-6363-1545"
  - affiliation: "University College London"
    family-names: Smith
    given-names: Paul
    orcid: "https://orcid.org/0000-0002-3676-5318"
  - affiliation: "University College London"
    family-names: Xochicale
    given-names: Miguel
    orcid: "https://orcid.org/0000-0002-8225-7517"
  - affiliation: "University College London"
    family-names: Gollifer
    given-names: Ruaridh
    orcid: "https://orcid.org/0000-0001-9319-936X"
  - affiliation: "University College London"
    family-names: Ozdemir
    given-names: Idil
  - affiliation: "University College London"
    family-names: Giordano
    given-names: "Mosè"
    orcid: "https://orcid.org/0000-0002-7218-2873"
  - affiliation: "University College London"
    family-names: Young
    given-names: Tom
    orcid: "https://orcid.org/0000-0002-8432-7769"
  - affiliation: "University College London"
    family-names: Felder
    given-names: Alessandro
    orcid: "https://orcid.org/0000-0003-3510-9906"
  - affiliation: "University College London"
    family-names: Graham
    given-names: William
    orcid: "https://orcid.org/0000-0003-0058-263X"
  - affiliation: "University College London"
    family-names: Tyson
    given-names: "Adam Luke"
    orcid: "https://orcid.org/0000-0003-3225-1130"
  - affiliation: "University College London"
    family-names: "Nik Aznan"
    given-names: "Nik Khadijah"
    orcid: "https://orcid.org/0000-0002-9469-6306"
  - affiliation: "University College London"
    family-names: Vickerstaff
    given-names: Robert
    orcid: "https://orcid.org/0000-0002-6091-3907"
  - affiliation: "University College London"
    family-names: "Pérez-Suárez"
    given-names: David
    orcid: "https://orcid.org/0000-0003-0784-6909"
  - affiliation: "University College London"
    family-names: Buntic
    given-names: Katie

GitHub Events

Total
  • Create event: 98
  • Release event: 2
  • Issues event: 65
  • Watch event: 9
  • Delete event: 88
  • Issue comment event: 221
  • Push event: 394
  • Pull request review comment event: 177
  • Pull request review event: 250
  • Pull request event: 136
  • Fork event: 4
Last Year
  • Create event: 98
  • Release event: 2
  • Issues event: 65
  • Watch event: 9
  • Delete event: 88
  • Issue comment event: 221
  • Push event: 394
  • Pull request review comment event: 177
  • Pull request review event: 250
  • Pull request event: 136
  • Fork event: 4

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 478
  • Total Committers: 17
  • Avg Commits per committer: 28.118
  • Development Distribution Score (DDS): 0.556
Past Year
  • Commits: 125
  • Committers: 9
  • Avg Commits per committer: 13.889
  • Development Distribution Score (DDS): 0.464
Top Committers
Name Email Commits
renovate[bot] 2****] 212
Patrick Roddy p****y@g****m 93
David Stansby d****y@g****m 52
Sam Cunliffe s****e 52
allcontributors[bot] 4****] 26
Matt Graham m****m@g****m 21
sfmig 3****g 4
Andrii Tsapko a****o@g****m 3
Paul Smith p****h@u****k 3
Miguel Xochicale, PhD m****e@u****k 2
Saransh Chopra s****1@g****m 2
pre-commit-ci[bot] 6****] 2
ruaridhg 3****g 2
Katie Buntic 9****c 1
Mosè Giordano g****o 1
Robert Vickerstaff r****f@u****k 1
yidilozdemir 3****r 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 53
  • Total pull requests: 129
  • Average time to close issues: 4 months
  • Average time to close pull requests: 4 days
  • Total issue authors: 9
  • Total pull request authors: 9
  • Average comments per issue: 3.04
  • Average comments per pull request: 1.33
  • Merged pull requests: 101
  • Bot issues: 0
  • Bot pull requests: 56
Past Year
  • Issues: 35
  • Pull requests: 125
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 2 days
  • Issue authors: 8
  • Pull request authors: 9
  • Average comments per issue: 2.14
  • Average comments per pull request: 1.33
  • Merged pull requests: 97
  • Bot issues: 0
  • Bot pull requests: 55
Top Authors
Issue Authors
  • paddyroddy (31)
  • samcunliffe (26)
  • dstansby (16)
  • matt-graham (12)
  • sfmig (4)
  • Saransh-cpp (2)
  • dpshelio (1)
  • p-j-smith (1)
  • K-Meech (1)
  • giordano (1)
  • MitchellAcoustics (1)
  • renovate[bot] (1)
Pull Request Authors
  • renovate[bot] (80)
  • paddyroddy (58)
  • samcunliffe (58)
  • dstansby (41)
  • allcontributors[bot] (35)
  • matt-graham (20)
  • cuteshaun (6)
  • Saransh-cpp (5)
  • sfmig (4)
  • pre-commit-ci[bot] (2)
  • ruaridhg (2)
  • p-j-smith (1)
  • mxochicale (1)
Top Labels
Issue Labels
enhancement (31) documentation (28) task (17) bug (15) website (6) question (4) renovate (3) good first issue (2) accessibility (2) wontfix (1) p2-high (1) p3-medium (1)
Pull Request Labels
renovate (78) enhancement (54) documentation (39) bug (38) website (21) needs-2-reviewers (13) accessibility (9) task (9) p1-critical (3) question (3) p4-low (3) investigate (1)