Skip to content

Release Notes

0.2.5 [2025-12-16]

Maintenance:

  • Updated base Docker image from flywheel/python:3.12-main to flywheel/python:3.12-wolfi-build
  • Removed musl-dev dependency from Dockerfile
  • Added latest.sse.flywheel.io to linkcheck ignore list in pre-commit configuration

0.2.4 [2025-07-23]

Fixes:

  • Fixed issue where tasks without an associated file were incorrectly discarded, allowing form responses attached to non-file level containers to be exported

Maintenance:

  • Migrated from poetry to uv for dependency management

Documentation:

  • Added note about support for form responses not associated with files in versions 0.2.4 and above

0.2.3 [2025-07-17]

Enhancements:

  • Configured httpx logger to use WARNING level by default to reduce log verbosity when not in DEBUG mode

0.2.2 [2025-06-10]

Enhancements:

  • Output CSV columns now ordered by Flywheel hierarchy for improved readability and consistency

Fixes:

  • Fixed column ordering in annotations export to maintain consistent hierarchy-based sequence

Maintenance:

  • Updated jupyter-core to address security vulnerability
  • Updated python from 3.12.10 to 3.12.11

0.2.1 [2025-05-21]

Maintenance:

  • Updated tornado to address vulnerability

0.2.0 [2025-05-19]

Enhancements:

  • Added VALIDATE_CLASSIFICATION flag to CI configuration

Maintenance:

  • Migrated from flywheel-gear-toolkit to fw-gear library
  • Updated fw-client from 0.8.2 to 2.1.1
  • Updated flywheel-sdk from 18.5.0 to 20.1.4
  • Upgraded Dockerfile base image from flywheel/python:3.12-alpine to flywheel/python:3.12-main
  • Refactored Dockerfile to use multi-stage builds with base, build, dev, and final production stages
  • Migrated Dockerfile package installation from pip to uv pip
  • Updated .gitlab-ci.yml reference from specific SHA to sse branch
  • Updated .pre-commit-config.yaml reference from specific SHA to sse branch
  • Added requirements-dev.txt to .dockerignore
  • Removed numpy as a direct dependency (now transitive via pandas)
  • Enhanced type annotations throughout codebase with explicit type hints

Documentation:

  • Fixed markdown formatting and line length compliance (88 character limit) across README.md, CONTRIBUTING.md, TODO.md, and FAQ.md
  • Added missing heading to FAQ.md
  • Enabled markdownlint pre-commit hook
  • Updated release notes format in docs/release_notes.md

0.1.6 [2025-04-16]

Enhancements:

  • Added numpy as an explicit dependency to pyproject.toml
  • Added USER flywheel directive to Dockerfile for improved container security

Fixes:

  • Fixed handling of tasks where files are not found, preventing crashes during data collection
  • Fixed error handling in get_file() to return empty dict instead of None when file is not found
  • Fixed error handling in get_task() to return empty dict instead of None when task is not found
  • Added validation to skip tasks with missing file names in add_task_n_file_info()
  • Added fallback to prevent crashes when file metadata lookup fails

Maintenance:

  • Migrated from python 3.9 to 3.12
  • Migrated from Debian-based Docker image to Alpine Linux (flywheel/python:3.12-alpine)
  • Updated pandas constraint from ^2.0.3 to ^2 in pyproject.toml
  • Removed APT_INSTALL variable from .gitlab-ci.yml
  • Updated ruff configuration by removing --ignore E501 argument
  • Removed blank line in run.py import section
  • Enhanced API error handling with specific NotFound exception catching
  • Improved logging for task and file access errors

0.1.5 [2024-08-06]

Fixes:

  • Added handling for files that have been moved out of their original parent container

Maintenance:

  • Upgraded python from 3.8 to 3.9
  • Updated pandas to ^2.0.3
  • Updated fw-client to ^0.8.2
  • Updated flywheel-sdk to ^18.5.0
  • Updated flywheel-gear-toolkit to ^0.6.18
  • Updated Dockerfile base image to python:3.9.19-slim-bullseye
  • Migrated from black and isort to ruff for code formatting and linting
  • Removed deprecated hadolint and added additional pre-commit hooks
  • Removed connect_timeout parameter from FWClient initialization
  • Added error handling for annotations that cannot be accessed due to permissions
  • Updated test data files with formatted JSON for better readability

0.1.4 [2024-03-07]

Enhancements:

  • Added read_timeout configuration option with default value of 60 seconds for handling larger API calls (previous constant timeout was 15 seconds)
  • Added data.frameIndex field support for multiframe DICOM files in annotations export

