bagel 0.9.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bagel-0.9.2/.autorc +123 -0
- bagel-0.9.2/.dockerignore +42 -0
- bagel-0.9.2/.editorconfig +2 -0
- bagel-0.9.2/.flake8 +11 -0
- bagel-0.9.2/.github/dependabot.yml +75 -0
- bagel-0.9.2/.github/pull_request_template.md +42 -0
- bagel-0.9.2/.github/workflows/add_iss2project.yml +23 -0
- bagel-0.9.2/.github/workflows/build_docker_nightly.yml +38 -0
- bagel-0.9.2/.github/workflows/build_docker_on_release.yml +61 -0
- bagel-0.9.2/.github/workflows/cff_validation.yml +23 -0
- bagel-0.9.2/.github/workflows/codespell.yml +19 -0
- bagel-0.9.2/.github/workflows/handle_external_pr.yml +30 -0
- bagel-0.9.2/.github/workflows/release.yaml +45 -0
- bagel-0.9.2/.github/workflows/stale.yml +24 -0
- bagel-0.9.2/.github/workflows/test.yml +37 -0
- bagel-0.9.2/.gitignore +159 -0
- bagel-0.9.2/.gitmodules +12 -0
- bagel-0.9.2/.pre-commit-config.yaml +45 -0
- bagel-0.9.2/CHANGELOG.md +541 -0
- bagel-0.9.2/CITATION.cff +52 -0
- bagel-0.9.2/Dockerfile +9 -0
- bagel-0.9.2/LICENSE +21 -0
- bagel-0.9.2/PKG-INFO +133 -0
- bagel-0.9.2/README.md +82 -0
- bagel-0.9.2/bagel/__init__.py +0 -0
- bagel-0.9.2/bagel/_version.py +34 -0
- bagel-0.9.2/bagel/bids_table_model.py +61 -0
- bagel-0.9.2/bagel/cli.py +750 -0
- bagel-0.9.2/bagel/dictionary_models.py +176 -0
- bagel-0.9.2/bagel/logger.py +72 -0
- bagel-0.9.2/bagel/mappings.py +67 -0
- bagel-0.9.2/bagel/models.py +97 -0
- bagel-0.9.2/bagel/utilities/__init__.py +0 -0
- bagel-0.9.2/bagel/utilities/bids_utils.py +101 -0
- bagel-0.9.2/bagel/utilities/derivative_utils.py +188 -0
- bagel-0.9.2/bagel/utilities/file_utils.py +122 -0
- bagel-0.9.2/bagel/utilities/model_utils.py +119 -0
- bagel-0.9.2/bagel/utilities/pheno_utils.py +678 -0
- bagel-0.9.2/helper_scripts/generate_dictionary_jsonschema.py +11 -0
- bagel-0.9.2/helper_scripts/generate_graphdata_jsonschema.py +16 -0
- bagel-0.9.2/helper_scripts/generate_nb_vocab_file.py +52 -0
- bagel-0.9.2/helper_scripts/generate_neurobagel_example_jsonlds.sh +53 -0
- bagel-0.9.2/pyproject.toml +74 -0
bagel-0.9.2/.autorc
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"onlyPublishWithReleaseLabel": true,
|
|
3
|
+
"noDefaultLabels": true,
|
|
4
|
+
"baseBranch": "main",
|
|
5
|
+
"author": "Neurobagel Bot <bot@neurobagel.org>",
|
|
6
|
+
"noVersionPrefix": false,
|
|
7
|
+
"plugins": [
|
|
8
|
+
"git-tag",
|
|
9
|
+
"released",
|
|
10
|
+
"first-time-contributor",
|
|
11
|
+
[
|
|
12
|
+
"omit-commits",
|
|
13
|
+
{
|
|
14
|
+
"username": ["dependabot[bot]", "pre-commit-ci[bot]"],
|
|
15
|
+
"subject": "[pre-commit.ci]",
|
|
16
|
+
"labels": ["_bot", "skip-release"]
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
"exec",
|
|
21
|
+
{
|
|
22
|
+
"afterRelease": "python -m build && twine upload dist/*"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
],
|
|
26
|
+
"labels": [
|
|
27
|
+
{
|
|
28
|
+
"name": "pr-major-breaking",
|
|
29
|
+
"changelogTitle": "💥 Breaking Changes",
|
|
30
|
+
"description": "Significant behaviour change that breaks compatibility, will increment major version (+1.0.0)",
|
|
31
|
+
"releaseType": "major",
|
|
32
|
+
"overwrite": true,
|
|
33
|
+
"color": "#C1EF40"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "pr-minor-breaking",
|
|
37
|
+
"changelogTitle": "💥 Breaking Changes",
|
|
38
|
+
"description": "Feature or enhancement that breaks compatibility, will increment minor version (0.+1.0)",
|
|
39
|
+
"releaseType": "minor",
|
|
40
|
+
"overwrite": true,
|
|
41
|
+
"color": "#C1EF40"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "pr-minor",
|
|
45
|
+
"changelogTitle": "🚀 Enhancements",
|
|
46
|
+
"description": "Non-breaking feature or enhancement, will increment minor version (0.+1.0)",
|
|
47
|
+
"releaseType": "minor",
|
|
48
|
+
"overwrite": true,
|
|
49
|
+
"color": "#C1EF40"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "pr-patch",
|
|
53
|
+
"changelogTitle": "🚀 Enhancements",
|
|
54
|
+
"description": "Incremental feature improvement, will increment patch version when merged (0.0.+1)",
|
|
55
|
+
"releaseType": "patch",
|
|
56
|
+
"overwrite": true,
|
|
57
|
+
"default": true,
|
|
58
|
+
"color": "#C1EF40"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "pr-bug-fix",
|
|
62
|
+
"changelogTitle": "🐛 Bug Fixes",
|
|
63
|
+
"description": "Bug fix, will increment patch version when merged (0.0.+1)",
|
|
64
|
+
"releaseType": "patch",
|
|
65
|
+
"overwrite": true,
|
|
66
|
+
"color": "#C1EF40"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "pr-internal",
|
|
70
|
+
"changelogTitle": "🏠 Internal",
|
|
71
|
+
"description": "Non-user-facing code improvement, will increment patch version when merged (0.0.+1)",
|
|
72
|
+
"releaseType": "patch",
|
|
73
|
+
"overwrite": true,
|
|
74
|
+
"color": "#C1EF40"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "pr-performance",
|
|
78
|
+
"changelogTitle": "🏎 Performance Improvements",
|
|
79
|
+
"description": "Improve performance of an existing feature, will increment patch version when merged (0.0.+1)",
|
|
80
|
+
"releaseType": "patch",
|
|
81
|
+
"overwrite": true,
|
|
82
|
+
"color": "#C1EF40"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "pr-documentation",
|
|
86
|
+
"changelogTitle": "📝 Documentation",
|
|
87
|
+
"description": "Change that only affects user documentation",
|
|
88
|
+
"releaseType": "none",
|
|
89
|
+
"overwrite": true,
|
|
90
|
+
"color": "#C1EF40"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "pr-tests",
|
|
94
|
+
"changelogTitle": " 🧪 Tests",
|
|
95
|
+
"description": "Add or improve existing tests",
|
|
96
|
+
"releaseType": "none",
|
|
97
|
+
"overwrite": true,
|
|
98
|
+
"color": "#C1EF40"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "pr-dependencies",
|
|
102
|
+
"changelogTitle": "🔩 Dependency Updates",
|
|
103
|
+
"description": "Update one or more dependencies version",
|
|
104
|
+
"releaseType": "none",
|
|
105
|
+
"overwrite": true,
|
|
106
|
+
"color": "#C1EF40"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "skip-release",
|
|
110
|
+
"description": "PR doesn't appear in the changelog and preserves current version when merged",
|
|
111
|
+
"releaseType": "skip",
|
|
112
|
+
"overwrite": true,
|
|
113
|
+
"color": "#bf5416"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "release",
|
|
117
|
+
"description": "Create a release when this PR is merged",
|
|
118
|
+
"releaseType": "release",
|
|
119
|
+
"overwrite": true,
|
|
120
|
+
"color": "#BFDADC"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# python cache
|
|
2
|
+
__pycache__/**/*
|
|
3
|
+
__pycache__
|
|
4
|
+
*.pyc
|
|
5
|
+
|
|
6
|
+
# python distribution
|
|
7
|
+
build/**/*
|
|
8
|
+
build
|
|
9
|
+
dist/**/*
|
|
10
|
+
dist
|
|
11
|
+
bagelbids.egg-info/**/*
|
|
12
|
+
bagelbids.egg-info
|
|
13
|
+
.eggs/**/*
|
|
14
|
+
.eggs
|
|
15
|
+
|
|
16
|
+
.editorconfig
|
|
17
|
+
**/.git
|
|
18
|
+
**/.github
|
|
19
|
+
**/.gitignore
|
|
20
|
+
**/.vscode
|
|
21
|
+
**/coverage
|
|
22
|
+
**/.env
|
|
23
|
+
**/.aws
|
|
24
|
+
**/.ssh
|
|
25
|
+
**/.DS_Store
|
|
26
|
+
**/venv
|
|
27
|
+
**/env
|
|
28
|
+
Dockerfile
|
|
29
|
+
|
|
30
|
+
# other configuration files and scripts
|
|
31
|
+
.autorc
|
|
32
|
+
.pre-commit-config.yaml
|
|
33
|
+
generate_nb_vocab_file.py
|
|
34
|
+
|
|
35
|
+
# documentation
|
|
36
|
+
CHANGELOG.md
|
|
37
|
+
CITATION.cff
|
|
38
|
+
LICENSE
|
|
39
|
+
README.md
|
|
40
|
+
|
|
41
|
+
# testing
|
|
42
|
+
tests
|
bagel-0.9.2/.flake8
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
; Flake8 does not natively support configuration via pyproject.toml.
|
|
2
|
+
; See https://github.com/microsoft/vscode-flake8/issues/135
|
|
3
|
+
|
|
4
|
+
[flake8]
|
|
5
|
+
extend-ignore = E501, E203
|
|
6
|
+
extend-select = B950
|
|
7
|
+
per-file-ignores =
|
|
8
|
+
bagelbids/cli.py: F841
|
|
9
|
+
exclude =
|
|
10
|
+
build,
|
|
11
|
+
dist,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# This is a centrally maintained dependabot configuration file
|
|
2
|
+
# that is applied to all repositories in the neurobagel organization.
|
|
3
|
+
# Do not make changes to this file directly. Instead, make changes
|
|
4
|
+
# to the template file in the workflows: https://github.com/neurobagel/workflows/tree/main/template_workflows/dependabot.yml
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
|
|
9
|
+
# We instruct dependabot to open PRs if a newer version
|
|
10
|
+
# of a github action has been released.
|
|
11
|
+
- package-ecosystem: "github-actions"
|
|
12
|
+
directory: "/"
|
|
13
|
+
schedule:
|
|
14
|
+
interval: "weekly"
|
|
15
|
+
labels:
|
|
16
|
+
- "_bot"
|
|
17
|
+
- "dependencies"
|
|
18
|
+
|
|
19
|
+
# We instruct dependabot to open PRs whenever the HEAD of
|
|
20
|
+
# of a submodule repository has advanced beyond what our submodule
|
|
21
|
+
# is currently tracking.
|
|
22
|
+
# Note: this configuration will only have an effect in repositories that have
|
|
23
|
+
# submodules.
|
|
24
|
+
- package-ecosystem: "gitsubmodule"
|
|
25
|
+
directory: "/"
|
|
26
|
+
schedule:
|
|
27
|
+
interval: "weekly"
|
|
28
|
+
labels:
|
|
29
|
+
- "_bot"
|
|
30
|
+
- "dependencies"
|
|
31
|
+
|
|
32
|
+
# In repo settings, we have configured dependabot to open PRs for security updates.
|
|
33
|
+
# Here, we configure dependabot to open version update PRs for only patch and minor versions of javascript / npm dependencies,
|
|
34
|
+
# and configure labels for both types of dependabot PRs.
|
|
35
|
+
# Note: this configuration will only have an effect in repositories that have
|
|
36
|
+
# a package.json file / use npm.
|
|
37
|
+
- package-ecosystem: "npm"
|
|
38
|
+
directory: "/"
|
|
39
|
+
schedule:
|
|
40
|
+
interval: "weekly"
|
|
41
|
+
# This setting asks dependabot to group PRs for version updates of all development or production dependencies
|
|
42
|
+
# into single PRs to reduce the total number of PRs opened.
|
|
43
|
+
groups:
|
|
44
|
+
production-dependencies:
|
|
45
|
+
applies-to: version-updates
|
|
46
|
+
dependency-type: "production"
|
|
47
|
+
development-dependencies:
|
|
48
|
+
applies-to: version-updates
|
|
49
|
+
dependency-type: "development"
|
|
50
|
+
# We ignore all major version updates of dependencies.
|
|
51
|
+
# The idea is that we only bump major versions manually or if doing
|
|
52
|
+
# so addresses a security vulnerability.
|
|
53
|
+
ignore:
|
|
54
|
+
- dependency-name: "*"
|
|
55
|
+
update-types: ["version-update:semver-major"]
|
|
56
|
+
labels:
|
|
57
|
+
- "_bot"
|
|
58
|
+
- "dependencies"
|
|
59
|
+
|
|
60
|
+
# In repo settings we have configured dependabot to open PRs for security updates.
|
|
61
|
+
# Here we configure custom labels to be applied to security update PRs,
|
|
62
|
+
# while still preventing regular version update PRs.
|
|
63
|
+
# See https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates#overriding-the-default-behavior-with-a-configuration-file
|
|
64
|
+
# Note: this configuration only has an effect in repositories that have
|
|
65
|
+
# a requirements.txt file / use python / pip.
|
|
66
|
+
- package-ecosystem: "pip"
|
|
67
|
+
directory: "/"
|
|
68
|
+
schedule:
|
|
69
|
+
interval: "weekly"
|
|
70
|
+
# This setting instructs dependabot to not open PRs for version updates
|
|
71
|
+
# but to still open PRs for security vulnerabilities.
|
|
72
|
+
open-pull-requests-limit: 0
|
|
73
|
+
labels:
|
|
74
|
+
- "_bot"
|
|
75
|
+
- "dependencies"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!--- Until this PR is ready for review, you can include [WIP] in the title, or create a draft PR. -->
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
<!---
|
|
5
|
+
Below is a suggested pull request template. Feel free to add more details you feel are relevant/necessary.
|
|
6
|
+
|
|
7
|
+
For more info on the Neurobagel PR process and other contributing guidelines, see https://neurobagel.org/contributing/CONTRIBUTING/.
|
|
8
|
+
-->
|
|
9
|
+
|
|
10
|
+
<!--
|
|
11
|
+
Please indicate after the # which issue you're closing with this PR, if applicable.
|
|
12
|
+
If the PR closes multiple issues, include "closes" before each one is listed.
|
|
13
|
+
You can also link to other issues if necessary, e.g. "See also #1234".
|
|
14
|
+
|
|
15
|
+
https://help.github.com/articles/closing-issues-using-keywords
|
|
16
|
+
-->
|
|
17
|
+
- Closes #
|
|
18
|
+
|
|
19
|
+
<!--
|
|
20
|
+
Please give a brief overview of what has changed or been added in the PR.
|
|
21
|
+
This can include anything specific the maintainers should be looking for when they review the PR.
|
|
22
|
+
-->
|
|
23
|
+
Changes proposed in this pull request:
|
|
24
|
+
|
|
25
|
+
-
|
|
26
|
+
-
|
|
27
|
+
|
|
28
|
+
<!-- To be checked off by reviewers -->
|
|
29
|
+
## Checklist
|
|
30
|
+
_This section is for the PR reviewer_
|
|
31
|
+
|
|
32
|
+
- [ ] PR has an interpretable title with a prefix (`[ENH]`, `[FIX]`, `[REF]`, `[TST]`, `[CI]`, `[MNT]`, `[INF]`, `[MODEL]`, `[DOC]`) _(see our [Contributing Guidelines](https://neurobagel.org/contributing/CONTRIBUTING#pull-request-guidelines) for more info)_
|
|
33
|
+
- [ ] PR has a label for the release changelog or `skip-release` (to be applied by maintainers only)
|
|
34
|
+
- [ ] PR links to GitHub issue with mention `Closes #XXXX`
|
|
35
|
+
- [ ] Tests pass
|
|
36
|
+
- [ ] Checks pass
|
|
37
|
+
|
|
38
|
+
For new features:
|
|
39
|
+
- [ ] Tests have been added
|
|
40
|
+
|
|
41
|
+
For bug fixes:
|
|
42
|
+
- [ ] There is at least one test that would fail under the original bug conditions.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: Add new issues to project
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types:
|
|
6
|
+
- opened
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
add-to-project:
|
|
10
|
+
name: Add issue to project
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- name: Generate a token
|
|
14
|
+
id: generate-token
|
|
15
|
+
uses: actions/create-github-app-token@v2
|
|
16
|
+
with:
|
|
17
|
+
app-id: ${{ vars.NB_BOT_ID }}
|
|
18
|
+
private-key: ${{ secrets.NB_BOT_KEY }}
|
|
19
|
+
|
|
20
|
+
- uses: actions/add-to-project@main
|
|
21
|
+
with:
|
|
22
|
+
project-url: https://github.com/orgs/neurobagel/projects/1
|
|
23
|
+
github-token: ${{ steps.generate-token.outputs.token }}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# NOTE: A custom version of this template workflow is used in neurobagel/query-tool.
|
|
2
|
+
# Any changes to this template must be applied manually to query-tool/.github/workflows/build_docker_nightly.yml
|
|
3
|
+
|
|
4
|
+
name: build docker nightly
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout
|
|
17
|
+
uses: actions/checkout@v5
|
|
18
|
+
# Some repos have submodules that need to be part of the Docker image
|
|
19
|
+
with:
|
|
20
|
+
submodules: recursive
|
|
21
|
+
|
|
22
|
+
- name: Login to Docker Hub
|
|
23
|
+
uses: docker/login-action@v3
|
|
24
|
+
with:
|
|
25
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
26
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
27
|
+
|
|
28
|
+
- name: Set up Docker Buildx
|
|
29
|
+
uses: docker/setup-buildx-action@v3
|
|
30
|
+
|
|
31
|
+
- name: Build and push
|
|
32
|
+
uses: docker/build-push-action@v6
|
|
33
|
+
with:
|
|
34
|
+
platforms: linux/arm64, linux/amd64
|
|
35
|
+
context: .
|
|
36
|
+
file: ./Dockerfile
|
|
37
|
+
push: true
|
|
38
|
+
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPO }}:nightly
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: build Docker image on release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
-
|
|
12
|
+
name: Checkout
|
|
13
|
+
uses: actions/checkout@v5
|
|
14
|
+
# Some repos have submodules that need to be part of the Docker image
|
|
15
|
+
with:
|
|
16
|
+
submodules: recursive
|
|
17
|
+
-
|
|
18
|
+
# The release event is a superset of the push tag event,
|
|
19
|
+
# so we expect two tags to be generated by docker/metadata-action
|
|
20
|
+
# based on the behaviour for the type=semver,pattern=... tag type:
|
|
21
|
+
# 1. a semver tag vX.Y.Z (from the release Git tag; this is what will be used as the image version in the generated label)
|
|
22
|
+
# 2. latest (as type=semver,pattern=... is part of the latest tag handling)
|
|
23
|
+
# References:
|
|
24
|
+
# - https://github.com/docker/metadata-action?tab=readme-ov-file#typesemver
|
|
25
|
+
# - https://github.com/docker/metadata-action?tab=readme-ov-file#latest-tag
|
|
26
|
+
# - https://github.com/docker/metadata-action/issues/103
|
|
27
|
+
# - https://github.com/docker/metadata-action/issues/168
|
|
28
|
+
name: Docker meta
|
|
29
|
+
id: meta
|
|
30
|
+
uses: docker/metadata-action@v5
|
|
31
|
+
with:
|
|
32
|
+
# TODO: Repos with this wf must have DOCKERHUB_REPO set in the repository variables
|
|
33
|
+
images: ${{ secrets.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPO }}
|
|
34
|
+
# NOTE: This input is probably not necessary as the action should generate the appropriate tags
|
|
35
|
+
# based on the default type=ref,event=tag, but we define an explicit pattern here for clarity
|
|
36
|
+
tags: |
|
|
37
|
+
type=semver,pattern={{raw}}
|
|
38
|
+
-
|
|
39
|
+
name: Login to Docker Hub
|
|
40
|
+
uses: docker/login-action@v3
|
|
41
|
+
with:
|
|
42
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
43
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
44
|
+
-
|
|
45
|
+
name: Set up Docker Buildx
|
|
46
|
+
uses: docker/setup-buildx-action@v3
|
|
47
|
+
-
|
|
48
|
+
name: Build and push
|
|
49
|
+
uses: docker/build-push-action@v6
|
|
50
|
+
with:
|
|
51
|
+
platforms: linux/arm64, linux/amd64
|
|
52
|
+
context: .
|
|
53
|
+
file: ./Dockerfile
|
|
54
|
+
push: true
|
|
55
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
56
|
+
# Select a subset of labels to apply from https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys,
|
|
57
|
+
# following https://github.com/docker/metadata-action/issues/303
|
|
58
|
+
labels: |
|
|
59
|
+
org.opencontainers.image.created=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.source'] }}
|
|
60
|
+
org.opencontainers.image.revision=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
|
61
|
+
org.opencontainers.image.version=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: validate citation.cff
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: ['main']
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: ['main']
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
|
|
16
|
+
validate_cff:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v5
|
|
20
|
+
- name: Check whether the citation metadata from CITATION.cff is valid
|
|
21
|
+
uses: citation-file-format/cffconvert-github-action@2.0.0
|
|
22
|
+
with:
|
|
23
|
+
args: --validate
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Codespell
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
codespell:
|
|
12
|
+
name: Check for spelling errors
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout
|
|
17
|
+
uses: actions/checkout@v5
|
|
18
|
+
- name: Codespell
|
|
19
|
+
uses: codespell-project/actions-codespell@v2
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Label pull requests from forks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request_target:
|
|
5
|
+
types: [opened]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
handle_external_pr:
|
|
9
|
+
# Only run this entire workflow if the PR was opened from a forked repo
|
|
10
|
+
# The reasoning is that both bots and external contributors have to make
|
|
11
|
+
# a fork of the repo before they can open a PR because they don't have
|
|
12
|
+
# write access to the repo.
|
|
13
|
+
if: github.event.pull_request.head.repo.full_name != github.repository
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Label pull request with "_community"
|
|
18
|
+
run: gh pr edit ${{ github.event.pull_request.number }} -R ${{ github.repository }} --add-label "_community"
|
|
19
|
+
env:
|
|
20
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
21
|
+
|
|
22
|
+
handle_precommit_pr:
|
|
23
|
+
if: contains(github.event.pull_request.title, '[pre-commit.ci]')
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
|
|
26
|
+
steps:
|
|
27
|
+
- name: Label pull request with "_bot"
|
|
28
|
+
run: gh pr edit ${{ github.event.pull_request.number }} -R ${{ github.repository }} --add-label "_bot"
|
|
29
|
+
env:
|
|
30
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: auto release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
auto-release:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
if: "!contains(github.event.head_commit.message, 'ci skip') && !contains(github.event.head_commit.message, 'skip ci')"
|
|
12
|
+
steps:
|
|
13
|
+
- name: Generate a token
|
|
14
|
+
id: generate-token
|
|
15
|
+
uses: actions/create-github-app-token@v2
|
|
16
|
+
with:
|
|
17
|
+
app-id: ${{ vars.NB_BOT_ID }}
|
|
18
|
+
private-key: ${{ secrets.NB_BOT_KEY }}
|
|
19
|
+
|
|
20
|
+
- name: Checkout
|
|
21
|
+
uses: actions/checkout@v5
|
|
22
|
+
with:
|
|
23
|
+
fetch-depth: 0
|
|
24
|
+
token: ${{ steps.generate-token.outputs.token }}
|
|
25
|
+
|
|
26
|
+
- name: Download latest auto
|
|
27
|
+
run: |
|
|
28
|
+
auto_download_url="$(curl -fsSL https://api.github.com/repos/intuit/auto/releases/latest | jq -r '.assets[] | select(.name == "auto-linux.gz") | .browser_download_url')"
|
|
29
|
+
wget -O- "$auto_download_url" | gunzip > ~/auto
|
|
30
|
+
chmod a+x ~/auto
|
|
31
|
+
|
|
32
|
+
- name: Set up Python 3.10
|
|
33
|
+
uses: actions/setup-python@v6
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.10"
|
|
36
|
+
|
|
37
|
+
- name: Install build & twine
|
|
38
|
+
run: python -m pip install build twine
|
|
39
|
+
|
|
40
|
+
- name: Release
|
|
41
|
+
run: ~/auto shipit -vv
|
|
42
|
+
env:
|
|
43
|
+
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
|
|
44
|
+
TWINE_USERNAME: __token__
|
|
45
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: 'Close stale issues and PRs'
|
|
2
|
+
on:
|
|
3
|
+
schedule:
|
|
4
|
+
- cron: '30 1 * * *'
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
stale:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/stale@v10
|
|
11
|
+
with:
|
|
12
|
+
stale-issue-message: |
|
|
13
|
+
We want to keep our issues up to date and active. This issue hasn't seen any activity in the last 75 days.
|
|
14
|
+
We have applied the `_flag:stale` label to indicate that this issue should be reviewed again.
|
|
15
|
+
When you review, please reread the spec and then apply one of these three options:
|
|
16
|
+
- prioritize: apply the `flag:schedule` label to suggest moving this issue into the backlog now
|
|
17
|
+
- close: if the issue is no longer relevant, explain why (give others a chance to reply) and then close.
|
|
18
|
+
- archive: sometimes an issue has important information or ideas but we won't work on it soon. In this case
|
|
19
|
+
apply the `someday` label to show that this won't be prioritized. The stalebot will ignore issues with this
|
|
20
|
+
label in the future. Use sparingly!
|
|
21
|
+
days-before-stale: 75
|
|
22
|
+
days-before-close: -1
|
|
23
|
+
stale-issue-label: '_flag:stale'
|
|
24
|
+
exempt-issue-labels: 'Roadmap,Milestone,Epic,someday'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
test:
|
|
7
|
+
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
strategy:
|
|
10
|
+
fail-fast: false
|
|
11
|
+
matrix:
|
|
12
|
+
python-version: ["3.11"] # , "3.10" TODO: bids2table requires >=3.11 - remove matrix version once dependency is finalized
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v5
|
|
16
|
+
with:
|
|
17
|
+
submodules: recursive
|
|
18
|
+
|
|
19
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
20
|
+
uses: actions/setup-python@v6
|
|
21
|
+
with:
|
|
22
|
+
python-version: ${{ matrix.python-version }}
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install .[test]
|
|
28
|
+
|
|
29
|
+
- name: Test with pytest
|
|
30
|
+
run: |
|
|
31
|
+
coverage run -m pytest
|
|
32
|
+
coverage lcov -o ./coverage/lcov.info
|
|
33
|
+
|
|
34
|
+
- name: Upload coverage reports to Codecov
|
|
35
|
+
uses: codecov/codecov-action@v5
|
|
36
|
+
env:
|
|
37
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|