Skip to content

Releases: Draegerwerk/sdc11073

v2.1.0

04 Sep 12:21
b3d0093
Compare
Choose a tag to compare

Changelog

All notable changes to the sdc11073 module will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[2.1.0] - 2024-09-04

Added

  • support for python version 3.12
  • new method ContextStateTransaction.disaccociate_all
  • additional schemata for validation can be declared in SdcProviderComponents and SdcConsumerComponents
  • new method Consumer.restart
  • log a message with level INFO when a context state update is received
  • allow to use full qualified name instead of IP in provider and consumer

Fixed

  • possible exception in ConsumerMdib._get_context_states #350
  • reference tests and example provider
  • node member of DescriptorContainer not updated on description modification report #357
  • accessing a multikey may lead to IndexError #359
  • wrong data type for ClinicalInfo.RelatedMeasurement#362
  • fixed a bug where sending and receiving socket are used after they have been closed already #328
  • reduced the amount of udp sockets to 2 #328
  • fixed address already in use bug #328
  • fixed SetServiceClient.set_numeric_value not accepting float, int or string.
  • fixed a bug where a message would be thrown away, if the udp binding of the discovery would be used by provider and consumer, as they would share the same ip and port #367
  • Exception in wsdiscovery if no Scopes in message #356
  • fixed error message not set in OperationInvokedReport#375.
  • incorrect BindingMdibVersion and UnbindingMdibVersion #168
  • ensure_location_context_descriptor and ensure_patient_context_descriptor also work for multiple system contexts in mdib.
  • provider mdib observables are updated #365
  • fixed possible error if _ThreadingHTTPServer fails to start and in server_close self.dispatcher member does not exist

Changed

  • ContainerBase.diff uses math.isclose for comparison, test added
  • removed the MULTICAST_OUT logger from commlog #328
  • SetContextState operation sets ContextAssociation according to value in proposed context state.
    Before the proposed state was always associated.
    Check added in SetContextState that max. one proposed state per descriptor is associated.
  • refactored ClientMdib.reload_all and processing of notifications

[2.0.1] - 2024-02-21

Fixed

  • inconsistent InstanceId attributes in GetMdibResponse

[2.0.0] - 2024-02-14

Fixed

  • RuntimeError: dictionary changed size during iteration for remote_services in the discovery #335
  • DescriptorTransaction sometimes causes wrong DescriptorVersion in states #340

[2.0.0rc2] - 2024-02-08

Fixed

  • fixed a bug where sending and receiving socket are used after they have been closed already #328
  • fixed a bug where getsockname() is called before the socket is binded
  • fixed cyclic import #333

[2.0.0rc1] - 2024-01-31

Fixed

  • fixed a bug where comparing ExtensionLocalValue would fail when using the != operator #305
  • fixed wrong typing info in LocalizedText
  • added a safety sleep in consumer when starting http server
  • fixed possible caching errors in AlarmProvider and AudioPauseProvider

Changed

  • new interface for transactions: split transaction into different kinds, e.g. descriptor_transaction, metric_state_transaction, etc.
  • SdcConsumer provides a dictionary with the current connection status of each subscription it is subscribed to #271
  • added force_ssl_connect parameter to constructor of consumer.

[2.0.0a7] - 2024-01-04

Added

  • added a way to process operations directly (directly send 'Fin' instead of Wait, Started,...)
  • added handling of SystemErrorReports.

Fixed

  • basic_logging_setup only handles sdc logger, no more side effect due to calling logging.basicConfig.
  • fix possible invalid prefix if QName is a node text.
  • fixed wrong response for SetContextState message. #287
  • fixed connection problem when provider closes socket after first request. #289
  • change default in ContainerBase.mk_copy to not copy node due to performance problems. #294
  • waveform provider too slow
  • create MetricValue for DistributionSampleArrayMetricState
  • dropping of Bye-messages when stopping wsdiscovery

Changed

  • change python classes of addressing_types.py to match ws-addressing standard of 2006 instead of 2004
  • The final OperationInvokedReport has OperationTargetRef parameter set.
    This required refactoring of Operations handling.
  • moved waveform generator from mdib to roles.waveformprovider
  • alert provider performs self check one second before SelfCheckInterval elapses

[2.0.0a6] - 2023-09-11

Added

  • network module to handle network adapter stuff of the host computer
  • mypy static code analysis