Fixes:

  • Fixed column mismatch errors in annotations export by ensuring only columns present in both the generated dataframe and the column mapping are exported

Maintenance:

  • Updated FWClient initialization to use configurable read_timeout and connect_timeout parameters
  • Added requests.exceptions.ConnectionError and TimeoutError exception handling with improved error messaging
  • Enhanced parse_config() to enforce minimum read_timeout value of 60 seconds
  • Updated validate_config() to verify read_timeout is at least 60 seconds
  • Updated test suite to include read_timeout parameter in all test cases

Documentation:

  • Added read_timeout configuration option documentation to README

0.1.3 [2024-03-05]

Enhancements:

  • Added support for Annotate (Arrow) and Bidirectional annotation tool types
  • Added ShortestDiameter and LongestDiameter properties for Bidirectional annotations
  • Added perpendicular segment coordinates (perp_minX, perp_maxX, perp_minY, perp_maxY) for Bidirectional annotations

Fixes:

  • Added warning when acquisition containers have no files and continue processing remaining annotations

Maintenance:

  • Added poetry.toml to .gitignore

0.1.1 [2023-11-13]

Fixes:

  • Modified the get_sdk_client function to use api_client.config.api_key to get the currently used key rather than client.auth_status.info.api_key.key which can only use the Legacy Key from the logged in user

Maintenance:

  • Added build-essential=12.6 to Dockerfile dependencies

Documentation:

  • Fixed typo: "Retreiving" corrected to "Retrieving" throughout README
  • Clarified usage limitations of OHIF Viewer form responses outside Reader Task workflow
  • Added DataView export option for retrieving form responses from session variables
  • Improved formatting and clarity in configuration parameter documentation
  • Fixed typo: "anexample" corrected to "an example"

0.1.0 [2023-10-27]

Enhancements:

  • Added table of contents navigation to README.md
  • Added example script for retrieving form responses from session variables when using ohif_config.json outside Reader Task Workflow
  • Improved file retrieval performance by implementing DataView-based file querying instead of iterating through individual files
  • Enhanced hierarchy label population to check for existing columns before making API calls, reducing unnecessary lookups

Fixes:

  • Fixed file.name column population to use existing name field when available
  • Corrected form responses scope configuration to only allow task and none values, removing invalid non-task and both options

Maintenance:

  • Downgraded python from 3.10.12 to 3.8.13
  • Updated pip from 23.0.1 to 22.0.4
  • Updated setuptools from 65.5.1 to 57.5.0

Documentation:

  • Converted configuration parameter lists from asterisk to dash formatting for consistency
  • Converted output column descriptions from asterisk to dash formatting
  • Added requirement note that Reader Task Workflow must be enabled on the instance
  • Added clarification about valid form-responses-scope configuration parameter combinations
  • Enhanced output section with examples for wide format conversion, merging form responses with annotations, and retrieving session variable form responses

0.0.6 [2023-09-06]

Fixes:

  • Fixed protocol_id filtering in /api/readertasks/project endpoint to remove unnecessary double-quotes
  • Corrected protocol lookup to use label parameter instead of name in /api/read_task_protocols endpoint

Maintenance:

  • Updated Python base image to version 3.10.12
  • Downgraded git package from 1:2.39.2-1.1 to 1:2.20.1-2+deb10u8
  • Removed build-essential from Docker image
  • Removed pip install --upgrade pip command from Dockerfile
  • Added PYVER: "3.8" variable to CI configuration
  • Enabled security scanning features in CI: SECURITY_SCANS_DISABLED, DEPENDENCY_SCANNING_DISABLED, LICENSE_MANAGEMENT_DISABLED, SAST_DISABLED, SECRET_DETECTION_DISABLED
  • Added environment variables to manifest.json for Python configuration

0.0.5 [2023-07-12]

Enhancements:

  • Include Flywheel API post and put functions for populating tasks from Jupyter Notebook: post_viewer_config, post_form, post_protocol, post_form_response, post_file_annotation, post_file_annotations, put_reader_task, put_protocol, batch_create_tasks
  • Impose that all references to the FWClient occur through the flywheel_api_helpers.py module
  • Enforce consistent "container-id-driven" interface for all functions in flywheel_api_helpers.py module
  • Add units of measure (e.g. mm) column in Annotations CSV
  • Add Session Timestamp column in Form Responses and Annotation CSVs
  • Add data_dictionary.csv on top level for both CSVs

Fixes:

  • Accounts for the protocol_id needing double-quotes in the /api/readertasks/project endpoint (but not container_ids)
  • Imposes f"parents.{parent_type}={parent_id}" as a filter where ever relevant
  • Replace deprecated log.warn with log.warning

