1.1.0

Fixes

  • No longer using a list as the default value for the transfer_syntax keyword argument in AE.add_requested_context(), AE.add_supported_context() and presentation.build_context()

  • Completely fixed handling a maximum PDU length of 0. (#193)

  • DIMSEMessage subclass creation and DIMSEMessage.primitive_to_message should now be thread-safe (#137)

  • Fixed A-RELEASE collision not being implemented correctly. (#269)

  • Fixed bugs in fsm.AR_8 and fsm.AA_7.

  • Fixed DUL not handling the service user sending A-P-ABORT primitives. (#270)

  • Fixed the DUL endlessly waiting in State 13 if the remote didn’t close the connection and there was data still available to be read. (#272)

Enhancements

  • Added select_timeout parameter to Association.start() to allow the user to specify how long the select.select() call blocks for. (#260)

  • Improved the CPU usage of the AE when running idle as an SCP (#60).

Changes

  • AE.quit() is deprecated and will be removed in v1.2. Use AE.stop() instead.

  • DIMSEMessage.ID is deprecated and will be removed in v1.2. Use DIMSEMessage.context_id instead.

  • Added _globals.py for frequently used global constants.

  • utils.validate_ae_title changed to only return bytes for Python 3

  • AE.require_calling_aet now takes a list of AE titles (as bytes) rather than a single AE title. If set to a non-empty list then association requests will be rejected unless the value of the Calling AE Title parameter matches one of those in the list. If set to an empty list (default) then all associations will be accepted (unless rejected for other reasons). (#192)

  • AE.require_called_aet should now be set using a bool. If True then any association requests will be rejected unless the value of the Called AE Title parameter matches AE.ae_title. If False (default) then no matching will be performed and all associations accepted (unless rejected for other reasons). (#184)

  • ACSE.is_released is deprecated and will be removed in v1.2. Use ACSE.is_release_requested instead.

  • ACSE.release_association is deprecated and will be removed in v1.2. Use ACSE.negotiate_release instead.

  • The association acceptor no longer aborts an accepted association if there are no accepted presentation contexts. The association requestor still does.

  • Default ACSE timeout changed to 30 s and default network timeout to 60 s.

1.0.0

Fixes

  • Fixed upstream pydicom changes to AE elements breaking logging (#195)

  • Fixed typos in SOP class names, fix bad UID

  • Fixed SCP/SCU Role Negotiation requiring both SCP and SCU role values to be set (as association requestor)

  • Starting with v1.0.0, versioning should be consistent

Changes

  • applicationentity module renamed ae

  • ApplicationEntity interface updated

    • Removed the following: AE.scu_supported_sop, AE.scp_supported_sop, AE.transfer_syntax, AE.presentation_contexts_scu, AE.presentation_contexts_scp.

    • scu_sop_class, scp_sop_class, transfer_syntax and bind_addr arguments removed from AE initialisation.

    • Added AE.bind_addr attribute to allow the user to specify the network adapter.

    • Added AE.add_supported_context(), AE.supported_contexts, AE.remove_supported_context() for adding and removing the presentation contexts supported as an SCP.

    • Added AE.add_requested_context(), AE.requested_contexts, AE.remove_requested_context() for adding and removing the presentation contexts requested as an SCU.

  • Removed VerificationSOPClass, StorageSOPClassList and QueryRetrieveSOPClassList.

  • Added VerificationPresentationContexts, StoragePresentationContexts, QueryRetrievePresentationContexts and BasicWorklistManagmentPresentationContexts to replace them

  • Added service_class module and moved the service class implementations from sop_class to service_class.

  • The three Query/Retrieve service class implementations (Find, Get, Move) have been consolidated into one.

  • BasicWorklistManagementServiceClass reimplemented separately from QR.

  • SOPClass class added to sop_class module and all SOP Class objects now inherit from it rather than the corresponding service class.

  • utils.PresentationContextManager removed

  • MaximumLengthNegotiation changed to MaximumLengthNotification

  • ImplementationClassUIDNegotiation changed to ImplementationClassUIDNotification

  • ImplementationVersionNameNegotiation changed to ImplementationVersioNameNotification

  • Simplified service_class.ServiceClass interface

  • ACSE refactored to do more of the association negotiation work and to operate independently of the Association instance.

    • Added send_abort, send_ap_abort, send_reject, send_release send_request, send_accept methods

    • Added negotiate_association method

    • Added release_association method

  • Added association.ServiceUser class

  • Association refactored to do less association negotiation work and to operate independently of the ACSE instance.

    • Added Association.requestor and Association.acceptor attributes which are ServiceUser instances that track the association requestor and acceptor.

  • Project named changed from pynetdicom3 to pynetdicom

Enhancements

  • Add context and info parameters to on_c_* callbacks (#45, #54, #65, #106)

  • Added contribution, issue and PR guides (#66)

  • Added PEP8 conformant PYNETDICOM_IMPLEMENTATION_VERSION and PYNETDICOM_IMPLEMENTATION_UID variables. The old ones will be removed in v1.0

  • Added AE.implementation_version_name and AE.implementation_class_uid attributes so user’s can specify the values used during association negotiation.

  • Allow per-association presentation context requests (SCU)

  • Allow more than 128 supported presentation contexts (SCP)

  • Documentation added: user guide, examples, API reference (#1, #45, #49, #50)

  • Add support for QR Instance and Frame Level Retrieve

  • Add support for QR Composite Instance Root Retrieval

  • Add support for the Relevant Patient Information Query service

  • Add support for the Hanging Protocol QR service

  • Add support for the Substance Administration Query service

  • Add support for the Color Palette QR service

  • Add support for the Implant Template QR service

  • Add support for the Non-Patient Information Storage service

  • Add support for the Defined Procedure Protocol QR service

  • Add support for the Display System Management service

  • Add support for N-GET, N-SET, N-EVENT-REPORT, N-DELETE, N-ACTION, N-CREATE as SCU.

  • Add full support for SCP/SCU Role Selection Negotiation

  • Add support for SOP Class Extended Negotiation

  • Add support for Asynchronous Operations Window Negotiation, however pynetdicom does not support asynchronous operations.

  • Add support for User Identity Negotiation

  • Add support for SOP Class Common Extended Negotiation

  • Non-conformant (null trailing padded) UIDs in A-ASSOCIATE messages are now handled