clams-python 1.5.0__tar.gz → 1.6.0__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 (98) hide show
  1. clams_python-1.6.0/.github/workflows/codecov.yml +18 -0
  2. clams_python-1.6.0/.github/workflows/container.yml +185 -0
  3. clams_python-1.6.0/.github/workflows/containers.yml +216 -0
  4. clams_python-1.6.0/.github/workflows/issue-close.yml +15 -0
  5. clams_python-1.6.0/.github/workflows/issue-infra-project.yml +18 -0
  6. clams_python-1.6.0/.github/workflows/publish.yml +51 -0
  7. clams_python-1.6.0/.gitignore +88 -0
  8. clams_python-1.6.0/.pytype.cfg +10 -0
  9. clams_python-1.6.0/CHANGELOG.md +544 -0
  10. clams_python-1.6.0/CONTRIBUTING.md +91 -0
  11. {clams_python-1.5.0/clams_python.egg-info → clams_python-1.6.0}/PKG-INFO +21 -16
  12. clams_python-1.6.0/build-tools/build.py +54 -0
  13. clams_python-1.6.0/build-tools/clean.py +70 -0
  14. clams_python-1.6.0/build-tools/docs.py +93 -0
  15. clams_python-1.6.0/build-tools/publish.py +202 -0
  16. clams_python-1.6.0/build-tools/test.py +72 -0
  17. {clams_python-1.5.0 → clams_python-1.6.0}/clams/__init__.py +3 -0
  18. {clams_python-1.5.0 → clams_python-1.6.0}/clams/app/__init__.py +32 -5
  19. {clams_python-1.5.0 → clams_python-1.6.0}/clams/appmetadata/__init__.py +26 -5
  20. clams_python-1.6.0/clams/develop/templates/gha/workflows/issue-assign.yml.template +11 -0
  21. clams_python-1.6.0/clams/envelop/__init__.py +201 -0
  22. {clams_python-1.5.0 → clams_python-1.6.0}/clams/restify/__init__.py +24 -7
  23. clams_python-1.6.0/clams/ver/__init__.py +2 -0
  24. {clams_python-1.5.0 → clams_python-1.6.0/clams_python.egg-info}/PKG-INFO +21 -16
  25. clams_python-1.6.0/clams_python.egg-info/SOURCES.txt +88 -0
  26. clams_python-1.6.0/clams_python.egg-info/entry_points.txt +2 -0
  27. clams_python-1.6.0/clams_python.egg-info/requires.txt +26 -0
  28. clams_python-1.6.0/container/Containerfile +14 -0
  29. clams_python-1.6.0/container/ffmpeg-hf.containerfile +3 -0
  30. clams_python-1.6.0/container/ffmpeg-hf4.containerfile +6 -0
  31. clams_python-1.6.0/container/ffmpeg-hf5.containerfile +6 -0
  32. clams_python-1.6.0/container/ffmpeg-tf2.containerfile +7 -0
  33. clams_python-1.6.0/container/ffmpeg-torch2.containerfile +6 -0
  34. clams_python-1.6.0/container/ffmpeg.containerfile +7 -0
  35. clams_python-1.6.0/container/generate_containers_yml.py +107 -0
  36. clams_python-1.6.0/container/hf.containerfile +3 -0
  37. clams_python-1.6.0/container/hf4.containerfile +6 -0
  38. clams_python-1.6.0/container/hf5.containerfile +6 -0
  39. clams_python-1.6.0/container/jdk8.containerfile +8 -0
  40. clams_python-1.6.0/container/opencv4-hf.containerfile +3 -0
  41. clams_python-1.6.0/container/opencv4-hf4.containerfile +6 -0
  42. clams_python-1.6.0/container/opencv4-hf5.containerfile +6 -0
  43. clams_python-1.6.0/container/opencv4-tf2.containerfile +7 -0
  44. clams_python-1.6.0/container/opencv4-torch2.containerfile +6 -0
  45. clams_python-1.6.0/container/opencv4.containerfile +45 -0
  46. clams_python-1.6.0/container/tf2.containerfile +7 -0
  47. clams_python-1.6.0/container/torch2.containerfile +6 -0
  48. clams_python-1.6.0/documentation/appdirectory.rst +8 -0
  49. clams_python-1.6.0/documentation/appmetadata.rst +238 -0
  50. clams_python-1.6.0/documentation/autodoc/clams.app.rst +10 -0
  51. clams_python-1.6.0/documentation/autodoc/clams.appmetadata.rst +19 -0
  52. clams_python-1.6.0/documentation/autodoc/clams.mmif_utils.rst +4 -0
  53. clams_python-1.6.0/documentation/autodoc/clams.restify.rst +9 -0
  54. clams_python-1.6.0/documentation/clamsapp.rst +460 -0
  55. clams_python-1.6.0/documentation/cli.rst +14 -0
  56. clams_python-1.6.0/documentation/conf.py +219 -0
  57. clams_python-1.6.0/documentation/gpu-apps.rst +127 -0
  58. clams_python-1.6.0/documentation/index.rst +41 -0
  59. clams_python-1.6.0/documentation/input-output.rst +50 -0
  60. clams_python-1.6.0/documentation/introduction.rst +159 -0
  61. clams_python-1.6.0/documentation/modules.rst +11 -0
  62. clams_python-1.6.0/documentation/runtime-params.rst +204 -0
  63. clams_python-1.6.0/documentation/target-versions.csv +53 -0
  64. clams_python-1.6.0/documentation/tutorial.md +395 -0
  65. clams_python-1.6.0/pyproject.toml +52 -0
  66. clams_python-1.6.0/tests/metadata.py +19 -0
  67. clams_python-1.6.0/tests/pillow-logo.png +0 -0
  68. {clams_python-1.5.0 → clams_python-1.6.0}/tests/test_clamsapp.py +19 -4
  69. clams_python-1.6.0/tests/test_envelope.py +455 -0
  70. clams_python-1.5.0/MANIFEST.in +0 -3
  71. clams_python-1.5.0/VERSION +0 -1
  72. clams_python-1.5.0/clams/ver/__init__.py +0 -1
  73. clams_python-1.5.0/clams_python.egg-info/SOURCES.txt +0 -34
  74. clams_python-1.5.0/clams_python.egg-info/entry_points.txt +0 -2
  75. clams_python-1.5.0/clams_python.egg-info/requires.txt +0 -7
  76. clams_python-1.5.0/requirements.txt +0 -8
  77. clams_python-1.5.0/setup.py +0 -58
  78. /clams_python-1.5.0/clams/develop/templates/gha/workflows/issue-assign.yml.template → /clams_python-1.6.0/.github/workflows/issue-assign.yml +0 -0
  79. {clams_python-1.5.0 → clams_python-1.6.0}/LICENSE +0 -0
  80. {clams_python-1.5.0 → clams_python-1.6.0}/README.md +0 -0
  81. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/__init__.py +0 -0
  82. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/.dockerignore.template +0 -0
  83. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/.gitignore.template +0 -0
  84. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/Containerfile.template +0 -0
  85. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/LICENSE.template +0 -0
  86. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/README.md.template +0 -0
  87. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/app.py.template +0 -0
  88. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/cli.py.template +0 -0
  89. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/metadata.py.template +0 -0
  90. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/app/requirements.txt.template +0 -0
  91. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/gha/for-clams-team.md.template +0 -0
  92. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/gha/workflows/issue-apps-project.yml.template +0 -0
  93. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/gha/workflows/issue-close.yml.template +0 -0
  94. {clams_python-1.5.0 → clams_python-1.6.0}/clams/develop/templates/gha/workflows/publish.yml.template +0 -0
  95. {clams_python-1.5.0 → clams_python-1.6.0}/clams/serve/__init__.py +0 -0
  96. {clams_python-1.5.0 → clams_python-1.6.0}/clams_python.egg-info/dependency_links.txt +0 -0
  97. {clams_python-1.5.0 → clams_python-1.6.0}/clams_python.egg-info/top_level.txt +0 -0
  98. {clams_python-1.5.0 → clams_python-1.6.0}/setup.cfg +0 -0
