clams-python 1.7.0__tar.gz → 1.7.1__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.7.1/.github/workflows/release-check.yml +11 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/CHANGELOG.md +16 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/CONTRIBUTING.md +7 -0
- {clams_python-1.7.0/clams_python.egg-info → clams_python-1.7.1}/PKG-INFO +2 -2
- clams_python-1.7.1/build-tools/prep_release.py +104 -0
- {clams_python-1.7.0 → clams_python-1.7.1/clams_python.egg-info}/PKG-INFO +2 -2
- {clams_python-1.7.0 → clams_python-1.7.1}/clams_python.egg-info/SOURCES.txt +2 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams_python.egg-info/requires.txt +1 -1
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/conf.py +0 -20
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/target-versions.csv +6 -1
- {clams_python-1.7.0 → clams_python-1.7.1}/pyproject.toml +1 -1
- {clams_python-1.7.0 → clams_python-1.7.1}/.github/workflows/codecov.yml +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.github/workflows/container.yml +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.github/workflows/containers.yml +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.github/workflows/issue-assign.yml +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.github/workflows/issue-close.yml +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.github/workflows/issue-infra-project.yml +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.github/workflows/publish.yml +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.gitignore +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/.pytype.cfg +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/LICENSE +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/README.md +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/build-tools/build.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/build-tools/clean.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/build-tools/docs.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/build-tools/publish.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/build-tools/test.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/app/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/appmetadata/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/backends/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/backends/hf.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/.dockerignore.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/.gitignore.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/Containerfile.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/LICENSE.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/README.md.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/app.py.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/cli.py.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/metadata.py.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/requirements.txt.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/gha/for-clams-team.md.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/gha/workflows/issue-apps-project.yml.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/gha/workflows/issue-assign.yml.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/gha/workflows/issue-close.yml.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/gha/workflows/publish.yml.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/utl-tf/__init__.py.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/utl-tf/timeframe.py.template +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/envelop/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/restify/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/serve/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams/ver/__init__.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams_python.egg-info/dependency_links.txt +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams_python.egg-info/entry_points.txt +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/clams_python.egg-info/top_level.txt +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/Containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/ffmpeg-hf.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/ffmpeg-hf4.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/ffmpeg-hf5.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/ffmpeg-tf2.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/ffmpeg-torch2.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/ffmpeg.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/generate_containers_yml.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/hf.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/hf4.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/hf5.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/jdk8.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/opencv4-hf.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/opencv4-hf4.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/opencv4-hf5.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/opencv4-tf2.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/opencv4-torch2.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/opencv4.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/tf2.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/container/torch2.containerfile +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/app-baseclasses.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/appdirectory.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/appmetadata.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/autodoc/clams.app.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/autodoc/clams.appmetadata.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/autodoc/clams.mmif_utils.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/autodoc/clams.restify.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/clamsapp.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/cli.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/gpu-apps.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/index.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/input-output.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/introduction.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/modules.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/runtime-params.rst +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/documentation/tutorial.md +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/setup.cfg +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/tests/metadata.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/tests/pillow-logo.png +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/tests/test_backends_hf.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/tests/test_clamsapp.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/tests/test_envelope.py +0 -0
- {clams_python-1.7.0 → clams_python-1.7.1}/tests/test_promptable.py +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
name: "🔖 Release PR check"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [main]
|
|
6
|
+
types: [opened, synchronize, reopened, edited]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
release-check:
|
|
10
|
+
name: "🤙 Call SDK release-check workflow"
|
|
11
|
+
uses: clamsproject/.github/.github/workflows/sdk-release-check.yml@main
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
|
|
2
|
+
## releasing 1.7.0 (2026-05-29)
|
|
3
|
+
### Overview
|
|
4
|
+
This release introduces a specialized base class `ClamsPromptableApp` and its HuggingFace specialization `ClamsHFPromptableApp` for CLAMS apps that wrap LLM / VLM / ALM / LMM-based analyzers, along with other HF-related helper code in various places. Additionally, it adds `appTags` field for app categorization in app metadata, and new timeframe related local utility recipe for `clams develop --recipe utl-tf` scaffold.
|
|
5
|
+
|
|
6
|
+
### Additions
|
|
7
|
+
* `ClamsPromptableApp`, a new specialized base class (subclassing `ClamsApp`) for prompt-driven, instruction-tuned LLM apps with pre-equipped with commonly used runtime parameter set (`prompt`, `systemPrompt`, `promptMode`, `maxNewTokens`, `temperature`, `topP`, `topK`, `parallelPrompts`). Plus, `ClamsHFPromptableApp` (subclassing `ClamsPromptableApp`) for the common case of "promptable app + local HuggingFace `transformers` model". This subclass should significanly simplify wrapping HF models into a CLAMS app. See https://clams.ai/clams-python/app-baseclasses.html for the developer guide. (https://github.com/clamsproject/clams-python/pull/291)
|
|
8
|
+
* `clams.backends.hf` (new module) with two general HF loaders: `load_hf_model` (`from_pretrained` flow) and `load_hf_pipeline` (`transformers.pipeline` flow). Wraps the device auto-detection, revision pinning, dtype handling, and kwargs pass-through that every HF-backed CLAMS app does identically; used internally by `ClamsHFPromptableApp` and callable directly from any non-promptable HF app. Requires the `[hf]` extra (`pip install clams-python[hf]`) to keep `torch` and `transformers` out of the base install.
|
|
9
|
+
* `clams develop --recipe utl-tf` scaffold drops a `utils/timeframe.py` into the new app that factors out the canonical TimeFrame iteration / `vdh.extract_images_by_mode_with_sources` / TimePoint-on-fallback / task-tuple pattern. (7bc91d97ff0af2a2253ca24b00afa8b554ad5849)
|
|
10
|
+
* `appTags` field on `AppMetadata`, a sibling to https://github.com/clamsproject/mmif/pull/253. Allows categorization of CLAMS apps for app-directory search / filtering. (https://github.com/clamsproject/clams-python/pull/290)
|
|
11
|
+
|
|
12
|
+
### Changes
|
|
13
|
+
* Updated to the latest `mmif-python` SDK (1.5.0).
|
|
14
|
+
* Tightened the semantics of the `AppMetadata.analyzer_versions` field (introduced in 1.4.0) for CHFPApp-based development. When an app subclasses `ClamsHFPromptableApp`, the dict is now the source of truth for the family of supported HF model IDs and their pinned commit hashes: the SDK auto-derives a `model` runtime parameter from the dict's keys, and the HF base class refines `model=<id>` into `model=<id>@<revision>` on output so the resolved revision lands in `view.metadata.appConfiguration` automatically.
|
|
15
|
+
* `clams develop` scaffold templates (`app.py.template`, `metadata.py.template`) updated with commented-out blocks for both promptable variants.
|
|
16
|
+
|
|
17
|
+
|
|
2
18
|
## releasing 1.6.0 (2026-05-19)
|
|
3
19
|
### Overview
|
|
4
20
|
|
|
@@ -75,6 +75,13 @@ from clams.ver import __version__
|
|
|
75
75
|
For a dev install without a matching tag, `setuptools-scm` generates a
|
|
76
76
|
version like `1.4.1.dev20+gaf551a4e4.d20260325`.
|
|
77
77
|
|
|
78
|
+
## Releases
|
|
79
|
+
|
|
80
|
+
Release PRs (from `develop` to `main`) are gated by the `release-check` CI workflow. Before opening one:
|
|
81
|
+
|
|
82
|
+
1. Title the PR exactly `releasing X.Y.Z` (strict semver); `release-check` reads the version from the title.
|
|
83
|
+
2. Run `python build-tools/prep_release.py X.Y.Z` and commit its changes. See inside the prep script to see what's actually prepared.
|
|
84
|
+
|
|
78
85
|
## Migration from Makefile
|
|
79
86
|
|
|
80
87
|
The old `Makefile` and `setup.py` have been removed. If you are
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clams-python
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.1
|
|
4
4
|
Summary: A collection of APIs to develop CLAMS app for python
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: homepage, https://clams.ai
|
|
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
13
13
|
Requires-Python: >=3.10
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
|
-
Requires-Dist: mmif-python==1.5.
|
|
16
|
+
Requires-Dist: mmif-python==1.5.1
|
|
17
17
|
Requires-Dist: Flask>=2
|
|
18
18
|
Requires-Dist: Flask-RESTful>=0.3.9
|
|
19
19
|
Requires-Dist: gunicorn>=20
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Prepare release artifacts for the clams-python package.
|
|
3
|
+
|
|
4
|
+
Run while preparing a release PR, passing the version being released::
|
|
5
|
+
|
|
6
|
+
python build-tools/prep_release.py X.Y.Z
|
|
7
|
+
|
|
8
|
+
Currently this adds a row to ``documentation/target-versions.csv`` for
|
|
9
|
+
the release version. The ``mmif-python`` column is read from this
|
|
10
|
+
package's pinned dependency in ``pyproject.toml``, and the target MMIF
|
|
11
|
+
spec version from the installed ``mmif.__specver__``. This script is the
|
|
12
|
+
single place that writes the target-versions table; the docs build only
|
|
13
|
+
renders it, and CI verifies (on the release PR) that a row for the PR's
|
|
14
|
+
version exists.
|
|
15
|
+
|
|
16
|
+
Requires an editable install (``pip install -e .``) so that
|
|
17
|
+
``mmif.__specver__`` is importable.
|
|
18
|
+
"""
|
|
19
|
+
import argparse
|
|
20
|
+
import re
|
|
21
|
+
import sys
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
|
|
24
|
+
PROJECT_ROOT = Path(__file__).parent.parent
|
|
25
|
+
CSV_PATH = PROJECT_ROOT / 'documentation' / 'target-versions.csv'
|
|
26
|
+
PYPROJECT_PATH = PROJECT_ROOT / 'pyproject.toml'
|
|
27
|
+
|
|
28
|
+
VERSION_RE = re.compile(r'^\d+\.\d+\.\d+$')
|
|
29
|
+
TOP_ROW_RE = re.compile(r'`(\d+\.\d+\.\d+) <')
|
|
30
|
+
MMIF_PIN_RE = re.compile(r'mmif-python\s*==\s*(\d+\.\d+\.\d+)')
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _row(version, mmif_ver, specver):
|
|
34
|
+
return (
|
|
35
|
+
f'`{version} <https://pypi.org/project/clams-python/{version}/>`__,'
|
|
36
|
+
f'`{mmif_ver} <https://pypi.org/project/mmif-python/{mmif_ver}/>`__,'
|
|
37
|
+
f'`{specver} <https://mmif.clams.ai/{specver}/>`__'
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _version_tuple(v):
|
|
42
|
+
return tuple(int(x) for x in v.split('.'))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _top_version(data_lines):
|
|
46
|
+
if not data_lines:
|
|
47
|
+
return None
|
|
48
|
+
m = TOP_ROW_RE.match(data_lines[0])
|
|
49
|
+
return m.group(1) if m else None
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _pinned_mmif_version():
|
|
53
|
+
m = MMIF_PIN_RE.search(PYPROJECT_PATH.read_text())
|
|
54
|
+
if not m:
|
|
55
|
+
sys.exit("Error: could not find a pinned 'mmif-python==X.Y.Z' "
|
|
56
|
+
"dependency in pyproject.toml.")
|
|
57
|
+
return m.group(1)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def main():
|
|
61
|
+
parser = argparse.ArgumentParser(
|
|
62
|
+
description="Prepare release artifacts for clams-python."
|
|
63
|
+
)
|
|
64
|
+
parser.add_argument(
|
|
65
|
+
"version", metavar="X.Y.Z",
|
|
66
|
+
help="the release version being prepared",
|
|
67
|
+
)
|
|
68
|
+
args = parser.parse_args()
|
|
69
|
+
version = args.version
|
|
70
|
+
|
|
71
|
+
if not VERSION_RE.match(version):
|
|
72
|
+
sys.exit(f"Error: '{version}' is not a valid X.Y.Z version.")
|
|
73
|
+
|
|
74
|
+
mmif_ver = _pinned_mmif_version()
|
|
75
|
+
try:
|
|
76
|
+
import mmif
|
|
77
|
+
specver = mmif.__specver__
|
|
78
|
+
except (ImportError, AttributeError):
|
|
79
|
+
sys.exit("Error: cannot read mmif.__specver__. "
|
|
80
|
+
"Run `pip install -e .` first.")
|
|
81
|
+
|
|
82
|
+
lines = CSV_PATH.read_text().splitlines()
|
|
83
|
+
header, data = lines[0], lines[1:]
|
|
84
|
+
top = _top_version(data)
|
|
85
|
+
|
|
86
|
+
if top is not None and _version_tuple(version) < _version_tuple(top):
|
|
87
|
+
sys.exit(f"Error: {version} is older than the current top row "
|
|
88
|
+
f"{top}; refusing to insert an out-of-order version.")
|
|
89
|
+
|
|
90
|
+
new_row = _row(version, mmif_ver, specver)
|
|
91
|
+
if top == version:
|
|
92
|
+
data[0] = new_row # update in place
|
|
93
|
+
action = "updated"
|
|
94
|
+
else:
|
|
95
|
+
data.insert(0, new_row) # prepend as the new latest
|
|
96
|
+
action = "added"
|
|
97
|
+
|
|
98
|
+
CSV_PATH.write_text('\n'.join([header] + data) + '\n')
|
|
99
|
+
print(f"target-versions.csv: {action} row {version} "
|
|
100
|
+
f"-> mmif-python {mmif_ver}, MMIF spec {specver}")
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
if __name__ == "__main__":
|
|
104
|
+
main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clams-python
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.1
|
|
4
4
|
Summary: A collection of APIs to develop CLAMS app for python
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: homepage, https://clams.ai
|
|
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
13
13
|
Requires-Python: >=3.10
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
|
-
Requires-Dist: mmif-python==1.5.
|
|
16
|
+
Requires-Dist: mmif-python==1.5.1
|
|
17
17
|
Requires-Dist: Flask>=2
|
|
18
18
|
Requires-Dist: Flask-RESTful>=0.3.9
|
|
19
19
|
Requires-Dist: gunicorn>=20
|
|
@@ -12,9 +12,11 @@ pyproject.toml
|
|
|
12
12
|
.github/workflows/issue-close.yml
|
|
13
13
|
.github/workflows/issue-infra-project.yml
|
|
14
14
|
.github/workflows/publish.yml
|
|
15
|
+
.github/workflows/release-check.yml
|
|
15
16
|
build-tools/build.py
|
|
16
17
|
build-tools/clean.py
|
|
17
18
|
build-tools/docs.py
|
|
19
|
+
build-tools/prep_release.py
|
|
18
20
|
build-tools/publish.py
|
|
19
21
|
build-tools/test.py
|
|
20
22
|
clams/__init__.py
|
|
@@ -14,8 +14,6 @@ import datetime
|
|
|
14
14
|
import inspect
|
|
15
15
|
import json
|
|
16
16
|
import os
|
|
17
|
-
import re
|
|
18
|
-
import shutil
|
|
19
17
|
import subprocess
|
|
20
18
|
import sys
|
|
21
19
|
from pathlib import Path
|
|
@@ -196,24 +194,6 @@ def generate_jsonschema(app):
|
|
|
196
194
|
json.dump(schema_dict, f, indent=2)
|
|
197
195
|
|
|
198
196
|
|
|
199
|
-
def update_target_spec(app):
|
|
200
|
-
target_vers_csv = Path(__file__).parent / 'target-versions.csv'
|
|
201
|
-
version = _get_version('clams-python')
|
|
202
|
-
# Skip dev/dummy versions to avoid dirtying the git-tracked CSV
|
|
203
|
-
if 'dev' in version or not re.match(r'^\d+\.\d+\.\d+$', version):
|
|
204
|
-
return
|
|
205
|
-
mmifver = mmif.__version__
|
|
206
|
-
specver = mmif.__specver__
|
|
207
|
-
with open(target_vers_csv) as in_f, open(f'{target_vers_csv}.new', 'w') as out_f:
|
|
208
|
-
lines = in_f.readlines()
|
|
209
|
-
if not lines[1].startswith(f"`{version}"):
|
|
210
|
-
lines.insert(1, f"`{version} <https://pypi.org/project/clams-python/{version}/>`__,`{mmifver} <https://pypi.org/project/mmif-python/{mmifver}/>`__,`{specver} <https://mmif.clams.ai/{specver}/>`__\n")
|
|
211
|
-
for line in lines:
|
|
212
|
-
out_f.write(line)
|
|
213
|
-
shutil.move(out_f.name, in_f.name)
|
|
214
|
-
|
|
215
|
-
|
|
216
197
|
def setup(app):
|
|
217
198
|
app.connect('builder-inited', generate_whatsnew_rst)
|
|
218
199
|
app.connect('builder-inited', generate_jsonschema)
|
|
219
|
-
app.connect('builder-inited', update_target_spec)
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"``clams-python`` version","``mmif-python`` version","Target MMIF Specification"
|
|
2
|
+
`1.7.1 <https://pypi.org/project/clams-python/1.7.1/>`__,`1.5.1 <https://pypi.org/project/mmif-python/1.5.1/>`__,`1.2.0 <https://mmif.clams.ai/1.2.0/>`__
|
|
3
|
+
`1.7.0 <https://pypi.org/project/clams-python/1.7.0/>`__,`1.5.0 <https://pypi.org/project/mmif-python/1.5.0/>`__,`1.2.0 <https://mmif.clams.ai/1.2.0/>`__
|
|
4
|
+
`1.6.0 <https://pypi.org/project/clams-python/1.6.0/>`__,`1.4.0 <https://pypi.org/project/mmif-python/1.4.0/>`__,`1.1.1 <https://mmif.clams.ai/1.1.1/>`__
|
|
5
|
+
`1.5.0 <https://pypi.org/project/clams-python/1.5.0/>`__,`1.3.1 <https://pypi.org/project/mmif-python/1.3.1/>`__,`1.1.0 <https://mmif.clams.ai/1.1.0/>`__
|
|
6
|
+
`1.4.0 <https://pypi.org/project/clams-python/1.4.0/>`__,`1.2.1 <https://pypi.org/project/mmif-python/1.2.1/>`__,`1.1.0 <https://mmif.clams.ai/1.1.0/>`__
|
|
2
7
|
`1.3.3 <https://pypi.org/project/clams-python/1.3.3/>`__,`1.1.2 <https://pypi.org/project/mmif-python/1.1.2/>`__,`1.1.0 <https://mmif.clams.ai/1.1.0/>`__
|
|
3
8
|
`1.3.2 <https://pypi.org/project/clams-python/1.3.2/>`__,`1.1.1 <https://pypi.org/project/mmif-python/1.1.1/>`__,`1.1.0 <https://mmif.clams.ai/1.1.0/>`__
|
|
4
9
|
`1.3.1 <https://pypi.org/project/clams-python/1.3.1/>`__,`1.0.19 <https://pypi.org/project/mmif-python/1.0.19/>`__,`1.0.5 <https://mmif.clams.ai/1.0.5/>`__
|
|
@@ -50,4 +55,4 @@
|
|
|
50
55
|
`0.1.7 <https://pypi.org/project/clams-python/0.1.7/>`__,`0.2.2 <https://pypi.org/project/mmif-python/0.2.2/>`__,`0.2.1 <https://mmif.clams.ai/0.2.1/>`__
|
|
51
56
|
`0.1.6 <https://pypi.org/project/clams-python/0.1.6/>`__,`0.2.1 <https://pypi.org/project/mmif-python/0.2.1/>`__,`0.2.1 <https://mmif.clams.ai/0.2.1/>`__
|
|
52
57
|
`0.1.5 <https://pypi.org/project/clams-python/0.1.5/>`__,`0.2.1 <https://pypi.org/project/mmif-python/0.2.1/>`__,`0.2.1 <https://mmif.clams.ai/0.2.1/>`__
|
|
53
|
-
`0.1.4 <https://pypi.org/project/clams-python/0.1.4/>`__,`0.2.1 <https://pypi.org/project/mmif-python/0.2.1/>`__,`0.2.1 <https://mmif.clams.ai/0.2.1/>`__
|
|
58
|
+
`0.1.4 <https://pypi.org/project/clams-python/0.1.4/>`__,`0.2.1 <https://pypi.org/project/mmif-python/0.2.1/>`__,`0.2.1 <https://mmif.clams.ai/0.2.1/>`__
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/.dockerignore.template
RENAMED
|
File without changes
|
|
File without changes
|
{clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/Containerfile.template
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/app/requirements.txt.template
RENAMED
|
File without changes
|
{clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/gha/for-clams-team.md.template
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/gha/workflows/publish.yml.template
RENAMED
|
File without changes
|
{clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/utl-tf/__init__.py.template
RENAMED
|
File without changes
|
{clams_python-1.7.0 → clams_python-1.7.1}/clams/develop/templates/utl-tf/timeframe.py.template
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|