Release Notes
0.2.5 [2025-12-16]
Maintenance:
- Updated base Docker image from
flywheel/python:3.12-maintoflywheel/python:3.12-wolfi-build - Removed
musl-devdependency from Dockerfile - Added
latest.sse.flywheel.ioto 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
poetrytouvfor dependency management
Documentation:
- Added note about support for form responses not associated with files in versions
0.2.4and above
0.2.3 [2025-07-17]
Enhancements:
- Configured
httpxlogger to useWARNINGlevel by default to reduce log verbosity when not inDEBUGmode
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-coreto address security vulnerability - Updated
pythonfrom3.12.10to3.12.11
0.2.1 [2025-05-21]
Maintenance:
- Updated
tornadoto address vulnerability
0.2.0 [2025-05-19]
Enhancements:
- Added
VALIDATE_CLASSIFICATIONflag to CI configuration
Maintenance:
- Migrated from
flywheel-gear-toolkittofw-gearlibrary - Updated
fw-clientfrom0.8.2to2.1.1 - Updated
flywheel-sdkfrom18.5.0to20.1.4 - Upgraded Dockerfile base image from
flywheel/python:3.12-alpinetoflywheel/python:3.12-main - Refactored Dockerfile to use multi-stage builds with
base,build,dev, and final production stages - Migrated Dockerfile package installation from
piptouv pip - Updated
.gitlab-ci.ymlreference from specific SHA tossebranch - Updated
.pre-commit-config.yamlreference from specific SHA tossebranch - Added
requirements-dev.txtto.dockerignore - Removed
numpyas a direct dependency (now transitive viapandas) - 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, andFAQ.md - Added missing heading to
FAQ.md - Enabled
markdownlintpre-commit hook - Updated release notes format in
docs/release_notes.md
0.1.6 [2025-04-16]
Enhancements:
- Added
numpyas an explicit dependency topyproject.toml - Added
USER flywheeldirective toDockerfilefor 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 ofNonewhen file is not found - Fixed error handling in
get_task()to return empty dict instead ofNonewhen 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
python3.9to3.12 - Migrated from Debian-based Docker image to Alpine Linux (
flywheel/python:3.12-alpine) - Updated
pandasconstraint from^2.0.3to^2inpyproject.toml - Removed
APT_INSTALLvariable from.gitlab-ci.yml - Updated
ruffconfiguration by removing--ignore E501argument - Removed blank line in
run.pyimport section - Enhanced API error handling with specific
NotFoundexception 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
pythonfrom3.8to3.9 - Updated
pandasto^2.0.3 - Updated
fw-clientto^0.8.2 - Updated
flywheel-sdkto^18.5.0 - Updated
flywheel-gear-toolkitto^0.6.18 - Updated Dockerfile base image to
python:3.9.19-slim-bullseye - Migrated from
blackandisorttorufffor code formatting and linting - Removed deprecated
hadolintand added additional pre-commit hooks - Removed
connect_timeoutparameter fromFWClientinitialization - 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_timeoutconfiguration option with default value of 60 seconds for handling larger API calls (previous constant timeout was 15 seconds) - Added
data.frameIndexfield 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
FWClientinitialization to use configurableread_timeoutandconnect_timeoutparameters - Added
requests.exceptions.ConnectionErrorandTimeoutErrorexception handling with improved error messaging - Enhanced
parse_config()to enforce minimumread_timeoutvalue of 60 seconds - Updated
validate_config()to verifyread_timeoutis at least 60 seconds - Updated test suite to include
read_timeoutparameter in all test cases
Documentation:
- Added
read_timeoutconfiguration option documentation to README
0.1.3 [2024-03-05]
Enhancements:
- Added support for
Annotate(Arrow) andBidirectionalannotation tool types - Added
ShortestDiameterandLongestDiameterproperties forBidirectionalannotations - Added perpendicular segment coordinates (
perp_minX,perp_maxX,perp_minY,perp_maxY) forBidirectionalannotations
Fixes:
- Added warning when acquisition containers have no files and continue processing remaining annotations
Maintenance:
- Added
poetry.tomlto.gitignore
0.1.1 [2023-11-13]
Fixes:
- Modified the
get_sdk_clientfunction to useapi_client.config.api_keyto get the currently used key rather thanclient.auth_status.info.api_key.keywhich can only use the Legacy Key from the logged in user
Maintenance:
- Added
build-essential=12.6to 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.jsonoutside 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.namecolumn population to use existingnamefield when available - Corrected form responses scope configuration to only allow
taskandnonevalues, removing invalidnon-taskandbothoptions
Maintenance:
- Downgraded
pythonfrom3.10.12to3.8.13 - Updated
pipfrom23.0.1to22.0.4 - Updated
setuptoolsfrom65.5.1to57.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-scopeconfiguration 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_idfiltering in/api/readertasks/projectendpoint to remove unnecessary double-quotes - Corrected protocol lookup to use
labelparameter instead ofnamein/api/read_task_protocolsendpoint
Maintenance:
- Updated Python base image to version
3.10.12 - Downgraded
gitpackage from1:2.39.2-1.1to1:2.20.1-2+deb10u8 - Removed
build-essentialfrom Docker image - Removed
pip install --upgrade pipcommand 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.jsonfor Python configuration
0.0.5 [2023-07-12]
Enhancements:
- Include Flywheel API
postandputfunctions 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.pymodule - Enforce consistent "container-id-driven" interface for all functions in
flywheel_api_helpers.pymodule - Add
unitsof measure (e.g. mm) column in Annotations CSV - Add
Session Timestampcolumn in Form Responses and Annotation CSVs - Add
data_dictionary.csvon top level for both CSVs
Fixes:
- Accounts for the
protocol_idneeding double-quotes in the/api/readertasks/projectendpoint (but not container_ids) - Imposes
f"parents.{parent_type}={parent_id}"as a filter where ever relevant - Replace deprecated
log.warnwithlog.warning
Maintenance:
- Updated base image from
python:3.10-slimto pinned SHA digest - Updated
gitfrom1:2.30.2-1+deb11u2to1:2.39.2-1.1 - Added
build-essential=12.9package to Docker image - Updated
pythonfrom^3.10to^3.8 - Updated
pandasfrom^2.0.1to^2.0.3 - Updated
flywheel-gear-toolkitfrom^0.6.10to^0.6.11 - Updated
fw-clientfrom^0.5.0to^0.5.1 - Updated
flywheel-sdkfrom^16.19.0to^17.0.0 - Updated
pytestfrom^7.3.1to^7.4.0 - Updated
pytest-covfrom^4.0.0to^4.1.0 - Updated
pytest-mockfrom^3.10.0to^3.11.1 - Updated
coveragefrom^7.2.5to^7.2.7 - Updated
blackfrom22.3to^23.3.0 - Updated
packagingfrom21.3to^23.1 - Updated
mypyfrom^1.3.0to^1.4.1 - Removed
ipythondependency - Added error handling in
get_taskfunction to returnNoneon client errors
Documentation:
- Add
docsfolder - 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 Timestampcolumn to both form responses and annotations output CSV files - Added units of measurement to annotation exports (supports
px,mm,degrees, and area measurements inpx^2ormm^2) - Added
Anglemeasurement property to exported annotation data - Made
protocol_nameconfiguration parameter optional to support exporting non-task annotations and form responses
Documentation:
- Expanded
README.mdwith 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_nameconfiguration 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_nameby skipping protocol lookup and returning empty task lists when no protocol is specified - Fixed form responses export to only process when both
form_responses_scopeis set and a validform_idexists
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, andContourRoi - Added support for NIfTI and DICOM image formats in annotation exports
Maintenance:
- Added
pandas>=2.0.1dependency for DataFrame operations - Added
flywheel-gear-toolkit>=0.6.10for gear framework integration - Added
fw-client>=0.5.0for Flywheel API interactions - Added
flywheel-sdk>=16.19.0for Flywheel SDK support - Added
python>=3.10requirement - Added pre-commit configuration with hooks for
gearcheck,poetry_export,docker_build,yamllint,black,isort, andpytest - Added GitLab CI configuration with
PYTEST_COV_FAIL_UNDERset to 80 - Added Docker configuration based on
python:3.10-slim - Added
git1:2.30.2-1+deb11u2system package for development
Documentation:
- Added
README.mdwith comprehensive usage instructions, input/output specifications, and CSV column descriptions - Added
CONTRIBUTING.mdwith development setup, dependency management, and contribution guidelines - Added
FAQ.mdfor frequently asked questions - Added
TODO.mdfor tracking development tasks - Added merge request template with checklist for release notes, changelog, tests, and regression testing
- Added MIT license