Fixed

  • possible choosing wrong ipaddress/network interface #187
  • added missing SerialNumber to ThisDeviceType
  • no creation of operation target states, they should already exist or are not needed if multi state.
  • transaction id is unique for provider instead only of sco.
  • fixed problem that on operations without handler the transaction id always was 0.
  • consumer: renew could be sent after unsubscribe
  • possible deadlock when stopping provider
  • fixed a bug where the SdcConsumer failed to determine the host network adapter if the ip contained in the device_location is on a different subnet
  • comparison of extensions would fail #238
  • ExtensionLocalValue.value must be a list instead of a dictionary in order to allow multiple elements with same name.
  • fixed a bug where namespaces of xml are lost when coping lxml elements

Changed

  • when creating a SdcClient with a device_location or WsDiscovery containing an ip where no suitable host network adapter could be determined from, an NetworkAdapterNotFoundError is raised
  • removed netconn module
  • renamed Device with Provider in order to be more compliant with sdc11073 names:
    sdc11073.sdcdevice.SdcDevice becomes sdc11073.provider.SdcProvider,
    sdc11073.mdib.devicemdib.DeviceMdibContainer becomes sdc11073.mdib.providermdib.ProviderMdib, etc.
  • renamed Client with Consumer: sdc11073.sdcclient.SdcClient becomes sdc11073.consumer.SdcConsumer,
    sdc11073.mdib.clientmdib.ClientMdibContainer becomes sdc11073.mdib.consumermdib.ConsumerMdib, etc.
  • reduced max_subscription_duration of provider to 15 seconds
  • renew can be performed in fixed intervals (as before) or depending on Expires time of subscription.
  • SdcLocation class reworked; use 'bldng' instead of 'bld', which better matches the standard.
  • Some classes renamed in pmtypes.py
  • soap client does not try implicit reconnects
  • replaced some of the ssl_context parameters with an ssl_context_container parameter,
    that can hold two ssl context objects, to be able to get rid of
    the deprecation warning occurring when using the same ssl context for both client and server side
  • replaced AbstractDescriptorContainer.retrievability property with methods get_retrievability() and set_retrievability()

[2.0.0a5] - 2023-06-27

Fixed

  • improved error handling when reading attribute values from xml element
  • fixed possible exception in calculation of waveform age
  • fixed some places where default_py_value should be implied_py_value
  • fixed incomplete modeling of ClinicalInfo class

Added

  • added switch to allow disabling strict checking for AppSequence.

[2.0.0a4] - 2023-06-16

Changed

  • reworked wsdiscovery. Wsdiscovery can now only bind to a single ip address.
    The only available classes are "WsDiscovery" and "WsDiscoverySingleAdapter".

Fixed

  • fixed bug that roundtrip statistics raises an exception when no data is available.
  • fixed possible exception that "_short_filter_names" does not exist
  • fixed missing namespace for IsReferenceParameter attribute

[2.0.0a3] - 2023-06-08

Added

  • SdcClient.start_all has optional parameter "check_get_service"

Changed

  • moved port type name declaration from components.py to implementation classes #176

Fixed

  • fixed bug in handling of soap faults (faultcodeEnum must be QNames, not strings)

[2.0.0a2] - 2023-06-07

Fixed

  • fixed bug that mk_scopes only created a scope if a location was associated.
  • fixed broken fault message generation in subscriptionsmanager_base. A previously removed method of
    namespace helper was still used.
  • fixed bug in constructor of dpws_types.ThisDeviceType. This could cause an invali...
Read more

v1.3.2

18 Mar 11:09
331eef1
Compare
Choose a tag to compare

Changelog

All notable changes to the sdc11073 module will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[v1.3.2] - 2024-03-18

Fixed

  • fixed a bug where comparing ExtensionLocalValue would fail when using the != operator #304
  • fixed missing xml header in discovery messages #314
  • fixed possible error in alarmprovider (caching of handles outside transaction context) #293
  • fixed a bug where the reason for a subscribe failure would not be logged correctly #323
  • fixed a bug where isConnected may be True, even though the subscription is not subscribed, because allSubscriptionsOkay defaults value is True #326 and it needs one second bevor changing its value to False
  • RuntimeError: dictionary changed size during iteration for remoteServices in the discovery #335
  • fixed possible ZeroDivisionError in ContainerBase.diff() method

v2.0.1

21 Feb 14:48
01b1171
Compare
Choose a tag to compare

Changelog

All notable changes to the sdc11073 module will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[2.0.1] - 2024-02-21

Fixed

  • inconsistent InstanceId attributes in GetMdibResponse

v2.0.0

14 Feb 16:48
382e097
Compare
Choose a tag to compare

Changelog

All notable changes to the sdc11073 module will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[2.0.0] - 2024-02-14

Fixed

  • RuntimeError: dictionary changed size during iteration for remote_services in the discovery #335
  • DescriptorTransaction sometimes causes wrong DescriptorVersion in states #340

