This is a minor release that brings improved portability of clams source
command but also breaks some backward compatibility. If your app is based on clams-python 1.0.x or 1.1.x, please read the changelog carefully.
clams source
command now work on Windows shell. The paths still, though, have to be POSIX path. We have no plan to support Windows path forfile://
URI in MMIF at the moment.ClamsApp.sign_view
method now expect the runtime parameters (dict of string to lists of values) as a second argument. Previously the second argument was optional, which is no more. CLAMS app developers who were calling this method in_annotate()
method must directly pass down the runtime parameters from_annotate()
argument.
Minor release to update the mmif-python
dependency to the latest.
- now based on
mmif-python==1.0.13
including a hotfix for a wrong field name in MMIF serialization.
Hot-fix to fix some compatibility issues in the app develop template
- reverted some changes from 3ed54b3 due to broken backward compatibility
This release includes many changes regarding runtime parameters.
- updated to latest mmif-python and added support for
views[].metadata.appConfiguration
field added in MMIF 1.0.4 (#166) - initial implementation of
map
type parameters to provide (limited) support for complex data types. At the moment,map
type parameters are expected to be parsed into string-to-string dictionary. See the metadata jsonscheme for the full documentation (#197) - input and output type specifications in app metadata now can carry some additional "comments" from the developer (#200)
- passed values to
multivalued=True
parameters has been interpreted as lists but default values weren't. Now it's fixed. (related to #197 as well, sincetype=map
impliesmultivalued=True
) - input and output type properties can be (under-)specified as wildcards (#194)
This is a minor release to catch up new version of MMIF and mmif-python
.
- updated to latest mmif-python (and MMIF 1.0.2)
- small updates in API documentation regarding I/O spec in app metadata
This release updates to the latest MMIF and mmif-python
- Now based on
mmif-python
1.0.9 and MMIF 1.0.1
This release contains minor fixes in code and updates in documentations regarding changes in runtime parameter in the previous 1.1.0 release.
- fixed broken links in the main repo README
- fixed outdated information regarding usage of
get_configuration
in various documentation - fixed
properties
in I/O specification in AppMetadata are unfairly restricted tostr
values
This is a minor-level release that fixes various bugs and adds safeguards for possible inconsistency in output MMIFs.
sign_view
now use user input parameters "as-is" whenever they are available (#181)- apps will conduct JSON validation right before it responses with MMIF output (#179)
clams rewind
is now available to rewind MMIF files (#190)
$ clams rewind --help
usage: clams rewind [-h] [-o PATH] [-p] [-n NUMBER] [-m {app,view}] mmif_file
provides CLI to rewind a MMIF from a CLAMS pipeline.
MMIF rewinder rewinds a MMIF by deleting the last N views.
N can be specified as a number of views, or a number of producer apps.
positional arguments:
mmif_file Path to the input MMIF file, or '-' to read from stdin.
optional arguments:
-h, --help show this help message and exit
-o PATH, --output PATH
Path to the rewound MMIF output file. When not given, the rewound MMIF is printed to stdout.
-p, --pretty Pretty-print rewound MMIF. True by default
-n NUMBER, --number NUMBER
Number of views to rewind (default: interactive mode)
-m {app,view}, --mode {app,view}
Number of views to rewind (default: interactive mode)
- pre-built base container images will take less space (#186)
- apps running in production mode (over gunicorn) now logs to stdout (#183)
- fixed a bug in app metadata generation (#187)
Minor release to update small issues in the app develop template.
metadata.py
from the template now includes universal parameters when printing out the app metadata.
Minor release to update mmif-python
version
- updated to
mmif-python==1.0.8
- enabled a python logger for clams-apps as
self.logger
This release includes a bugfix and update to the latest mmif-python
- now based on
mmif-python==1.0.7
- fixed some runtime parameters' default values not correctly casted (#173 )
Minor release to update mmif-python
version
- updated to
mmif-python==1.0.5
Minor release to update mmif-python
version
- updated to
mmif-python==1.0.5
This release include many updates to documentation, and clams source --scheme
flag.
--scheme
flag is added toclams source
CLI to generate MMIF with arbitrary URI scheme for document locations (#163, also see clamsproject/mmif-python#223)
- CLAMS app development documentation is updated with more details, clarification and a up-to-date tutorial (#165)
- added validation step for parameters with fixed options (#164)
This release include minor bug fixes.
- fixed #154
- fixed #155
This release is a minor patch; see below.
- fixed a filename bug that prevented some files from being copied to a newly generate app template.
This release is about updating to mmif-python==1.0.1
, which is based on MMIF 1.0.0.
- uses
mmif-python==1.0.1
- updated some names for upcoming pedantic v2 update
This release will be numbered as 1.0.0, but indeed it's a minor update from 0.6.3.
clams develop
now can select recipes to "install". Currently only two are supported (app
andgha
). Havinggha
separated enables developers of existing apps to update GHA workflows only when there's a new feature or fix in the workflows.
$ clams develop --help
usage: clams develop [-h] [-r RECIPES [RECIPES ...]] -n NAME [-p [PATH]]
provides CLI to create a skeleton code for app development
Available recipes:
- app: Skeleton code for a CLAMS app
- gha: GtiHub Actions workflow files specific to `clamsproject` GitHub organization
optional arguments:
-h, --help show this help message and exit
-r RECIPES [RECIPES ...], --recipes RECIPES [RECIPES ...]
Pick recipes to bake. DEFAULT: ['app', 'gha']
-n NAME, --name NAME The name of the directory where the baked app skeleton is placed. This name is also used to generate 1) Python class name of the app, 2) values for `name` and `identifier` fields in app-metadata, based on heuristic tokenizing and casing rules. RECOMMENDATION: only use lower case alpha-
numerics, do not use whitespace, use dash (`-`) character instead for word boundaries, always check for the generated names and make changes if they are incorrect. NOTE: if the name starts with `app-` or ends with `-app`, those affixes will be removed from Python class name and app
identifier, but will be retained in the directory name. (e.g. `app-foo-bar-app` will be converted to `FooBar` for class name, `foo-bar-app` for app identifier, and `app-foo-bar-app` for directory name.)
-p [PATH], --parent-dir [PATH]
The name of the parent directory where the app skeleton directory is placed. (default: current directory)
- "generic" readme file in the app template is replaced with a link to the generic user manual (soon be) published to
apps.clams.ai
. - now based on
mmif-python
and MMIF 1.0.0.
This is a minor release
- a new base container image with jdk8 is added
- protocol string used in the base url to generate app identifiers is now reverted back to
http
fromhttps
for consistency (all documentations of ours are usinghttp
in the base URL in any URI/IRI field).
This release includes all the clamsproject
-specific GHA workflow files in the PyPI distribution.
- fixed GHA workflow files were missing in the sdist uploaded to PyPI (#143)
This release is based on a new version of mmif-python
0.5.2. Additionally, this release includes significant updates in documentation both in sphinx API documentation (website) and app starter-kit documentation, huge upgrades in GHA workflows in app-dev template, and finally small (but critical) bug fixes.
- app directory registration GHA workflow is added to the app development template. (#134)
- documentation of
clamsproject
-specific GHA workflows included in the app-dev template.
- now using
mmif-python==0.5.2
. - major updates in the documentation website (API doc by sphinx) to include recent changes in app metadata, I/O specs, runtime parameters, as well as
clams
CLI. (#140) - fixed app-dev templated wasn't really included in the pypi distribution. (#132)
- fixed app version generator crashed when
git
cmd not found (in a container). (#139) - fixed
@
sign wasn't properly serialized frommetadata.py
.
This release contains big changes and new features, including "breaking" ones. All CLAMS apps using clams-python==0.5.*
are recommended to update to this release.
- added
clams develop
CLI and made help messages for CLI more informative (#119, #116)clams develop
creates a scaffolding code for starting development of a new CLAMS app. Here's the argument structure;
$ clams develop --help
usage: clams develop [-h] [-r {app}] [--no-github-actions] -n NAME [-p [PATH]]
optional arguments:
-h, --help show this help message and exit
-r {app}, --recipe {app}
Pick a recipe to use. Currently `app` is the only option, hence there's no need to use the flag at all.
--no-github-actions The cookiecutter by default assumes that the app codebase will be hosted on `github.com/clamsproejct`,and add pre-shipped github actions for
the `clamsproject` organization setup to the skeleton codebase.Use this options to disable this behavior.
-n NAME, --name NAME The name of the directory where the baked app skeleton is placed. This name is also used to generate1) Python class name of the app, 2) values
for `name` and `identifier` fields in app-metadata, based on heuristic tokenizing and casing rules. RECOMMENDATION: only use lower case ASCII
alpha-numerics,do not use whitespace, use dash (`-`) character instead for word boundaries, always check for the generated names and make
changes if they are incorrect.
-p [PATH], --parent-dir [PATH]
The name of the parent directory where the app skeleton directory is placed. (default: current directory)
- Prebuilt containers are now also available as arm64 images. (#126)
- In the
input
specification in app-metadata, developers can now add a list of specification. A nested list in theinput
list should be interpreted as "OR" condition. (#77) - In the
parameters
specification in app-metadata, developers can specify if a parameter can have multiple values, using themultivalued
key.- When a parameter key is passed twice or more (with different values) in one POST request, if the parameter is multivalued, all values are aggregated into a list and passed to
_annotate
method. Otherwise, only the first value will be passed. (#122)
- When a parameter key is passed twice or more (with different values) in one POST request, if the parameter is multivalued, all values are aggregated into a list and passed to
- In addition to
_appmetadata()
method, more ways for writing app-metadata are added. (#117)- the metadata is read from 1)
metadata.py
(recommended way), then 2)metadata.json
, and then finally 3)_appmetadata()
method. This change is made for future development of the app-directory.
- the metadata is read from 1)
app_version
value in the app-metadata is now automatically generated from local git information and developers should not manually set this value. (#114)identifier
value in the app-metadata is now automatically expanded intohttps://apps.clams.ai/XXX
URI format, hence developers now only need to set theXXX
part in the app-metadata.- All the changes related to app-metadata are reflected in the scaffolding code template, hence developers are encouraged to update existing apps using
clams develop
command. - updated to use MMIF 0.5.0 and
mmif-python==0.5.1
.- The big change in the MMIF 0.5.0 is the change in the CLAMS vocab type versioning scheme. And as now the responsibility of vocab type version checking is pushed down to the
mmif-python
library,clams-python
no longer checks any version numbers in an input MMIF file. - FYI, here's how vocab type versions are "checked" when comparing two
AnnotationTypes.SomeType
enum-like objects: https://github.com/clamsproject/mmif-python/blob/88040395b7349f49058a9bf315628bed426e3d51/templates/python/vocabulary/base_types.txt#L152-L166
- The big change in the MMIF 0.5.0 is the change in the CLAMS vocab type versioning scheme. And as now the responsibility of vocab type version checking is pushed down to the
This release includes update to the latest MMIF / mmif-python
, and big improvements on handling runtime parameters.
- undefined parameters now trigger warnings, not errors, utilizing new
warnings
field in MMIF 0.4.2 (#101 , #106)
- removed usages of deprecated "freezing" behavior of MMIF objects (#109)
- fixed bugs around setting default values for
bool
type runtime parameters (#111)
This release contains updates of the python version (#102) and "uncapping" of python dependencies (#89), and a small update in handling pretty
(and future "universal") parameter (#99).
This release contains fixes in the development pipelines (#97 ) and dependency ( #95).
This release contains changes in AppMetadata
scheme and bug fix in Restifier
.
- Non-boolean parameter values passed via query strings are now properly casted to python data types (#84)
url
,dependencies
andmore
fields are added to app metadata scheme (#79, #83)- Some app metadata fields are renamed (#80)
license
->app_license
wrappee_version
->analyzer_version
wrappee_license
->analyzer_license
This release includes bug fixes from mmif-python package, loosened ML library versions in docker images.
This release contains various fixes and improvements.
- updated mmif-python to 0.4.4
- (added) C
lamsApp.get_configuration
will convert runtime parameters into actual runtime configuration that the app uses. This will help signing view. - (fixed) Crash when
sign_view
with non-string parameter values - (changed) MMIF with error is always prettified when returned as HTTP response
- (fixed) Adding duplicate input/output should not be allowed
- (changed)
AppMetadata.add_parameter
now has a proper signature for IDE hints
This release contains bugfixes
- fixed clams-python only worked on python==3.6
- fixed clams CLI not properly displaying help msg
- updated latest mmif-python
This release includes minor API improvement ...
sign_view
now does not require runtime parameters (defaults to empty)AppMetadata
class can be imported fromclams
package directly
This release includes
- input MMIF file compatibility check (#60 )
- upgrade to mmif-python 0.4.x, which includes a lots of breaking changes.
This new breaking release includes ...
- definition and implementation of app metadata as JSON schema (#49, #50, #51, #52)
- adding server for production environment (based on gunicorn, #59 )
- changing HTTP code for error responses to 500 (#61 )
- and minor bugfixes
This release includes small updates of error handling matching updates on mmif-python side.
A new release includes
- signing method for an app (#48, #40)
- (premature) error stamping (#55, #36)
- smaller docker images (#54)
- and other minor bugfixes
- based on mmif-python 0.3.1 patch
- more documentation
- more pre-built docker images
- interpretation of HTTP parameters into python API arguments
- dependency for lapps/LIF
This version now based on mmif-python
0.3.0, which is based on MMIF spec 0.3.0. It doesn't have breaking changes, but due to the new dependency to mmif-python
0.3.0, it might break some apps. Please report here if it breaks your code.
This PR contains many breaking changes, so when merged, we release as 0.2.0
.
- renamed
Clams.serve
->Clams.app
(#35)ClamsApp::setupmetadata
->ClamsApp::_appmetadata
(#37)ClamsApp::annotate
->ClamsApp::_annotate
(#37)
- removed
ClamsApp::sniff
(#37)- PUT requests
- changes
- POST requests now invoke
annotate
instead of retiredsniff
method (#37) - prototype of parameter passing (#29, #37)
- added HTTP response codes for errors during
annotate
(#33, #36) - refactored CLI components (currently only one CLI (
source
) implemented) clams source
CLI now supports custom directory prefix (#31)- added
ClamsApp::validate_document_files
(not supporting integrity check such as MD5 yet) (clamsproject/mmif#150)
- POST requests now invoke
0.1.3 includes;
clams
CLIclams source
command- replacement of
appmetadata
withsetupmetadata
inClamsApp
ABC