clams-python 1.4.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.
- clams_python-1.6.0/.github/workflows/codecov.yml +18 -0
- clams_python-1.6.0/.github/workflows/container.yml +185 -0
- clams_python-1.6.0/.github/workflows/containers.yml +216 -0
- clams_python-1.6.0/.github/workflows/issue-close.yml +15 -0
- clams_python-1.6.0/.github/workflows/issue-infra-project.yml +18 -0
- clams_python-1.6.0/.github/workflows/publish.yml +51 -0
- clams_python-1.6.0/.gitignore +88 -0
- clams_python-1.6.0/.pytype.cfg +10 -0
- clams_python-1.6.0/CHANGELOG.md +544 -0
- clams_python-1.6.0/CONTRIBUTING.md +91 -0
- {clams_python-1.4.0/clams_python.egg-info → clams_python-1.6.0}/PKG-INFO +21 -16
- clams_python-1.6.0/build-tools/build.py +54 -0
- clams_python-1.6.0/build-tools/clean.py +70 -0
- clams_python-1.6.0/build-tools/docs.py +93 -0
- clams_python-1.6.0/build-tools/publish.py +202 -0
- clams_python-1.6.0/build-tools/test.py +72 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/__init__.py +3 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/app/__init__.py +63 -6
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/appmetadata/__init__.py +28 -6
- clams_python-1.6.0/clams/develop/templates/gha/workflows/issue-assign.yml.template +11 -0
- clams_python-1.6.0/clams/envelop/__init__.py +201 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/restify/__init__.py +24 -7
- clams_python-1.6.0/clams/ver/__init__.py +2 -0
- {clams_python-1.4.0 → clams_python-1.6.0/clams_python.egg-info}/PKG-INFO +21 -16
- clams_python-1.6.0/clams_python.egg-info/SOURCES.txt +88 -0
- clams_python-1.6.0/clams_python.egg-info/entry_points.txt +2 -0
- clams_python-1.6.0/clams_python.egg-info/requires.txt +26 -0
- clams_python-1.6.0/container/Containerfile +14 -0
- clams_python-1.6.0/container/ffmpeg-hf.containerfile +3 -0
- clams_python-1.6.0/container/ffmpeg-hf4.containerfile +6 -0
- clams_python-1.6.0/container/ffmpeg-hf5.containerfile +6 -0
- clams_python-1.6.0/container/ffmpeg-tf2.containerfile +7 -0
- clams_python-1.6.0/container/ffmpeg-torch2.containerfile +6 -0
- clams_python-1.6.0/container/ffmpeg.containerfile +7 -0
- clams_python-1.6.0/container/generate_containers_yml.py +107 -0
- clams_python-1.6.0/container/hf.containerfile +3 -0
- clams_python-1.6.0/container/hf4.containerfile +6 -0
- clams_python-1.6.0/container/hf5.containerfile +6 -0
- clams_python-1.6.0/container/jdk8.containerfile +8 -0
- clams_python-1.6.0/container/opencv4-hf.containerfile +3 -0
- clams_python-1.6.0/container/opencv4-hf4.containerfile +6 -0
- clams_python-1.6.0/container/opencv4-hf5.containerfile +6 -0
- clams_python-1.6.0/container/opencv4-tf2.containerfile +7 -0
- clams_python-1.6.0/container/opencv4-torch2.containerfile +6 -0
- clams_python-1.6.0/container/opencv4.containerfile +45 -0
- clams_python-1.6.0/container/tf2.containerfile +7 -0
- clams_python-1.6.0/container/torch2.containerfile +6 -0
- clams_python-1.6.0/documentation/appdirectory.rst +8 -0
- clams_python-1.6.0/documentation/appmetadata.rst +238 -0
- clams_python-1.6.0/documentation/autodoc/clams.app.rst +10 -0
- clams_python-1.6.0/documentation/autodoc/clams.appmetadata.rst +19 -0
- clams_python-1.6.0/documentation/autodoc/clams.mmif_utils.rst +4 -0
- clams_python-1.6.0/documentation/autodoc/clams.restify.rst +9 -0
- clams_python-1.6.0/documentation/clamsapp.rst +460 -0
- clams_python-1.6.0/documentation/cli.rst +14 -0
- clams_python-1.6.0/documentation/conf.py +219 -0
- clams_python-1.6.0/documentation/gpu-apps.rst +127 -0
- clams_python-1.6.0/documentation/index.rst +41 -0
- clams_python-1.6.0/documentation/input-output.rst +50 -0
- clams_python-1.6.0/documentation/introduction.rst +159 -0
- clams_python-1.6.0/documentation/modules.rst +11 -0
- clams_python-1.6.0/documentation/runtime-params.rst +204 -0
- clams_python-1.6.0/documentation/target-versions.csv +53 -0
- clams_python-1.6.0/documentation/tutorial.md +395 -0
- clams_python-1.6.0/pyproject.toml +52 -0
- clams_python-1.6.0/tests/metadata.py +19 -0
- clams_python-1.6.0/tests/pillow-logo.png +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/tests/test_clamsapp.py +21 -6
- clams_python-1.6.0/tests/test_envelope.py +455 -0
- clams_python-1.4.0/MANIFEST.in +0 -3
- clams_python-1.4.0/VERSION +0 -1
- clams_python-1.4.0/clams/ver/__init__.py +0 -1
- clams_python-1.4.0/clams_python.egg-info/SOURCES.txt +0 -34
- clams_python-1.4.0/clams_python.egg-info/entry_points.txt +0 -2
- clams_python-1.4.0/clams_python.egg-info/requires.txt +0 -7
- clams_python-1.4.0/requirements.txt +0 -8
- clams_python-1.4.0/setup.py +0 -58
- /clams_python-1.4.0/clams/develop/templates/gha/workflows/issue-assign.yml.template → /clams_python-1.6.0/.github/workflows/issue-assign.yml +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/LICENSE +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/README.md +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/__init__.py +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/.dockerignore.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/.gitignore.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/Containerfile.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/LICENSE.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/README.md.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/app.py.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/cli.py.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/metadata.py.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/app/requirements.txt.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/gha/for-clams-team.md.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/gha/workflows/issue-apps-project.yml.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/gha/workflows/issue-close.yml.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/develop/templates/gha/workflows/publish.yml.template +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams/serve/__init__.py +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams_python.egg-info/dependency_links.txt +0 -0
- {clams_python-1.4.0 → clams_python-1.6.0}/clams_python.egg-info/top_level.txt +0 -0
- {clams_python-1.4.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
|