From 6a0e7901b7f6ca948a82ee12a392679f9bddce48 Mon Sep 17 00:00:00 2001 From: Alice Butcher Date: Tue, 29 Oct 2024 17:46:27 +0000 Subject: [PATCH 01/13] ci: update workflow files standardise format, change name of tests file --- .github/workflows/bump.yml | 8 ++++---- .github/workflows/pypi-publish.yml | 9 ++++----- .github/workflows/sync.yml | 6 +++--- .github/workflows/{main.yml => tests.yml} | 8 ++++---- 4 files changed, 15 insertions(+), 16 deletions(-) rename .github/workflows/{main.yml => tests.yml} (77%) diff --git a/.github/workflows/bump.yml b/.github/workflows/bump.yml index 8b17261..1bb1860 100644 --- a/.github/workflows/bump.yml +++ b/.github/workflows/bump.yml @@ -7,12 +7,12 @@ on: jobs: bump-version: - if: "!startsWith(github.event.head_commit.message, 'bump:')" + name: Bump version and create changelog runs-on: ubuntu-latest - name: "Bump version and create changelog" + if: "!startsWith(github.event.head_commit.message, 'bump:')" steps: - - name: Check out - uses: actions/checkout@v3 + - name: Checkout source code + uses: actions/checkout@v4 with: token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} fetch-depth: 0 diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 6866a49..d3ac620 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -10,17 +10,16 @@ permissions: jobs: deploy: + name: Deploy package to PyPI runs-on: ubuntu-latest steps: - - name: Check out - uses: actions/checkout@v3 + - name: Checkout source code + uses: actions/checkout@v4 with: token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v3 - with: - python-version: '3.x' + uses: actions/setup-python@5 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index bc66f38..4fec115 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -7,11 +7,11 @@ on: jobs: sync-branches: + name: Sync dev and patch branches to latest commit runs-on: ubuntu-latest - name: "Sync dev and patch branches to latest commit" steps: - - name: Check out - uses: actions/checkout@v3 + - name: Checkout source code + uses: actions/checkout@v4 with: token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} fetch-depth: 0 diff --git a/.github/workflows/main.yml b/.github/workflows/tests.yml similarity index 77% rename from .github/workflows/main.yml rename to .github/workflows/tests.yml index 6f20597..3d1a6d1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/tests.yml @@ -3,18 +3,18 @@ name: Tests on: push: workflow_dispatch: + pull_request: + types: [opened, edited, reopened, synchronize] jobs: test: + name: Run tests runs-on: ubuntu-latest - steps: - name: Checkout source code - uses: actions/checkout@v3 - + uses: actions/checkout@v4 - name: Build images run: docker compose build - - name: Run tests env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} From 8d661b38ed4ed6b4ea1ddb3ada96f6a5341599b9 Mon Sep 17 00:00:00 2001 From: Alice Butcher Date: Tue, 29 Oct 2024 17:46:33 +0000 Subject: [PATCH 02/13] ci: add pull request validation workflow new workflow to check commit format and code style against pre-commit config --- .github/workflows/pull-requests.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/pull-requests.yml diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml new file mode 100644 index 0000000..b9aa2bd --- /dev/null +++ b/.github/workflows/pull-requests.yml @@ -0,0 +1,27 @@ +name: Validate pull requests + +on: + pull_request: + types: [opened, edited, reopened, synchronize] + +jobs: + validate-commits: + name: Validate commit messages + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + - name: Check commit message format + uses: webiny/action-conventional-commits@v1.3.0 + with: + allowed-commit-types: 'feat,fix,refactor,perf,docs,style,test,build,ci,chore,new,patch,revert,ui' + pre-commit: + name: Run pre-commit checks + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + - name: Run pre-commit + uses: pre-commit/action@v3.0.1 From 85c4f8146c17268a6e329f603698be99f8f02cc4 Mon Sep 17 00:00:00 2001 From: Alice Butcher Date: Tue, 29 Oct 2024 17:47:02 +0000 Subject: [PATCH 03/13] ci: update tool config update pre-commit repo versions and switch black to ruff --- .pre-commit-config.yaml | 19 +++++++++---------- pyproject.toml | 7 +++---- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2d3b017..728e347 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ exclude: /(vendor|dist)/ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v5.0.0 hooks: - id: check-merge-conflict - id: detect-private-key @@ -11,23 +11,22 @@ repos: exclude: ^tests/helpers/ - id: trailing-whitespace - repo: https://github.com/commitizen-tools/commitizen - rev: v2.37.0 + rev: v3.30.0 hooks: - id: commitizen additional_dependencies: ["cz-nhm"] - - repo: https://github.com/psf/black - rev: 22.10.0 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.7.1 hooks: - - id: black + - id: ruff + args: [ '--fix', '--select', 'I', '--select', 'F401' ] + - id: ruff-format - repo: https://github.com/PyCQA/docformatter - rev: v1.5.0 + rev: eb1df34 hooks: - id: docformatter - # these can't be pulled directly from the config atm, not sure why - args: ["-i", "--wrap-summaries=88", "--wrap-descriptions=88", - "--pre-summary-newline", "--make-summary-multi-line"] - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0-alpha.4 + rev: v4.0.0-alpha.8 hooks: - id: prettier types_or: [ javascript, vue, less, sass, scss, css ] diff --git a/pyproject.toml b/pyproject.toml index 62d9859..d9bce63 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ classifiers = [ "Programming Language :: Python :: 3.8" ] dependencies = [ - "ckantools>=0.3.0" + "ckantools>=0.4.1" ] [project.optional-dependencies] @@ -64,9 +64,8 @@ version_files = [ "CITATION.cff:^version" ] -[tool.black] -line-length = 88 -skip_string_normalization = true +[tool.ruff.format] +quote-style = "single" [tool.pylint] max-line-length = 88 From d33f7dcdbe7effe35a74d6fc106f9f819da67666 Mon Sep 17 00:00:00 2001 From: Alice Butcher Date: Tue, 29 Oct 2024 17:47:08 +0000 Subject: [PATCH 04/13] chore: update tool details in contributing guide --- CONTRIBUTING.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ca2651c..3108de1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,7 +41,7 @@ This extension and [several others](https://github.com/search?q=topic:ckan+org:N The current core team consists of: - Josh ([@jrdh](https://github.com/jrdh)) - Technical Lead -- Ginger ([@alycejenni](https://github.com/alycejenni)) - Software Engineer +- Ginger ([@alycejenni](https://github.com/alycejenni)) - Senior Software Engineer ## Questions @@ -81,7 +81,10 @@ The process is generally as follows: 3. Make your changes, and commit often; each commit should only contain one change. See below for specifics on how to word your commits. 4. Push your changes back to your fork. 5. [Open a pull request](https://docs.github.com/en/get-started/quickstart/contributing-to-projects#making-a-pull-request) in this repository, with the base branch set to **dev** and the compare branch set to your new branch. Provide a summary of your changes in the description. -6. If the automatic tests fail (these may take a while), please go back to your code and try to make them pass. You may have to update the tests themselves. You don't have to close the pull request while you're doing this; it'll update as you add further commits. +6. There are several automated checks that will run when you open the pull request. Try to make all of them pass. If you do not at least _attempt_ to make them pass, we will not merge your pull request. + 1. Tests. Update them so that they pass, if necessary. New tests are always welcome in any pull request, but if you have added a new feature that has decreased the coverage, new tests are required. + 2. Commit format validation. If you have not followed the conventional commits format for one or more of your commits, this will fail. + 3. Code format validation. If you have not formatted your code correctly (using Ruff, docformatter, and/or Prettier), this will fail. 7. Wait for feedback from one of the core maintainers. If it's been a week or so and we haven't responded, we may not have seen it. You can find other places to contact us in [SUPPORT.md](./.github/SUPPORT.md). ### Commits @@ -142,9 +145,9 @@ cz c ##### pre-commit -pre-commit is a tool that runs a variety of checks and modifications before a commit is made. You can check the [.pre-commit-config.yaml](./.pre-commit-config.yaml) file to see eaxtly what it's currently configured to do for this repository, but of particular note: +pre-commit is a tool that runs a variety of checks and modifications before a commit is made. You can check the [.pre-commit-config.yaml](./.pre-commit-config.yaml) file to see exactly what it's currently configured to do for this repository, but of particular note: -- reformats Python code with [Black](https://github.com/psf/black) +- reformats Python code with [Ruff](https://docs.astral.sh/ruff) - reformats JavaScript and stylesheets with [Prettier](https://prettier.io) - reformats docstrings with [docformatter](https://github.com/PyCQA/docformatter) - checks your commit message is correcly formatted @@ -161,15 +164,15 @@ pre-commit run Don't forget to stage any modifications that it makes! Once it runs without failing, then you can make your commit. -Something to remember is that empty docstrings will cause conflicts between Black and docformatter and the checks will fail repeatedly - so don't leave your docstrings empty! +Something to remember is that empty docstrings will cause conflicts between Ruff and docformatter and the checks will fail repeatedly - so don't leave your docstrings empty! ### Code changes and style guide -We generally use external style guides and tools to help us maintain standardised code. Black and Prettier will be run with pre-commit. +We generally use external style guides and tools to help us maintain standardised code. Ruff and Prettier will be run with pre-commit. #### Python -We follow the [Black style](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html), with the notable exception that we use single quotes. +We use [Ruff](https://docs.astral.sh/ruff) to format our code, using defaults for everything except quote style (we use single quotes). We also _mostly_ use [CKAN's style](http://docs.ckan.org/en/latest/contributing/python.html), with the following exceptions: - prefer `f''` strings over `.format()` @@ -178,7 +181,7 @@ We also _mostly_ use [CKAN's style](http://docs.ckan.org/en/latest/contributing/ #### JavaScript and stylesheets (CSS, LESS, etc) -We use [Prettier](https://prettier.io) to format these files. +We use [Prettier](https://prettier.io) to format these files. As with Ruff, we use defaults for everything except quote style (we use single quotes). #### Accessibility From ad1d36389d087539f0bea89dbb064e5f2196c6b3 Mon Sep 17 00:00:00 2001 From: Alice Butcher Date: Tue, 29 Oct 2024 17:47:16 +0000 Subject: [PATCH 05/13] chore: add pull request template --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..7f66e80 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,4 @@ +- [ ] I have read the [section on commits and pull requests](https://github.com/NaturalHistoryMuseum/ckanext-video/blob/main/CONTRIBUTING.md#commits-and-pull-requests) in `CONTRIBUTING.md` + + +Describe your changes, tagging relevant issues where possible. From ecc33f2b126c17562ebd9721fd74d0a2c412d8da Mon Sep 17 00:00:00 2001 From: Alice Butcher Date: Tue, 29 Oct 2024 17:47:27 +0000 Subject: [PATCH 06/13] build: remove version from docker compose file version specifier is deprecated --- docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index ca63da1..a2a6987 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3" - services: ckan: build: From 1f636977a27487f93209210dd089751128b197f4 Mon Sep 17 00:00:00 2001 From: Alice Butcher Date: Wed, 30 Oct 2024 12:46:59 +0000 Subject: [PATCH 07/13] ci: only apply auto-fixes in pre-commit F401 returns linting errors as well as auto-fixes, so this disables the errors and just applies the fixes --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 728e347..cd0f8b7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: rev: v0.7.1 hooks: - id: ruff - args: [ '--fix', '--select', 'I', '--select', 'F401' ] + args: [ '--fix', '--select', 'I', '--select', 'F401', '--fix-only' ] - id: ruff-format - repo: https://github.com/PyCQA/docformatter rev: eb1df34 From 045d6bedc02a2977d49b0473e6cff46e94869980 Mon Sep 17 00:00:00 2001 From: Ginger Burns Date: Wed, 30 Oct 2024 14:51:54 +0000 Subject: [PATCH 08/13] ci: add docformatter args and dependency docformatter currently can't read from pyproject.toml without tomli --- .pre-commit-config.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cd0f8b7..04e9d79 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,14 +7,14 @@ repos: - id: detect-private-key - id: end-of-file-fixer - id: name-tests-test - args: ["--pytest-test-first"] + args: ['--pytest-test-first'] exclude: ^tests/helpers/ - id: trailing-whitespace - repo: https://github.com/commitizen-tools/commitizen rev: v3.30.0 hooks: - id: commitizen - additional_dependencies: ["cz-nhm"] + additional_dependencies: ['cz-nhm'] - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.7.1 hooks: @@ -25,6 +25,8 @@ repos: rev: eb1df34 hooks: - id: docformatter + args: [ '-i', '--config', './pyproject.toml' ] + additional_dependencies: ['tomli'] - repo: https://github.com/pre-commit/mirrors-prettier rev: v4.0.0-alpha.8 hooks: From 16ca8b1c8552121e32bf975b6218b14cd1dac66a Mon Sep 17 00:00:00 2001 From: Ginger Burns Date: Wed, 30 Oct 2024 17:32:40 +0000 Subject: [PATCH 09/13] style: automatic reformat auto reformat with ruff/docformatter/prettier after config changes --- ckanext/video/logic/validators.py | 1 + ckanext/video/plugin.py | 1 + ckanext/video/providers.py | 2 +- docs/_scripts/gen_api_pages.py | 1 - tests/test_validators.py | 3 ++- 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ckanext/video/logic/validators.py b/ckanext/video/logic/validators.py index 53d5704..c72b46d 100644 --- a/ckanext/video/logic/validators.py +++ b/ckanext/video/logic/validators.py @@ -7,6 +7,7 @@ import re from ckan.plugins import toolkit + from ckanext.video.providers import video_provider_patterns diff --git a/ckanext/video/plugin.py b/ckanext/video/plugin.py index 9176230..da1b402 100644 --- a/ckanext/video/plugin.py +++ b/ckanext/video/plugin.py @@ -8,6 +8,7 @@ import re from ckan.plugins import SingletonPlugin, implements, interfaces, toolkit + from ckanext.video.logic.validators import is_valid_video_url from ckanext.video.providers import video_provider_patterns diff --git a/ckanext/video/providers.py b/ckanext/video/providers.py index 8c09872..bb6f9dd 100644 --- a/ckanext/video/providers.py +++ b/ckanext/video/providers.py @@ -8,6 +8,6 @@ 'vimeo': '//player.vimeo.com/video/[0-9]+', # Embedded vimeo link 'youtube_link': 'http[s]?://www.youtube.com/watch\?v=([0-9a-z/-]+)', # Link to you tube video page - () group to de-mark video ID - 'youtube_embedded': 'http[s]?://www.youtube.com/embed/([0-9a-z/-]+)' + 'youtube_embedded': 'http[s]?://www.youtube.com/embed/([0-9a-z/-]+)', # Embedded youtube video - () group to de-mark video ID } diff --git a/docs/_scripts/gen_api_pages.py b/docs/_scripts/gen_api_pages.py index 0bad092..188f67a 100644 --- a/docs/_scripts/gen_api_pages.py +++ b/docs/_scripts/gen_api_pages.py @@ -1,6 +1,5 @@ # !/usr/bin/env python # encoding: utf-8 - """ Generate the code reference pages and navigation. diff --git a/tests/test_validators.py b/tests/test_validators.py index 7faf7a3..456e66f 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -1,8 +1,9 @@ import pytest from ckan.plugins import toolkit -from ckanext.video.logic.validators import is_valid_video_url from mock import MagicMock +from ckanext.video.logic.validators import is_valid_video_url + class TestValidVideoURL(object): def test_vimeo_valid(self): From 7896e0008a1b6c66a07764de50a62574ff71e9ea Mon Sep 17 00:00:00 2001 From: Ginger Burns Date: Mon, 4 Nov 2024 09:50:11 +0000 Subject: [PATCH 10/13] ci: add merge to valid commit types --- .github/workflows/pull-requests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index b9aa2bd..134e108 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -14,7 +14,7 @@ jobs: - name: Check commit message format uses: webiny/action-conventional-commits@v1.3.0 with: - allowed-commit-types: 'feat,fix,refactor,perf,docs,style,test,build,ci,chore,new,patch,revert,ui' + allowed-commit-types: 'feat,fix,refactor,perf,docs,style,test,build,ci,chore,new,patch,revert,ui,merge' pre-commit: name: Run pre-commit checks runs-on: ubuntu-latest From 83db4ee989d01057a8d7ff93409c70b6ea46b444 Mon Sep 17 00:00:00 2001 From: Ginger Burns Date: Mon, 4 Nov 2024 10:08:33 +0000 Subject: [PATCH 11/13] ci: fix python setup action version --- .github/workflows/pypi-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index d3ac620..bf30290 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -19,7 +19,7 @@ jobs: token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@5 + uses: actions/setup-python@v5 - name: Install dependencies run: | python -m pip install --upgrade pip From 0477121508454a8557d15a77d539dad99bb360e2 Mon Sep 17 00:00:00 2001 From: Ginger Burns Date: Mon, 4 Nov 2024 11:18:22 +0000 Subject: [PATCH 12/13] docs: fix tests badge tests workflow file was renamed --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0f275f..00098fc 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # ckanext-video -[![Tests](https://img.shields.io/github/actions/workflow/status/NaturalHistoryMuseum/ckanext-video/main.yml?style=flat-square)](https://github.com/NaturalHistoryMuseum/ckanext-video/actions/workflows/main.yml) +[![Tests](https://img.shields.io/github/actions/workflow/status/NaturalHistoryMuseum/ckanext-video/tests.yml?style=flat-square)](https://github.com/NaturalHistoryMuseum/ckanext-video/actions/workflows/tests.yml) [![Coveralls](https://img.shields.io/coveralls/github/NaturalHistoryMuseum/ckanext-video/main?style=flat-square)](https://coveralls.io/github/NaturalHistoryMuseum/ckanext-video) [![CKAN](https://img.shields.io/badge/ckan-2.9.7-orange.svg?style=flat-square)](https://github.com/ckan/ckan) [![Python](https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8-blue.svg?style=flat-square)](https://www.python.org/) From ed12b8071883ad3f2c1b04849c346219e73cdcf5 Mon Sep 17 00:00:00 2001 From: Ginger Burns Date: Mon, 4 Nov 2024 11:25:05 +0000 Subject: [PATCH 13/13] docs: use variable logo based on colour scheme --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 00098fc..d24fc89 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ - + + + + The Natural History Museum logo. + # ckanext-video