[2.0.0rc2] - 2024-02-08

Fixed

  • fixed a bug where sending and receiving socket are used after they have been closed already #328
  • fixed a bug where getsockname() is called before the socket is binded
  • fixed cyclic import #333

[2.0.0rc1] - 2024-01-31

Fixed

  • fixed a bug where comparing ExtensionLocalValue would fail when using the != operator #305
  • fixed wrong typing info in LocalizedText
  • added a safety sleep in consumer when starting http server
  • fixed possible caching errors in AlarmProvider and AudioPauseProvider

Changed

  • new interface for transactions: split transaction into different kinds, e.g. descriptor_transaction, metric_state_transaction, etc.
  • SdcConsumer provides a dictionary with the current connection status of each subscription it is subscribed to #271
  • added force_ssl_connect parameter to constructor of consumer.

[2.0.0a7] - 2024-01-04

Added

  • added a way to process operations directly (directly send 'Fin' instead of Wait, Started,...)
  • added handling of SystemErrorReports.

Fixed

  • basic_logging_setup only handles sdc logger, no more side effect due to calling logging.basicConfig.
  • fix possible invalid prefix if QName is a node text.
  • fixed wrong response for SetContextState message. #287
  • fixed connection problem when provider closes socket after first request. #289
  • change default in ContainerBase.mk_copy to not copy node due to performance problems. #294
  • waveform provider too slow
  • create MetricValue for DistributionSampleArrayMetricState
  • dropping of Bye-messages when stopping wsdiscovery

Changed

  • change python classes of addressing_types.py to match ws-addressing standard of 2006 instead of 2004
  • The final OperationInvokedReport has OperationTargetRef parameter set.
    This required refactoring of Operations handling.
  • moved waveform generator from mdib to roles.waveformprovider
  • alert provider performs self check one second before SelfCheckInterval elapses

[2.0.0a6] - 2023-09-11

Added

  • network module to handle network adapter stuff of the host computer
  • mypy static code analysis

Fixed

  • possible choosing wrong ipaddress/network interface #187
  • added missing SerialNumber to ThisDeviceType
  • no creation of operation target states, they should already exist or are not needed if multi state.
  • transaction id is unique for provider instead only of sco.
  • fixed problem that on operations without handler the transaction id always was 0.
  • consumer: renew could be sent after unsubscribe
  • possible deadlock when stopping provider
  • fixed a bug where the SdcConsumer failed to determine the host network adapter if the ip contained in the device_location is on a different subnet
  • comparison of extensions would fail #238
  • ExtensionLocalValue.value must be a list instead of a dictionary in order to allow multiple elements with same name.
  • fixed a bug where namespaces of xml are lost when coping lxml elements

Changed

  • when creating a SdcClient with a device_location or WsDiscovery containing an ip where no suitable host network adapter could be determined from, an NetworkAdapterNotFoundError is raised
  • removed netconn module
  • renamed Device with Provider in order to be more compliant with sdc11073 names:
    sdc11073.sdcdevice.SdcDevice becomes sdc11073.provider.SdcProvider,
    sdc11073.mdib.devicemdib.DeviceMdibContainer becomes sdc11073.mdib.providermdib.ProviderMdib, etc.
  • renamed Client with Consumer: sdc11073.sdcclient.SdcClient becomes sdc11073.consumer.SdcConsumer,
    sdc11073.mdib.clientmdib.ClientMdibContainer becomes sdc11073.mdib.consumermdib.ConsumerMdib, etc.
  • reduced max_subscription_duration of provider to 15 seconds
  • renew can be performed in fixed intervals (as before) or depending on Expires time of subscription.
  • SdcLocation class reworked; use 'bldng' instead of 'bld', which better matches the standard.
  • Some classes renamed in pmtypes.py
  • soap client does not try implicit reconnects
  • replaced some of the ssl_context parameters with an ssl_context_container parameter,
    that can hold two ssl context objects, to be able to get rid of
    the deprecation warning occurring when using the same ssl context for both client and server side
  • replaced AbstractDescriptorContainer.retrievability property with methods get_retrievability() and set_retrievability()

[2.0.0a5] - 2023-06-27

Fixed

  • improved error handling when reading attribute values from xml element
  • fixed possible exception in calculation of waveform age
  • fixed some places where default_py_value should be implied_py_value
  • fixed incomplete modeling of ClinicalInfo class

Added

  • added switch to allow disabling strict checking for AppSequence.

[2.0.0a4] - 2023-06-16

Changed

  • reworked wsdiscovery. Wsdiscovery can now only bind to a single ip address.
    The only available classes are "WsDiscovery" and "WsDiscoverySingleAdapter".

