OpenSMI-Core 0.7__tar.gz → 0.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. {opensmi_core-0.7 → opensmi_core-0.7.1}/PKG-INFO +1 -1
  2. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/OpenSMI_Core.egg-info/PKG-INFO +1 -1
  3. opensmi_core-0.7.1/src/OpenSMI_Core.egg-info/scm_version.json +8 -0
  4. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/protocols.py +2 -0
  5. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/subscription_manager.py +9 -3
  6. opensmi_core-0.7/src/OpenSMI_Core.egg-info/scm_version.json +0 -8
  7. {opensmi_core-0.7 → opensmi_core-0.7.1}/.github/workflows/api-docs.yml +0 -0
  8. {opensmi_core-0.7 → opensmi_core-0.7.1}/.github/workflows/checks.yml +0 -0
  9. {opensmi_core-0.7 → opensmi_core-0.7.1}/.github/workflows/python-publish.yml +0 -0
  10. {opensmi_core-0.7 → opensmi_core-0.7.1}/.gitignore +0 -0
  11. {opensmi_core-0.7 → opensmi_core-0.7.1}/LICENSE +0 -0
  12. {opensmi_core-0.7 → opensmi_core-0.7.1}/LICENSES/MIT.txt +0 -0
  13. {opensmi_core-0.7 → opensmi_core-0.7.1}/README.md +0 -0
  14. {opensmi_core-0.7 → opensmi_core-0.7.1}/pyproject.toml +0 -0
  15. {opensmi_core-0.7 → opensmi_core-0.7.1}/setup.cfg +0 -0
  16. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/OpenSMI_Core.egg-info/SOURCES.txt +0 -0
  17. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/OpenSMI_Core.egg-info/dependency_links.txt +0 -0
  18. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/OpenSMI_Core.egg-info/requires.txt +0 -0
  19. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/OpenSMI_Core.egg-info/scm_file_list.json +0 -0
  20. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/OpenSMI_Core.egg-info/top_level.txt +0 -0
  21. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/__init__.py +0 -0
  22. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/async_task_mixin.py +0 -0
  23. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/base_server.py +0 -0
  24. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/base_ua_object.py +0 -0
  25. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/config.py +0 -0
  26. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/enums.py +0 -0
  27. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/errors.py +0 -0
  28. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/frozen.py +0 -0
  29. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/hook.py +0 -0
  30. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/lifecycle_mixin.py +0 -0
  31. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/logging.py +0 -0
  32. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/meta.py +0 -0
  33. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/mixin_helpers.py +0 -0
  34. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/Opc.Ua.Di.NodeSet2.xml +0 -0
  35. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/Opc.Ua.Machinery.NodeSet2.xml +0 -0
  36. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/Opc.Ua.RSL.NodeSet2.xml +0 -0
  37. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/Opc.Ua.SmartFactory.MachineSet.NodeSet2.xml +0 -0
  38. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/Opc.Ua.SmartFactory.SkillSet.NodeSet2.xml +0 -0
  39. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/__init__.py +0 -0
  40. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/di.py +0 -0
  41. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/machinery.py +0 -0
  42. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/rsl.py +0 -0
  43. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/smart_factory_machine_set.py +0 -0
  44. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/nodesets/smart_factory_skill_set.py +0 -0
  45. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/paths.py +0 -0
  46. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/repr_mixin.py +0 -0
  47. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/rsl.py +0 -0
  48. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/signal.py +0 -0
  49. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/ua.py +0 -0
  50. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/ua_enums.py +0 -0
  51. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/ua_node_util.py +0 -0
  52. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/unit_all.py +0 -0
  53. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/unit_base.py +0 -0
  54. {opensmi_core-0.7 → opensmi_core-0.7.1}/src/opensmi/core/unset.py +0 -0
  55. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_nodesets.py +0 -0
  56. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_object_path.py +0 -0
  57. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_paths.py +0 -0
  58. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_resolve.py +0 -0
  59. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_rsl.py +0 -0
  60. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_signal.py +0 -0
  61. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_ua_values.py +0 -0
  62. {opensmi_core-0.7 → opensmi_core-0.7.1}/tests/test_unit.py +0 -0
  63. {opensmi_core-0.7 → opensmi_core-0.7.1}/tools/auto_generate_nodesets.py +0 -0
  64. {opensmi_core-0.7 → opensmi_core-0.7.1}/tools/auto_generate_units.py +0 -0
  65. {opensmi_core-0.7 → opensmi_core-0.7.1}/tools/nodeset.py.template +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenSMI-Core
3
- Version: 0.7
3
+ Version: 0.7.1
4
4
  Summary: Smart Machine Interface core functionality for server and client applications.
5
5
  Author-email: Carsten Harms <Carsten.Harms@dfki.de>, Simon Jungbluth <Simon.Jungbluth@smartfactory.de>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenSMI-Core
3
- Version: 0.7
3
+ Version: 0.7.1
4
4
  Summary: Smart Machine Interface core functionality for server and client applications.
5
5
  Author-email: Carsten Harms <Carsten.Harms@dfki.de>, Simon Jungbluth <Simon.Jungbluth@smartfactory.de>
6
6
  License-Expression: MIT
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.7.1",
3
+ "distance": 0,
4
+ "node": "g1992751d0516b6db6b3a9e18cca686a1a03e8c8a",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-11-05"
8
+ }
@@ -21,6 +21,8 @@ class UaEvent(Protocol):
21
21
  SourceNode: ua.NodeId
22
22
  Time: datetime
23
23
  emitting_node: ua.NodeId
24
+ server_handle: int | None
25
+ """Handle of the monitored item that delivered the event (set by asyncua's client subscription)."""
24
26
 
25
27
 
26
28
  class NamespaceProvider(Protocol):
@@ -456,9 +456,15 @@ class SubscriptionManager:
456
456
  """Handle OPC UA event notifications callback."""
457
457
  self._last_heartbeat = time.monotonic()
458
458
 
459
- # TODO(CaHa): ua_event.emitting_node is always i=2253 (=Server)
460
- # might be an asyncua problem
461
- item = self._event_subscription_map.get(ua_event.SourceNode)
459
+ # Route by the monitored item, not by the event: asyncua leaves ua_event.emitting_node at i=2253 (=Server),
460
+ # see https://github.com/FreeOpcUa/opcua-asyncio/issues/2074, and SourceNode is the object the event is
461
+ # about, which need not be the subscribed node.
462
+ item = None
463
+ if ua_event.server_handle is not None:
464
+ item = next(
465
+ (item for item in self._event_subscription_map.values() if item.handle == ua_event.server_handle),
466
+ None,
467
+ )
462
468
  if item is None:
463
469
  self.logger.warning("Received Event Notification with no handlers", ua_event=ua_event)
464
470
  return
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.7",
3
- "distance": 0,
4
- "node": "g5454212df575c25f82aff1ff7352c793dac40fb6",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-11-04"
8
- }
File without changes
File without changes
File without changes
File without changes
File without changes