@@ -0,0 +1,18 @@
1
+ name: "🧪 Test"
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - develop
8
+ pull_request:
9
+ branches:
10
+ - main
11
+ - develop
12
+ jobs:
13
+ test-and-codecov:
14
+ name: "🤙 Call SDK test workflow"
15
+ uses: clamsproject/.github/.github/workflows/sdk-codecov-pyproj.yml@main
16
+ secrets:
17
+ CC_REPO_UPLOAD_TOKEN: ${{ secrets.CODECOV_UPLOAD_TOKEN_CLAMS_PYTHON }}
18
+
@@ -0,0 +1,185 @@
1
+ name: "♻️,🏋 Build an image and upload to ghcr"
2
+
3
+ on:
4
+ workflow_call:
5
+ inputs:
6
+ version:
7
+ required: true
8
+ type: string
9
+ description: 'clams-python SDK version'
10
+ buildfilename:
11
+ required: true
12
+ type: string
13
+ description: 'name of the container build file to use'
14
+ ref:
15
+ required: false
16
+ type: string
17
+ description: 'git ref to checkout (defaults to version)'
18
+ workflow_dispatch:
19
+ inputs:
20
+ version:
21
+ required: true
22
+ type: string
23
+ description: 'clams-python SDK version'
24
+ buildfilename:
25
+ required: true
26
+ type: string
27
+ description: 'name of the container build file to use'
28
+ ref:
29
+ required: false
30
+ type: string
31
+ description: 'git ref to checkout (defaults to version)'
32
+
33
+ env:
34
+ REGISTRY: ghcr.io
35
+
36
+ jobs:
37
+ build:
38
+ name: "🐳 Build (${{ matrix.platform }})"
39
+ runs-on: ${{ matrix.runner }}
40
+ strategy:
41
+ fail-fast: false
42
+ matrix:
43
+ include:
44
+ - platform: linux/amd64
45
+ runner: ubuntu-latest
46
+ - platform: linux/arm64
47
+ runner: ubuntu-24.04-arm
48
+ permissions:
49
+ contents: read
50
+ packages: write
51
+
52
+ steps:
53
+ - name: "🔧 Prepare"
54
+ id: prepare
55
+ run: |
56
+ platform=${{ matrix.platform }}
57
+ echo "pair=${platform//\//-}" >> $GITHUB_OUTPUT
58
+ slug=$(echo "${{ inputs.buildfilename }}" | sed 's|[^a-zA-Z0-9]|-|g; s/^-*//; s/-*$//')
59
+ echo "slug=${slug}" >> $GITHUB_OUTPUT
60
+
61
+ - name: "🛍️ Checkout repository"
62
+ uses: actions/checkout@v5
63
+ with:
64
+ ref: ${{ inputs.ref || inputs.version }}
65
+
66
+ - name: "👷 Set up Docker Buildx"
67
+ uses: docker/setup-buildx-action@v3
68
+
69
+ - name: "🏷 Prepare OCI annotations"
70
+ id: getlabels
71
+ run: |
72
+ EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
73
+ echo "EXISTING_LABELS<<$EOF" >> $GITHUB_ENV
74
+ cat ${{ inputs.buildfilename }} | grep LABEL | sed -E 's/^LABEL\s+([^=]+)="?(.+)("|$)/\1=\2/g' >> $GITHUB_ENV
75
+ echo "$EOF" >> $GITHUB_ENV
76
+ echo $EXISTING_LABELS
77
+
78
+ - name: "🏷 Get image build context"
79
+ id: getcontext
80
+ run: |
81
+ echo "CONTEXT=$(dirname ${{ inputs.buildfilename }})" >> $GITHUB_ENV
82
+
83
+ - name: "🏷 Get image name suffix"
84
+ id: getsuffix
85
+ run: |
86
+ export filename=$(basename ${{ inputs.buildfilename }})
87
+ export nameonly="${filename%.*}"
88
+ if [ ${nameonly} == ${filename} ]; then echo "SUFFIX=" >> $GITHUB_ENV ; else echo "SUFFIX=-${nameonly}" >> $GITHUB_ENV; fi
89
+
90
+ - name: "🏷 Prepare docker labels"
91
+ id: meta
92
+ uses: docker/metadata-action@v5
93
+ with:
94
+ images: ${{ env.REGISTRY }}/${{ github.repository }}${{ env.SUFFIX }}
95
+ labels: |
96
+ ${{ env.EXISTING_LABELS }}
97
+
98
+ - name: "🔏 Log in to registry"
99
+ uses: docker/login-action@v3
100
+ with:
101
+ registry: ${{ env.REGISTRY }}
102
+ username: ${{ github.actor }}
103
+ password: ${{ secrets.GITHUB_TOKEN }}
104
+
105
+ - name: "🏗 Build and push by digest"
106
+ id: build
107
+ uses: docker/build-push-action@v6
108
+ with:
109
+ context: ${{ env.CONTEXT }}
110
+ platforms: ${{ matrix.platform }}
111
+ file: ${{ inputs.buildfilename }}
112
+ labels: ${{ env.DOCKER_METADATA_OUTPUT_LABELS }}
113
+ build-args: |
114
+ clams_version=${{ inputs.version }}
115
+ outputs: type=image,"name=${{ env.REGISTRY }}/${{ github.repository }}${{ env.SUFFIX }}",push-by-digest=true,name-canonical=true,push=true
116
+
117
+ - name: "📤 Export digest"
118
+ run: |
119
+ mkdir -p /tmp/digests
120
+ digest="${{ steps.build.outputs.digest }}"
121
+ touch "/tmp/digests/${digest#sha256:}"
122
+
123
+ - name: "📦 Upload digest"
124
+ uses: actions/upload-artifact@v4
125
+ with:
126
+ name: digests-${{ steps.prepare.outputs.slug }}-${{ steps.prepare.outputs.pair }}
127
+ path: /tmp/digests/*
128
+ if-no-files-found: error
129
+ retention-days: 1
130
+
131
+ merge:
132
+ name: "🔗 Create multi-platform manifest"
133
+ runs-on: ubuntu-latest
134
+ needs: build
135
+ permissions:
136
+ contents: read
137
+ packages: write
138
+
139
+ steps:
140
+ - name: "🔧 Prepare"
141
+ id: prepare
142
+ run: |
143
+ slug=$(echo "${{ inputs.buildfilename }}" | sed 's|[^a-zA-Z0-9]|-|g; s/^-*//; s/-*$//')
144
+ echo "slug=${slug}" >> $GITHUB_OUTPUT
145
+
146
+ - name: "🏷 Get image name suffix"
147
+ id: getsuffix
148
+ run: |
149
+ export filename=$(basename ${{ inputs.buildfilename }})
150
+ export nameonly="${filename%.*}"
151
+ if [ ${nameonly} == ${filename} ]; then echo "SUFFIX=" >> $GITHUB_ENV ; else echo "SUFFIX=-${nameonly}" >> $GITHUB_ENV; fi
152
+
153
+ - name: "📥 Download digests"
154
+ uses: actions/download-artifact@v4
155
+ with:
156
+ path: /tmp/digests
157
+ pattern: digests-${{ steps.prepare.outputs.slug }}-*
158
+ merge-multiple: true
159
+
160
+ - name: "👷 Set up Docker Buildx"
161
+ uses: docker/setup-buildx-action@v3
162
+
163
+ - name: "🏷 Prepare docker tags"
164
+ id: meta
165
+ uses: docker/metadata-action@v5
166
+ with:
167
+ images: ${{ env.REGISTRY }}/${{ github.repository }}${{ env.SUFFIX }}
168
+ tags: |
169
+ type=pep440,pattern={{version}},value=${{ inputs.version }}
170
+ type=ref,event=tag
171
+ type=ref,event=pr
172
+
173
+ - name: "🔏 Log in to registry"
174
+ uses: docker/login-action@v3
175
+ with:
176
+ registry: ${{ env.REGISTRY }}
177
+ username: ${{ github.actor }}
178
+ password: ${{ secrets.GITHUB_TOKEN }}
179
+
180
+ - name: "🔗 Create manifest list and push"
181
+ working-directory: /tmp/digests
182
+ run: |
183
+ docker buildx imagetools create \
184
+ $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
185
+ $(printf '${{ env.REGISTRY }}/${{ github.repository }}${{ env.SUFFIX }}@sha256:%s ' *)
@@ -0,0 +1,216 @@
1
+ # This file is auto-generated. Do not edit manually.
2
+
3
+ name: "📦 Publish (base images)"
4
+
5
+ on:
6
+ push:
7
+ tags:
8
+ - '[0-9]+.[0-9]+.[0-9]+'
9
+ workflow_dispatch:
10
+ inputs:
11
+ version:
12
+ description: 'version to tag images'
13
+ required: true
14
+
15
+ jobs:
16
+ set-version:
17
+ runs-on: ubuntu-latest
18
+ name: "🏷 Set version value"
19
+ outputs:
20
+ version: ${{ steps.output_version.outputs.version }}
21
+ steps:
22
+ - name: "📌 Set VERSION value from dispatch inputs"
23
+ id: get_version_dispatch
24
+ if: ${{ github.event_name == 'workflow_dispatch' }}
25
+ run: echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
26
+ - name: "📌 Set VERSION value from pushed tag"
27
+ id: get_version_tag
28
+ if: ${{ github.event_name == 'push' }}
29
+ run: echo "VERSION=$(echo "${{ github.ref }}" | cut -d/ -f3)" >> $GITHUB_ENV
30
+ - name: "🏷 Record VERSION for follow-up jobs"
31
+ id: output_version
32
+ run: |
33
+ echo "version=${{ env.VERSION }}" >> $GITHUB_OUTPUT
34
+ check-deployment:
35
+ name: "✅ PyPI deployment check"
36
+ runs-on: ubuntu-latest
37
+ needs: ['set-version']
38
+ steps:
39
+ - name: "⏱️ Wait up to 20 minutes for the new clams-python is deployed on PyPI"
40
+ uses: nev7n/wait_for_response@v1
41
+ with:
42
+ url: "https://pypi.org/pypi/clams-python/${{ needs.set-version.outputs.version }}/json"
43
+ responseCode: 200
44
+ timeout: 1200000
45
+ interval: 5000
46
+
47
+ call-build-base:
48
+ name: "🤙 Call container workflow with the base"
49
+ needs: ['set-version', 'check-deployment']
50
+ uses: ./.github/workflows/container.yml
51
+ secrets: inherit
52
+ with:
53
+ buildfilename: './container/Containerfile'
54
+ version: ${{ needs.set-version.outputs.version }}
55
+
56
+ call-build-ffmpeg:
57
+ name: "🤙 Call container workflow with `ffmpeg`"
58
+ needs: ['set-version', 'call-build-base']
59
+ uses: ./.github/workflows/container.yml
60
+ secrets: inherit
61
+ with:
62
+ buildfilename: './container/ffmpeg.containerfile'
63
+ version: ${{ needs.set-version.outputs.version }}
64
+
65
+ call-build-jdk8:
66
+ name: "🤙 Call container workflow with `jdk8`"
67
+ needs: ['set-version', 'call-build-base']
68
+ uses: ./.github/workflows/container.yml
69
+ secrets: inherit
70
+ with:
71
+ buildfilename: './container/jdk8.containerfile'
72
+ version: ${{ needs.set-version.outputs.version }}
73
+
74
+ call-build-tf2:
75
+ name: "🤙 Call container workflow with `tf2`"
76
+ needs: ['set-version', 'call-build-base']
77
+ uses: ./.github/workflows/container.yml
78
+ secrets: inherit
79
+ with:
80
+ buildfilename: './container/tf2.containerfile'
81
+ version: ${{ needs.set-version.outputs.version }}
82
+
83
+ call-build-torch2:
84
+ name: "🤙 Call container workflow with `torch2`"
85
+ needs: ['set-version', 'call-build-base']
86
+ uses: ./.github/workflows/container.yml
87
+ secrets: inherit
88
+ with:
89
+ buildfilename: './container/torch2.containerfile'
90
+ version: ${{ needs.set-version.outputs.version }}
91
+
92
+ call-build-ffmpeg-tf2:
93
+ name: "🤙 Call container workflow with `ffmpeg-tf2`"
94
+ needs: ['set-version', 'call-build-ffmpeg']
95
+ uses: ./.github/workflows/container.yml
96
+ secrets: inherit
97
+ with:
98
+ buildfilename: './container/ffmpeg-tf2.containerfile'
99
+ version: ${{ needs.set-version.outputs.version }}
100
+
101
+ call-build-ffmpeg-torch2:
102
+ name: "🤙 Call container workflow with `ffmpeg-torch2`"
103
+ needs: ['set-version', 'call-build-ffmpeg']
104
+ uses: ./.github/workflows/container.yml
105
+ secrets: inherit
106
+ with:
107
+ buildfilename: './container/ffmpeg-torch2.containerfile'
108
+ version: ${{ needs.set-version.outputs.version }}
109
+
110
+ call-build-opencv4:
111
+ name: "🤙 Call container workflow with `opencv4`"
112
+ needs: ['set-version', 'call-build-ffmpeg']
113
+ uses: ./.github/workflows/container.yml
114
+ secrets: inherit
115
+ with:
116
+ buildfilename: './container/opencv4.containerfile'
117
+ version: ${{ needs.set-version.outputs.version }}
118
+
119
+ call-build-hf:
120
+ name: "🤙 Call container workflow with `hf`"
121
+ needs: ['set-version', 'call-build-hf5']
122
+ uses: ./.github/workflows/container.yml
123
+ secrets: inherit
124
+ with:
125
+ buildfilename: './container/hf.containerfile'
126
+ version: ${{ needs.set-version.outputs.version }}
127
+
128
+ call-build-opencv4-tf2:
129
+ name: "🤙 Call container workflow with `opencv4-tf2`"
130
+ needs: ['set-version', 'call-build-opencv4']
131
+ uses: ./.github/workflows/container.yml
132
+ secrets: inherit
133
+ with:
134
+ buildfilename: './container/opencv4-tf2.containerfile'
135
+ version: ${{ needs.set-version.outputs.version }}
136
+
137
+ call-build-opencv4-torch2:
138
+ name: "🤙 Call container workflow with `opencv4-torch2`"
139
+ needs: ['set-version', 'call-build-opencv4']
140
+ uses: ./.github/workflows/container.yml
141
+ secrets: inherit
142
+ with:
143
+ buildfilename: './container/opencv4-torch2.containerfile'
144
+ version: ${{ needs.set-version.outputs.version }}
145
+
146
+ call-build-hf4:
147
+ name: "🤙 Call container workflow with `hf4`"
148
+ needs: ['set-version', 'call-build-torch2']
149
+ uses: ./.github/workflows/container.yml
150
+ secrets: inherit
151
+ with:
152
+ buildfilename: './container/hf4.containerfile'
153
+ version: ${{ needs.set-version.outputs.version }}
154
+
155
+ call-build-hf5:
156
+ name: "🤙 Call container workflow with `hf5`"
157
+ needs: ['set-version', 'call-build-torch2']
158
+ uses: ./.github/workflows/container.yml
159
+ secrets: inherit
160
+ with:
161
+ buildfilename: './container/hf5.containerfile'
162
+ version: ${{ needs.set-version.outputs.version }}
163
+
164
+ call-build-ffmpeg-hf:
165
+ name: "🤙 Call container workflow with `ffmpeg-hf`"
166
+ needs: ['set-version', 'call-build-ffmpeg-hf5']
167
+ uses: ./.github/workflows/container.yml
168
+ secrets: inherit
169
+ with:
170
+ buildfilename: './container/ffmpeg-hf.containerfile'
171
+ version: ${{ needs.set-version.outputs.version }}
172
+
173
+ call-build-ffmpeg-hf4:
174
+ name: "🤙 Call container workflow with `ffmpeg-hf4`"
175
+ needs: ['set-version', 'call-build-ffmpeg-torch2']
176
+ uses: ./.github/workflows/container.yml
177
+ secrets: inherit
178
+ with:
179
+ buildfilename: './container/ffmpeg-hf4.containerfile'
180
+ version: ${{ needs.set-version.outputs.version }}
181
+
182
+ call-build-ffmpeg-hf5:
183
+ name: "🤙 Call container workflow with `ffmpeg-hf5`"
184
+ needs: ['set-version', 'call-build-ffmpeg-torch2']
185
+ uses: ./.github/workflows/container.yml
186
+ secrets: inherit
187
+ with:
188
+ buildfilename: './container/ffmpeg-hf5.containerfile'
189
+ version: ${{ needs.set-version.outputs.version }}
190
+
191
+ call-build-opencv4-hf:
192
+ name: "🤙 Call container workflow with `opencv4-hf`"
193
+ needs: ['set-version', 'call-build-opencv4-hf5']
194
+ uses: ./.github/workflows/container.yml
195
+ secrets: inherit
196
+ with:
197
+ buildfilename: './container/opencv4-hf.containerfile'
198
+ version: ${{ needs.set-version.outputs.version }}
199
+
200
+ call-build-opencv4-hf4:
201
+ name: "🤙 Call container workflow with `opencv4-hf4`"
202
+ needs: ['set-version', 'call-build-opencv4-torch2']
203
+ uses: ./.github/workflows/container.yml
204
+ secrets: inherit
205
+ with:
206
+ buildfilename: './container/opencv4-hf4.containerfile'
207
+ version: ${{ needs.set-version.outputs.version }}
208
+
209
+ call-build-opencv4-hf5:
210
+ name: "🤙 Call container workflow with `opencv4-hf5`"
211
+ needs: ['set-version', 'call-build-opencv4-torch2']
212
+ uses: ./.github/workflows/container.yml
213
+ secrets: inherit
214
+ with:
215
+ buildfilename: './container/opencv4-hf5.containerfile'
216
+ version: ${{ needs.set-version.outputs.version }}
@@ -0,0 +1,15 @@
1
+ name: "🙅 Unassign assignees"
2
+
3
+ on:
4
+ issues:
5
+ types:
6
+ - closed
7
+ pull_request:
8
+ types:
9
+ - closed
10
+
11
+ jobs:
12
+ call-unassign:
13
+ name: "🤙 Call unassignment workflow"
14
+ uses: clamsproject/.github/.github/workflows/repo-issue-close.yml@main
15
+ secrets: inherit
@@ -0,0 +1,18 @@
1
+ name: "🗂 Add issue to `infra` GHP"
2
+
3
+ on:
4
+ issues:
5
+ types:
6
+ - opened
7
+ - transferred
8
+ pull_request:
9
+ types:
10
+ - opened
11
+
12
+ jobs:
13
+ call-assign:
14
+ name: "🤙 Call GHP workflow"
15
+ uses: clamsproject/.github/.github/workflows/repo-issue-project.yml@main
16
+ secrets: inherit
17
+ with:
18
+ projectnum: 10
@@ -0,0 +1,51 @@
1
+ name: "📦 Publish (PyPI + docs)"
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - '[0-9]+.[0-9]+.[0-9]+'
7
+ workflow_dispatch:
8
+ inputs:
9
+ version:
10
+ description: 'Version to publish (e.g., 3.2.0)'
11
+ required: true
12
+
13
+ jobs:
14
+ check-pypi:
15
+ name: "🔍 Check PyPI for existing package"
16
+ runs-on: ubuntu-latest
17
+ outputs:
18
+ exists: ${{ steps.check.outputs.exists }}
19
+ version: ${{ steps.check.outputs.version }}
20
+ steps:
21
+ - id: check
22
+ run: |
23
+ PACKAGE=$(echo "${{ github.repository }}" | cut -d/ -f2 | tr '-' '_')
24
+ VERSION=${{ inputs.version || github.ref_name }}
25
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
26
+ STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://pypi.org/pypi/$PACKAGE/$VERSION/json")
27
+ if [ "$STATUS" = "200" ]; then
28
+ echo "Package $PACKAGE $VERSION already exists on PyPI, skipping upload"
29
+ echo "exists=true" >> $GITHUB_OUTPUT
30
+ else
31
+ echo "Package $PACKAGE $VERSION not found on PyPI, proceeding with upload"
32
+ echo "exists=false" >> $GITHUB_OUTPUT
33
+ fi
34
+
35
+ publish-pypi:
36
+ name: "📦 Build and upload to PyPI"
37
+ needs: check-pypi
38
+ if: needs.check-pypi.outputs.exists == 'false'
39
+ uses: clamsproject/.github/.github/workflows/sdk-publish-pyproj.yml@main
40
+ secrets: inherit
41
+
42
+ publish-docs:
43
+ name: "📖 Build and publish docs"
44
+ needs: [check-pypi, publish-pypi]
45
+ if: always() && needs.check-pypi.result == 'success' && needs.publish-pypi.result != 'failure'
46
+ uses: clamsproject/clamsproject.github.io/.github/workflows/sdk-docs.yml@main
47
+ with:
48
+ source_repo: clamsproject/clams-python
49
+ source_ref: ${{ needs.check-pypi.outputs.version }}
50
+ project_name: clams-python
51
+ secrets: inherit
@@ -0,0 +1,88 @@
1
+ # python test files
2
+ .coverage
3
+ .pytype
4
+
5
+ # build time temp files
6
+ VERSION*
7
+
8
+ # linux
9
+ .*.sw?
10
+ *~
11
+ .directory # KDE directory preferences
12
+ .Trash-* # Linux trash folder which might appear on any partition or disk
13
+
14
+ # macos
15
+ .DS_Store
16
+ .AppleDouble
17
+ .LSOverride
18
+ Icon # Icon must end with two \r
19
+ ._* # Thumbnails
20
+ .DocumentRevisions-V100 # Files that might appear in the root of a volume
21
+ .fseventsd
22
+ .Spotlight-V100
23
+ .TemporaryItems
24
+ .Trashes
25
+ .VolumeIcon.icns
26
+ .AppleDB # Directories potentially created on remote AFP share
27
+ .AppleDesktop
28
+ Network Trash Folder
29
+ Temporary Items
30
+ .apdisk
31
+
32
+ # windows
33
+ Thumbs.db
34
+ ehthumbs.db
35
+ Desktop.ini
36
+ $RECYCLE.BIN/
37
+ *.cab # Windows Installer files
38
+ *.msi
39
+ *.msm
40
+ *.msp
41
+ *.lnk # Windows shortcuts
42
+
43
+ # idea
44
+ .idea
45
+ *.iml
46
+ out
47
+ gen
48
+
49
+ # sqlite
50
+ *.db
51
+ *.sqlite3
52
+
53
+
54
+ # java
55
+ *.class
56
+ .mtj.tmp/ # Mobile Tools for Java (J2ME)
57
+ target/ # Package Files #
58
+ *.jar
59
+ *.war
60
+ *.ear
61
+ hs_err_pid* # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
62
+
63
+ # python
64
+ **/*.pyc
65
+ **/__pycache__
66
+ build/
67
+ dist/
68
+ *.egg-info
69
+ clams_python-*/
70
+ coverage.xml
71
+
72
+ # shared folders
73
+ dropbox_shared*/
74
+ github_shared*/
75
+ gdrive_shared*/
76
+
77
+ # external references
78
+ \!rel_*/
79
+ \!ref_*/
80
+
81
+ # ctag generated file
82
+ tags
83
+ .tags
84
+
85
+ # sphinx
86
+ docs-test/
87
+ documentation/appmetadata.jsonschema
88
+ documentation/whatsnew.md
@@ -0,0 +1,10 @@
1
+ # NOTE: All relative paths are relative to the location of this file.
2
+
3
+ [pytype]
4
+
5
+ # Space-separated list of files or directories to exclude.
6
+ exclude =
7
+ **/*_test.py
8
+ **/test_*.py
9
+ clams/develop/templates/**/*.py
10
+