Skip to content

Commit

Permalink
Initialise repository with cookiecutter
Browse files Browse the repository at this point in the history
  • Loading branch information
lochhh committed Nov 29, 2024
1 parent fa9153d commit e27ed2b
Show file tree
Hide file tree
Showing 11 changed files with 323 additions and 1 deletion.
61 changes: 61 additions & 0 deletions .github/workflows/test_and_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: tests

on:
push:
branches:
- '*'
tags:
- '*'
pull_request:

jobs:
linting:
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/lint@v2

manifest:
name: Check Manifest
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/check_manifest@v2

test:
needs: [linting, manifest]
name: ${{ matrix.os }} py${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
# Run all supported Python versions on linux
python-version: ["3.9", "3.10", "3.11"]
os: [ubuntu-latest]
# Include one windows and macos run
include:
- os: macos-latest
python-version: "3.10"
- os: windows-latest
python-version: "3.10"

steps:
# Run tests
- uses: neuroinformatics-unit/actions/test@v2
with:
python-version: ${{ matrix.python-version }}

build_sdist_wheels:
name: Build source distribution
needs: [test]
if: github.event_name == 'push' && github.ref_type == 'tag'
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/build_sdist_wheels@v2


upload_all:
name: Publish build distributions
needs: [build_sdist_wheels]
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/upload_pypi@v2
with:
secret-pypi-key: ${{ secrets.TWINE_API_KEY }}
83 changes: 83 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py

# Flask instance folder
instance/

# Sphinx documentation
docs/_build/

# MkDocs documentation
/site/

# PyBuilder
target/

# Pycharm and VSCode
.idea/
venv/
.vscode/

# IPython Notebook
.ipynb_checkpoints

# pyenv
.python-version

# OS
.DS_Store

# written by setuptools_scm
**/_version.py
45 changes: 45 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@


# Configuring https://pre-commit.ci/
ci:
autoupdate_schedule: monthly

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-docstring-first
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-toml
- id: end-of-file-fixer
- id: mixed-line-ending
args: [--fix=lf]
- id: requirements-txt-fixer
- id: trailing-whitespace
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.7.2
hooks:
- id: ruff
args: [ --config=pyproject.toml ]
- id: ruff-format
args: [ --config=pyproject.toml ]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.13.0
hooks:
- id: mypy
additional_dependencies:
- types-setuptools
- repo: https://github.com/mgedmin/check-manifest
rev: "0.50"
hooks:
- id: check-manifest
args: [--no-build-isolation]
additional_dependencies: [setuptools-scm]
- repo: https://github.com/codespell-project/codespell
# Configuration for codespell is in pyproject.toml
rev: v2.3.0
hooks:
- id: codespell
additional_dependencies:
- tomli
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause License

Copyright (c) 2024, SainsburyWellcomeCentre
Copyright (c) 2023-2024, University College London

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Expand Down
8 changes: 8 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
include LICENSE
include README.md
exclude .pre-commit-config.yaml

recursive-exclude * __pycache__
recursive-exclude * *.py[co]
recursive-exclude docs *
recursive-exclude tests *
7 changes: 7 additions & 0 deletions aeon_sleap_processing/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from importlib.metadata import PackageNotFoundError, version

try:
__version__ = version("aeon_sleap_processing")
except PackageNotFoundError:
# package is not installed
pass
116 changes: 116 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
[project]
name = "aeon_sleap_processing"
authors = [
{ name = "Jai Bhagat", email = "[email protected]" },
{ name = "Goncalo Lopes", email = "[email protected]" },
{ name = "Chang Huan Lo", email = "[email protected]" },
{ name = "Anaya Pouget", email = "[email protected]"},
]
description = "Project Aeon computational data pipeline for post-process refinement of SLEAP data using zoomed in cameras."
readme = "README.md"
requires-python = ">=3.9.0"
dynamic = ["version"]

dependencies = []

license = {text = "BSD-3-Clause"}

classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Operating System :: OS Independent",
"License :: OSI Approved :: BSD License",
]



[project.optional-dependencies]
dev = [
"pytest",
"pytest-cov",
"coverage",
"tox",
"mypy",
"pre-commit",
"ruff",
"setuptools_scm",
]

[build-system]
requires = [
"setuptools>=45",
"wheel",
"setuptools_scm[toml]>=6.2",
]
build-backend = "setuptools.build_meta"

[tool.setuptools]
include-package-data = true

[tool.setuptools.packages.find]
include = ["aeon_sleap_processing*"]
exclude = ["tests*"]

[tool.pytest.ini_options]
addopts = "--cov=aeon_sleap_processing"
filterwarnings = [
"error",
]

[tool.setuptools_scm]

[tool.check-manifest]
ignore = [
".yaml",
"tox.ini",
"tests/",
"tests/test_unit/",
"tests/test_integration/",
]

[tool.ruff]
line-length = 79
exclude = ["__init__.py", "build", ".eggs"]
lint.select = [
"E", # pycodestyle errors
"F", # Pyflakes
"I", # isort
# You can see what all the rules do here: https://docs.astral.sh/ruff/rules/
# Some additional ruff rules that might be useful (uncomment to enable)
#"UP", # pyupgrade
#"B", # flake8 bugbear
#"SIM", # flake8 simplify
#"C90", # McCabe complexity
]
fix = true

[tool.ruff.format]
docstring-code-format = true # Also format code in docstrings (e.g. examples)

[tool.tox]
legacy_tox_ini = """
[tox]
envlist = py{39,310,311}
isolated_build = True
[gh-actions]
python =
3.9: py39
3.10: py310
3.11: py311
[testenv]
extras =
dev
commands =
pytest -v --color=yes --cov=aeon_sleap_processing --cov-report=xml
"""


[tool.codespell]
skip = '.git'
check-hidden = true
Empty file added tests/__init__.py
Empty file.
Empty file.
Empty file added tests/test_unit/__init__.py
Empty file.
2 changes: 2 additions & 0 deletions tests/test_unit/test_placeholder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
def test_placeholder():
assert True

0 comments on commit e27ed2b

Please sign in to comment.