Pending changes in the mainline
===============================


Version 7.1 (2026-04-07)
========================

* Wrapped "RegisterStorageArea3()"


Version 7.0 (2025-12-02)
========================

=> Maximum SDK version: 1.12.10 (default) <=
=> Minimum SDK version: 1.7.2 <=

* The "orthanc.pyi" stub is now excluded from the "install" step during the build
* Wrapped new SCP callbacks:
  - RegisterFindCallback2()
  - RegisterMoveCallback3()
  - RegisterWorklistCallback2()
  - RegisterStorageCommitmentScpCallback2()
* Wrapped new Queues methods:
  - ReserveQueueValue()
  - AcknowledgeQueueValue()
* Added Windows builder for Python 3.14 + fix builders for Python 3.13


Version 6.0 (2025-08-12)
========================

=> Maximum SDK version: 1.12.9 (default) <=
=> Minimum SDK version: 1.7.2 <=

* The auto-generation of the Python wrapper is now part of the build,
  to exploit the ORTHANC_PLUGIN_SINCE_SDK macro. This provides backward
  compatibility with the SDK that is actually installed on the system
* The plugin now uses the code model that is part of the core "orthanc" project
* Added Windows builder for Python 3.13
* Added Docker-based builder scripts for Debian 13 (trixie)


Version 5.0 (2025-01-22)
========================

=> Minimum SDK version: 1.12.6 <=

* Added "orthanc.RestOutput.StartStreamAnswer()" and "orthanc.RestOutput.SendStreamChunk()"
* In "orthanc.pyi", enumerations are not tagged as deriving from "enum.Enum" anymore:
  https://github.com/orthanc-server/orthanc-builder/issues/21
* Docker-based builder scripts for Debian 12 (bookworm)


Version 4.3 (2024-07-04)
========================

* Created Python documentation for the Orthanc interface, check out "orthanc.pyi"
* Added option "AllowThreads" to release the GIL during the call to the native SDK functions
* Code model is now generated by the "orthanc-java" project
* Added Windows builder for Python 3.12
* Licensing information is now compliant with the FSFE REUSE specification


Version 4.2 (2024-05-16)
========================

* Fix signature of "orthanc.RestOutput.SendHttpStatus()"
* Added orthanc.RegisterMoveCallback2() that takes 4 callbacks like the 
  original C SDK function.  This allows you to implement a correct handling
  of the C-Move sub-operations count in the GetMoveSize().  The ApplyMove()
  must now handle a single sub-operation at a time.
  The legacy orthanc.RegisterMoveCallback() always considers that there is a single
  sub-operation and we have observed modalities complaining that the number of
  sub-operations was not matching the number of instances sent.


Version 4.1 (2023-08-30)
========================

* New function from the SDK wrapped in Python:
  - orthanc.RegisterStorageCommitmentScpCallback()
* New configuration section "Python" to group settings related to the plugin:
  - "Python.Path" is an alias for global option "PythonScript"
  - "Python.Verbose" is an alias for global option "PythonVerbose"
* New configuration option "Python.DisplayMemoryUsage" to periodically
  display memory allocations that stem from Python plugins

Maintenance
-----------

* Fix memory leaks when a python script calls orthanc.RestApiPost() and sibling
  methods, in IncomingHttpRequestFilter and in the CMove callback.
* New builders for Windows: Supporting 32 / 64bit with Python 3.9 / 3.10 / 3.11


Version 4.0 (2022-02-23)
========================

=> Minimum SDK version: 1.10.0 <=

* New functions from the SDK wrapped in Python:
  - orthanc.RegisterIncomingCStoreInstanceFilter()
  - orthanc.RegisterReceivedInstanceCallback()


Version 3.4 (2021-08-31)
========================

* On Orthanc stopping, wait for all the queued events to have been processed
* Docker-based builder scripts distinguishing Debian buster and bullseye


Version 3.3 (2021-08-12)
========================

* New Python function: "orthanc.RegisterStorageArea()"
* Custom exception "orthanc.OrthancException" is raised instead of "ValueError"


Version 3.2 (2021-06-11)
========================

* New functions from the SDK wrapped in Python:
  - orthanc.CreateDicom()
  - orthanc.CreateImageFromBuffer()
  - orthanc.DicomInstance.GetInstanceData()
  - orthanc.FindQuery.GetFindQueryTagElement()
  - orthanc.FindQuery.GetFindQueryTagGroup()
  - orthanc.Image.GetImageBuffer()
  - orthanc.LookupDictionary()
  - orthanc.RegisterFindCallback()
  - orthanc.RegisterMoveCallback()
  - orthanc.RegisterWorklistCallback()
  - orthanc.WorklistAnswers.WorklistAddAnswer()

NB: SDK coverage is about 87% (138 functions wrapped in Python vs. 158 in SDK)


Version 3.1 (2021-01-22)
========================

* Fix possible deadlock with "orthanc.RegisterOnChangeCallback()"
* During Orthanc shutdown, wait for all the pending events to have been processed


Version 3.0 (2020-12-09)
========================

=> Minimum SDK version: 1.8.1 <=

* New Python function: "orthanc.RegisterIncomingHttpRequestFilter()"
* Support of Apple OS X
* Fix issue #185 (segfaults on non-UTF8 special characters in request URI)


Version 2.0 (2020-07-08)
========================

=> Minimum SDK version: 1.7.2 <=

* Wrapped more functions
* Fix compilation using Visual Studio
* The "Calling Python..." info logs are disabled if "PythonVerbose" is "false"
* New builders for Windows: Supporting 32 / 64bit with Python 2.7 / 3.7 / 3.8
* Support of dynamic linking against the system-wide Orthanc framework library

NB: SDK coverage is about 75% (119 functions wrapped in Python vs. 157 in SDK)


Version 1.0 (2020-04-01)
========================

=> Minimum SDK version: 1.5.7 <=

* Initial release