Fixed

  • fixed bug that roundtrip statistics raises an exception when no data is available.
  • fixed possible exception that "_short_filter_names" does not exist
  • fixed missing namespace for IsReferenceParameter attribute

[2.0.0a3] - 2023-06-08

Added

  • SdcClient.start_all has optional parameter "check_get_service"

Changed

  • moved port type name declaration from components.py to implementation classes #176

Fixed

  • fixed bug in handling of soap faults (faultcodeEnum must be QNames, not strings)

[2.0.0a2] - 2023-06-07

Fixed

  • fixed bug that mk_scopes only created a scope if a location was associated.
  • fixed broken fault message generation in subscriptionsmanager_base. A previously removed method of
    namespace helper was still used.
  • fixed bug in constructor of dpws_types.ThisDeviceType. This could cause an invalid xml:lang attribute.
  • fixed bug that ContainerBase.node was not set in update_from_node

[2.0.0a1] - 2023-06-01

Changed

  • Code follows PEP8 style (mostly)
  • Using dependency injection, classes are defined in sdcdevice/components.py and sdcclients/components.py.
    This allows users to replace components withs own ones and modify the behavior of client and device.
  • All QNames of BICEPS participant model, message model and extension are predefined in
    pm_qnames.py, msg_qnames.py and ext_qnames.py. Users no longer need helper functions like domTag, msgTag, etc that
    were needed in version 1.
  • A lot of internal functionality was refactoring or rewritten.
  • The API for role providers changed.
  • The transactions API is simplified.
  • code in repo is located under a src parent folder.
  • A lot of small changes and fixes, too many to list them all.

Added

  • Multiple SdcClient instances can use a shared HTTP Server.
  • strict type checking for participant model data. When assigning a value, the data is checked and
    an exception is thrown if type is not as expected.
  • Having multiple MDS in a single mdib is supported.

v2.0.0rc2

08 Feb 12:19
e498970
Compare
Choose a tag to compare
v2.0.0rc2 Pre-release
Pre-release

Changelog

All notable changes to the sdc11073 module will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[2.0.0rc2] - 2024-02-08

Fixed

  • fixed a bug where sending and receiving socket are used after they have been closed already #328
  • fixed a bug where getsockname() is called before the socket is binded
  • fixed cyclic import #333

v2.0.0rc1

31 Jan 09:02
84c2229
Compare
Choose a tag to compare
v2.0.0rc1 Pre-release
Pre-release

Changelog

All notable changes to the sdc11073 module will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[v2.0.0rc1]

Fixed

  • fixed a bug where comparing ExtensionLocalValue would fail when using the != operator #305
  • fixed wrong typing info in LocalizedText
  • added a safety sleep in consumer when starting http server
  • fixed possible caching errors in AlarmProvider and AudioPauseProvider

Changed

  • new interface for transactions: split transaction into different kinds, e.g. descriptor_transaction, metric_state_transaction, etc.
  • SdcConsumer provides a dictionary with the current connection status of each subscription it is subscribed to #271
  • added force_ssl_connect parameter to constructor of consumer.

v1.3.1

04 Dec 09:45
cbc183b
Compare
Choose a tag to compare

Changelog

[1.3.1] - 2023-12-04

Fixed

  • set the implied value for AbstractDeviceComponentState/ActivationState to "On"

Added

  • support for python version 3.12

Changed

  • alert provider performs self check one second before SelfCheckInterval elapses

Fixed

  • fix possible invalid prefix if QName is a node text.

v1.3.0

08 Sep 17:20
v1.3.0
06e650c
Compare
Choose a tag to compare

Changelog

[1.3.0] - 2023-09-08

Added

  • http_server_timeout parameter to the SdcDevice interface in addition to it already
    being a parameter in the SdcHandler interface

v1.2.1

06 Sep 08:53
f70f6f4
Compare
Choose a tag to compare

Changelog

All notable changes to the sdc11073 module will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[1.2.1] - 2023-09-05

Fixed

  • fixed a bug where coping a xml node would not work if namespace have been defined multiple time #232
  • getContextState sets correct BindingVersion #168.
  • comparison of extensions would fail, ExtensionLocalValue type added

Changed

  • additional parameter 'set_associated' for getContextState. It defaults to True.
  • _setContextState only sets BindingMdibVersion and -Time if proposed state is associated.

v1.2.0

02 Aug 16:16
v1.2.0
998c624
Compare
Choose a tag to compare

Changelog

[1.2.0] - 2023-08-02

Added

  • ssl_context_container parameter to be able to get rid of the deprecation warning occurring
    when using the same ssl context for both client and server side

Fixed

  • client subscription: renew could be sent after unsubscribe.