Maintenance:

  • Updated base image from python:3.10-slim to pinned SHA digest
  • Updated git from 1:2.30.2-1+deb11u2 to 1:2.39.2-1.1
  • Added build-essential=12.9 package to Docker image
  • Updated python from ^3.10 to ^3.8
  • Updated pandas from ^2.0.1 to ^2.0.3
  • Updated flywheel-gear-toolkit from ^0.6.10 to ^0.6.11
  • Updated fw-client from ^0.5.0 to ^0.5.1
  • Updated flywheel-sdk from ^16.19.0 to ^17.0.0
  • Updated pytest from ^7.3.1 to ^7.4.0
  • Updated pytest-cov from ^4.0.0 to ^4.1.0
  • Updated pytest-mock from ^3.10.0 to ^3.11.1
  • Updated coverage from ^7.2.5 to ^7.2.7
  • Updated black from 22.3 to ^23.3.0
  • Updated packaging from 21.3 to ^23.1
  • Updated mypy from ^1.3.0 to ^1.4.1
  • Removed ipython dependency
  • Added error handling in get_task function to return None on client errors

Documentation:

  • Add docs folder
  • Add docs/release_notes.md
  • Add sample code in README for converting "narrow" to "wide" CSV format
  • Add sample code in README for merging the wide-formatted Form Responses and Annotation CSVs

0.0.4 [2023-06-06]

Enhancements:

  • Added Session Timestamp column to both form responses and annotations output CSV files
  • Added units of measurement to annotation exports (supports px, mm, degrees, and area measurements in px^2 or mm^2)
  • Added Angle measurement property to exported annotation data
  • Made protocol_name configuration parameter optional to support exporting non-task annotations and form responses

Documentation:

  • Expanded README.md with detailed usage instructions and configuration parameter validation rules
  • Added data dictionary (data_dictionary.csv) defining all CSV output columns
  • Added example Python code for converting narrow CSV format to wide format using pandas
  • Added example Python code for merging form responses and annotations CSV files
  • Documented supported annotation types (Ellipse, Circle, Rectangle, Freehand/Contour, Length, Angle)
  • Clarified gear level classification (Project, Subject, Session, Acquisition)
  • Updated column name descriptions in documentation to use human-readable format

0.0.3 [2023-05-25]

Enhancements:

  • Made protocol_name configuration parameter optional to support exporting non-task annotations without requiring a protocol
  • Added configuration validation via new validate_config() function to ensure valid combinations of protocol name, form responses scope, and annotations scope

Fixes:

  • Fixed handling of empty protocol_name by skipping protocol lookup and returning empty task lists when no protocol is specified
  • Fixed form responses export to only process when both form_responses_scope is set and a valid form_id exists

Maintenance:

  • Added unit tests for validate_config() function covering all valid and invalid configuration combinations
  • Added test case for running gear with empty protocol name

0.0.1 [2023-05-25]

Enhancements:

  • Added Form and Annotation Exporter gear to export form responses and annotations to CSV files
  • Added support for exporting task-associated and non-task-associated form responses
  • Added support for exporting task-associated and non-task-associated annotations
  • Added protocol name configuration to constrain exports to specific protocols
  • Added scope configuration options for controlling annotation and form response export behavior
  • Added session URL generation in exported CSV files for easy navigation
  • Added support for multiple annotation types including Length, EllipticalRoi, CircleRoi, RectangleRoi, FreehandRoi, and ContourRoi
  • Added support for NIfTI and DICOM image formats in annotation exports

Maintenance:

  • Added pandas >=2.0.1 dependency for DataFrame operations
  • Added flywheel-gear-toolkit >=0.6.10 for gear framework integration
  • Added fw-client >=0.5.0 for Flywheel API interactions
  • Added flywheel-sdk >=16.19.0 for Flywheel SDK support
  • Added python >=3.10 requirement
  • Added pre-commit configuration with hooks for gearcheck, poetry_export, docker_build, yamllint, black, isort, and pytest
  • Added GitLab CI configuration with PYTEST_COV_FAIL_UNDER set to 80
  • Added Docker configuration based on python:3.10-slim
  • Added git 1:2.30.2-1+deb11u2 system package for development

Documentation:

  • Added README.md with comprehensive usage instructions, input/output specifications, and CSV column descriptions
  • Added CONTRIBUTING.md with development setup, dependency management, and contribution guidelines
  • Added FAQ.md for frequently asked questions
  • Added TODO.md for tracking development tasks
  • Added merge request template with checklist for release notes, changelog, tests, and regression testing
  • Added MIT license