Initial commit
This commit is contained in:
10
.gitattributes
vendored
Normal file
10
.gitattributes
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# By default, normalize line endings
|
||||
* text=auto
|
||||
|
||||
# Force Windows batch files to use CRLF
|
||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
||||
*.{ics,[iI][cC][sS]} text eol=crlf
|
||||
|
||||
# Force Unix bash files to use LF
|
||||
*.sh text eol=lf
|
||||
38
.github/workflows/tests.yml
vendored
Normal file
38
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
name: Run tests
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
|
||||
test:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.12"]
|
||||
env:
|
||||
PIP_ROOT_USER_ACTION: ignore
|
||||
UV_LINK_MODE: copy
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install uv
|
||||
uv sync --locked
|
||||
|
||||
- name: Check format with ruff
|
||||
run: |
|
||||
uv run ruff format --check
|
||||
|
||||
- name: Check code linting with ruff
|
||||
run: |
|
||||
uv run ruff check
|
||||
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
# Python cache
|
||||
*.pyc
|
||||
.ipynb_checkpoints/
|
||||
*.egg-info/
|
||||
|
||||
# IDE settings
|
||||
.vscode/
|
||||
.idea/
|
||||
|
||||
# OSX-specific
|
||||
.DS_Store
|
||||
16
.gitlab-ci.yml
Normal file
16
.gitlab-ci.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
stages:
|
||||
- test
|
||||
|
||||
run-tests:
|
||||
stage: test
|
||||
image: python:3.12
|
||||
variables:
|
||||
PIP_ROOT_USER_ACTION: ignore
|
||||
UV_LINK_MODE: copy
|
||||
before_script:
|
||||
- python -m pip install --upgrade pip
|
||||
- pip install uv
|
||||
- uv sync --locked
|
||||
script:
|
||||
- uv run ruff format --check
|
||||
- uv run ruff check
|
||||
28
.pre-commit-config.yaml
Normal file
28
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: check-added-large-files
|
||||
args: ["--maxkb=2000"]
|
||||
- id: check-case-conflict
|
||||
- id: check-illegal-windows-names
|
||||
- id: check-json
|
||||
- id: check-merge-conflict
|
||||
- id: check-symlinks
|
||||
- id: check-toml
|
||||
- id: check-xml
|
||||
- id: check-yaml
|
||||
- id: destroyed-symlinks
|
||||
- id: end-of-file-fixer
|
||||
- id: trailing-whitespace
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.15.0
|
||||
hooks:
|
||||
- id: ruff-check
|
||||
args: [ --fix ]
|
||||
- id: ruff-format
|
||||
- repo: https://github.com/astral-sh/uv-pre-commit
|
||||
rev: 0.10.2
|
||||
hooks:
|
||||
- id: uv-lock
|
||||
- id: uv-export
|
||||
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
||||
3.12
|
||||
37
README.md
Normal file
37
README.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# river-annotation-tool
|
||||
|
||||
This project is made using [this template](https://github.com/SwissDataScienceCenter/innovation-cookiecutter).
|
||||
Next steps include:
|
||||
|
||||
- [x] Create project from the Cookiecutter template.
|
||||
- [ ] Create a virtual environment to work in an isolated Python installation.
|
||||
- [ ] Install [pre-commit](https://pre-commit.com/) hooks.
|
||||
- [ ] Keep either [`.gitlab-ci.yml`](https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html) or [`.github/`](https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python), according to your Git hosting platform.
|
||||
- [ ] Update `authors` and `description`, in `pyproject.toml`.
|
||||
- [ ] Add development and installation dependencies in `pyproject.toml`, with permissive version constraints.
|
||||
- [ ] Add a `LICENSE` file, if applicable. This is *highly recommended* if the project is open source.
|
||||
- [ ] Add a [`CITATION.cff`](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files), to ease citation of your work.
|
||||
- [ ] Replace this `README.md` with a proper one. Among others, it must explain the overall context, the installation instructions, a quick start guide, and a repository structure description.
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
In order to use [pre-commit](https://pre-commit.com/) hooks, they need to be registered:
|
||||
|
||||
```sh
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
It is a good practice to manually invoke hooks after installation, just in case:
|
||||
|
||||
```sh
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
During development, install pinned dependencies in your virtual environment, including the module itself in [editable mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html), using:
|
||||
|
||||
```sh
|
||||
uv sync
|
||||
```
|
||||
|
||||
New dependencies can be added using [`uv add`](https://docs.astral.sh/uv/concepts/projects/dependencies/) (or `uv add --dev` for development dependencies), or by manually configuring `pyproject.toml` and using [`uv lock && uv sync`](https://docs.astral.sh/uv/concepts/projects/sync/).
|
||||
0
data/.gitkeep
Normal file
0
data/.gitkeep
Normal file
0
notebooks/.gitkeep
Normal file
0
notebooks/.gitkeep
Normal file
41
pyproject.toml
Normal file
41
pyproject.toml
Normal file
@@ -0,0 +1,41 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0.0"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "river_annotation_tool"
|
||||
authors = [
|
||||
# TODO configure authors
|
||||
# { name = "Jane Smith", email = "jane.smith@example.com" },
|
||||
# { name = "John Doe", email = "john.doe@example.com" },
|
||||
]
|
||||
description = ""
|
||||
readme = "README.md"
|
||||
requires-python = "~=3.12.0"
|
||||
dependencies = [
|
||||
# TODO configure install dependencies
|
||||
]
|
||||
dynamic = ["version"]
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"notebook~=7.5",
|
||||
"pre-commit~=4.5",
|
||||
"ruff==0.15.0",
|
||||
]
|
||||
|
||||
[tool.setuptools.dynamic]
|
||||
version = {attr = "river_annotation_tool.__version__"}
|
||||
|
||||
[tool.ruff]
|
||||
target-version = "py312"
|
||||
line-length = 88
|
||||
|
||||
[tool.ruff.lint]
|
||||
extend-select = ["B", "I", "RUF1", "UP", "W"]
|
||||
|
||||
[tool.ruff.lint.isort]
|
||||
lines-after-imports = 2
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
"__init__.py" = ["F401"]
|
||||
1
requirements.txt
Normal file
1
requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
# This file will be autogenerated from pyproject.toml
|
||||
1
src/river_annotation_tool/__init__.py
Normal file
1
src/river_annotation_tool/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
__version__ = "0.1.0"
|
||||
Reference in New Issue
Block a user