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.
Files changed (43) hide show
  1. bagel-0.9.2/.autorc +123 -0
  2. bagel-0.9.2/.dockerignore +42 -0
  3. bagel-0.9.2/.editorconfig +2 -0
  4. bagel-0.9.2/.flake8 +11 -0
  5. bagel-0.9.2/.github/dependabot.yml +75 -0
  6. bagel-0.9.2/.github/pull_request_template.md +42 -0
  7. bagel-0.9.2/.github/workflows/add_iss2project.yml +23 -0
  8. bagel-0.9.2/.github/workflows/build_docker_nightly.yml +38 -0
  9. bagel-0.9.2/.github/workflows/build_docker_on_release.yml +61 -0
  10. bagel-0.9.2/.github/workflows/cff_validation.yml +23 -0
  11. bagel-0.9.2/.github/workflows/codespell.yml +19 -0
  12. bagel-0.9.2/.github/workflows/handle_external_pr.yml +30 -0
  13. bagel-0.9.2/.github/workflows/release.yaml +45 -0
  14. bagel-0.9.2/.github/workflows/stale.yml +24 -0
  15. bagel-0.9.2/.github/workflows/test.yml +37 -0
  16. bagel-0.9.2/.gitignore +159 -0
  17. bagel-0.9.2/.gitmodules +12 -0
  18. bagel-0.9.2/.pre-commit-config.yaml +45 -0
  19. bagel-0.9.2/CHANGELOG.md +541 -0
  20. bagel-0.9.2/CITATION.cff +52 -0
  21. bagel-0.9.2/Dockerfile +9 -0
  22. bagel-0.9.2/LICENSE +21 -0
  23. bagel-0.9.2/PKG-INFO +133 -0
  24. bagel-0.9.2/README.md +82 -0
  25. bagel-0.9.2/bagel/__init__.py +0 -0
  26. bagel-0.9.2/bagel/_version.py +34 -0
  27. bagel-0.9.2/bagel/bids_table_model.py +61 -0
  28. bagel-0.9.2/bagel/cli.py +750 -0
  29. bagel-0.9.2/bagel/dictionary_models.py +176 -0
  30. bagel-0.9.2/bagel/logger.py +72 -0
  31. bagel-0.9.2/bagel/mappings.py +67 -0
  32. bagel-0.9.2/bagel/models.py +97 -0
  33. bagel-0.9.2/bagel/utilities/__init__.py +0 -0
  34. bagel-0.9.2/bagel/utilities/bids_utils.py +101 -0
  35. bagel-0.9.2/bagel/utilities/derivative_utils.py +188 -0
  36. bagel-0.9.2/bagel/utilities/file_utils.py +122 -0
  37. bagel-0.9.2/bagel/utilities/model_utils.py +119 -0
  38. bagel-0.9.2/bagel/utilities/pheno_utils.py +678 -0
  39. bagel-0.9.2/helper_scripts/generate_dictionary_jsonschema.py +11 -0
  40. bagel-0.9.2/helper_scripts/generate_graphdata_jsonschema.py +16 -0
  41. bagel-0.9.2/helper_scripts/generate_nb_vocab_file.py +52 -0
  42. bagel-0.9.2/helper_scripts/generate_neurobagel_example_jsonlds.sh +53 -0
  43. 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
@@ -0,0 +1,2 @@
1
+ [*.py]
2
+ profile = black
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 }}