Release Notes — Slicer Package Manager 0.1.0 documentation

# Release Notes

This is the list of Slicer Package Manager changes between each release. For full details, see the commit logs at https://github.com/girder/slicer_package_manager

## Next Release

### Internal

- Require Python >= 3.7 for both python client and server.

- Update development status to `Production/Stable`.

- Vendorize `bson.objectid` from PyMongo to support installing the client alongside the server and workaround incompatibilities between standalone `bson` package and the one provided by PyMongo.

#### Python Client

- Support publishing python client sdist and wheel named `slicer-package-manager-client`.

## 0.6.0

### New Features

- Support listing extension with a `query` parameter specifying the text expected to be found in the extension name or description.

### Bug fixes

#### Server

- Fix creation of extension in private application.

- Ensure user or administrator errors associated with API endpoints are displayed and associated with HTTP error code 400 by raising a `RestException` instead of a generic `Exception`.

- Update API endpoint GET /app/{app_id}/extension to always check user credentials.

## 0.5.0

### New Features

- Require version information to be specified when uploading application packages. See #97.

- Add application package `build_date` metadata. User may specify a custom value formatted as a datetime string using the API endpoint or the python client. Default is set to current date and time.

#### Server

- Automatically update `release` metadata when packages are moved (or copied) between draft and release folders.

- Add convenience functions `slicer_package_manager.utilities.isApplicationFolder()`, `slicer_package_manager.utilities.isReleaseFolder()` and `slicer_package_manager.utilities.isDraftReleaseFolder()`.

- Add `slicer_package_manager.utilities.getReleaseFolder()` and simplify update of `downloadStats` release metadata to use the new function.

### Bug fixes

- Remove partially implemented `codebase` metadata.

- Remove support for unused `packagetype` metadata.

### Tests

- ExternalData:

  - Fix re-download of files if checksum does not match.

  - Re-factor fixture introducing `downloadExternals`.

## 0.4.0

### New Features

- Support querying application packages given a release name. See #96.

### Bug fixes

#### Server

- Ensure permissions are consistently checked in API endpoints implementation. See #95.

- Fix support for unauthenticated use of public API endpoints. See #95.

## 0.3.0

### Bug fixes

#### Server

- Update implementation of `GET /app/:app_id/package` endpoint to properly handle `limit=0` parameter. See #94.

### Documentation

- Add documentation to `slicer_package_manager.utilities.getOrCreateReleaseFolder()`.

## 0.2.0

### Bug fixes

#### Server

- Update access level of API endpoints. See #89.

  - Creating or updating packages now always require credentials.

  - Retrieving list of applications, releases and packages are now public. Note that credentials are still required to retrieve data associated with private applications.

#### Python Client

- Fix handling of `--public`, `--all` and `--pre_release` flags. See #85.

- Update `draft list` command to support `--limit` argument. See #82.

### Documentation

- Add maintainer documentation along with Making a release section.

- Improve description of `limit` in `slicer_package_manager_client.SlicerPackageClient.listExtension()` and `slicer_package_manager_client.SlicerPackageClient.listApplicationPackage()`. See #84.

### Tests

- Simplify and refactor python client tests to facilitate maintenance. See #83 and #88.

## 0.1.0

### New Features

- Transition server plugin from Girder 2.x to Girder 3.x. See #88.

## Initial version

Developed by @Pierre-Assemat during his internship at Kitware in 2018.

### Features

- Girder plugin implementing REST API endpoints.

- CLI slicer_package_manager_client

- Python client class `SlicerPackageClient`.

### Documentation

- Administrator, user and developer documentation written in reStructuredText (RST), generated using sphinx and published at https://slicer-package-manager.readthedocs.io

### Tests

- Continuous integration (CI) configured to run on CircleCI.

- Girder plugin tests.

- CLI and Python client tests leveraging pytest-vcr.

### Provisioning

- Dockerfile and docker-compose files for provisioning a demo server.