wandelbots-nova 3.3.3__tar.gz → 3.3.4__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 (363) hide show
  1. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/PKG-INFO +1 -1
  2. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/auth/auth_config.py +2 -4
  3. wandelbots_nova-3.3.4/nova/config.py +103 -0
  4. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/gateway.py +11 -14
  5. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/logging.py +3 -4
  6. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/motion_group.py +2 -2
  7. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/nova.py +19 -29
  8. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/events/__init__.py +4 -4
  9. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/extentions/opcua/client.py +2 -2
  10. wandelbots_nova-3.3.4/nova/logging/__init__.py +14 -0
  11. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/nats/client.py +4 -47
  12. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/program/runner.py +2 -4
  13. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/pyproject.toml +1 -1
  14. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/api/test_program_registry.py +0 -16
  15. wandelbots_nova-3.3.3/nova/config.py +0 -23
  16. wandelbots_nova-3.3.3/nova/logging/__init__.py +0 -19
  17. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/.gitignore +0 -0
  18. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/LICENSE +0 -0
  19. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/README.md +0 -0
  20. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/__init__.py +0 -0
  21. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/actions/__init__.py +0 -0
  22. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/actions/base.py +0 -0
  23. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/actions/container.py +0 -0
  24. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/actions/io.py +0 -0
  25. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/actions/mock.py +0 -0
  26. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/actions/motions.py +0 -0
  27. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/actions/trajectory_builder.py +0 -0
  28. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/api.py +0 -0
  29. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/api.pyi +0 -0
  30. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/auth/__init__.py +0 -0
  31. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/auth/authorization.py +0 -0
  32. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/cell/__init__.py +0 -0
  33. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/cell/cell.py +0 -0
  34. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/cell/controllers.py +0 -0
  35. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/cell/robot_cell.py +0 -0
  36. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/cell/simulation.py +0 -0
  37. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/__init__.py +0 -0
  38. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/controller.py +0 -0
  39. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/env_handler.py +0 -0
  40. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/exceptions.py +0 -0
  41. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/io.py +0 -0
  42. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/movement_controller.py +0 -0
  43. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/core/tuner.py +0 -0
  44. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/extentions/__init__.py +0 -0
  45. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/extentions/opcua/__init__.py +0 -0
  46. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/extentions/opcua/functions.py +0 -0
  47. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/nats/__init__.py +0 -0
  48. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/nats/message.py +0 -0
  49. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/program/__init__.py +0 -0
  50. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/program/exceptions.py +0 -0
  51. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/program/function.py +0 -0
  52. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/program/store.py +0 -0
  53. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/program/utils.py +0 -0
  54. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/types/__init__.py +0 -0
  55. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/types/collision_scene.py +0 -0
  56. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/types/motion_settings.py +0 -0
  57. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/types/pose.py +0 -0
  58. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/types/state.py +0 -0
  59. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/types/vector3d.py +0 -0
  60. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/utils/__init__.py +0 -0
  61. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/utils/timestamp.py +0 -0
  62. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/version.py +0 -0
  63. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/viewers/__init__.py +0 -0
  64. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/viewers/base.py +0 -0
  65. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/viewers/manager.py +0 -0
  66. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/viewers/protocol.py +0 -0
  67. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/viewers/rerun.py +0 -0
  68. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova/viewers/utils.py +0 -0
  69. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/LICENSE +0 -0
  70. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/README.md +0 -0
  71. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/__init__.py +0 -0
  72. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/README.md +0 -0
  73. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/benchmark_base.py +0 -0
  74. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/dataset/README.md +0 -0
  75. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/dataset/demo_set.yaml +0 -0
  76. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/dataset/mb_set.yaml +0 -0
  77. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/dataset/mpinets_set.yaml +0 -0
  78. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/datasets.py +0 -0
  79. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/log_successful_planning.py +0 -0
  80. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/robometrics_helper.py +0 -0
  81. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/run_collision_free_benchmark.py +0 -0
  82. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/run_collision_free_magma.py +0 -0
  83. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/benchmark/run_ptp_benchmark.py +0 -0
  84. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/blueprint.py +0 -0
  85. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/collision_scene.py +0 -0
  86. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/colors.py +0 -0
  87. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/consts.py +0 -0
  88. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/conversion_helpers.py +0 -0
  89. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/dh_robot.py +0 -0
  90. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/example_data/Welding_Benchmark_USA_01.stl +0 -0
  91. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/example_data/bin_everything_05.ply +0 -0
  92. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/example_data/colliders.json +0 -0
  93. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/example_data/source.md +0 -0
  94. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/example_data/tool.stl +0 -0
  95. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/example_data/yaskawa_ar1440_rif_with_safety_zones.json +0 -0
  96. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/collison_world.py +0 -0
  97. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/import_ply.py +0 -0
  98. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/reachability_check.py +0 -0
  99. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/robocore.py +0 -0
  100. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/stream_robot.py +0 -0
  101. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/use_nova_rerun_bridge.py +0 -0
  102. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/visualize_tool.py +0 -0
  103. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/wait_action.py +0 -0
  104. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/welding_example.py +0 -0
  105. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/yaskawa-ar1440-16-mounting.json +0 -0
  106. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/examples/yaskawa-ar1440-with-external-axis.json +0 -0
  107. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/helper_scripts/README.md +0 -0
  108. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/helper_scripts/__init__.py +0 -0
  109. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/helper_scripts/code_server_helpers.py +0 -0
  110. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/helper_scripts/download_models.py +0 -0
  111. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/helper_scripts/plan_with_collisions.py +0 -0
  112. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/hull_visualizer.py +0 -0
  113. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/minimal_example/.gitignore +0 -0
  114. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/minimal_example/README.md +0 -0
  115. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/minimal_example/main.py +0 -0
  116. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/minimal_example/poetry.toml +0 -0
  117. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/minimal_example/pyproject.toml +0 -0
  118. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/minimal_example/ruff.toml +0 -0
  119. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/minimal_example/uv.lock +0 -0
  120. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/motion_recorder.py +0 -0
  121. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/motion_storage.py +0 -0
  122. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge.py +0 -0
  123. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/.dockerignore +0 -0
  124. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/.nova +0 -0
  125. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/Dockerfile +0 -0
  126. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/app.yaml +0 -0
  127. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/build.sh +0 -0
  128. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/data/README.md +0 -0
  129. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/deployment.yaml +0 -0
  130. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/ingress.yaml +0 -0
  131. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/kustomization.yaml +0 -0
  132. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/namespace.yaml +0 -0
  133. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/nginx.conf +0 -0
  134. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/nginx.http.conf.template +0 -0
  135. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/skaffold.yaml +0 -0
  136. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/start.sh +0 -0
  137. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/nova_rerun_bridge_app/static/app_icon.png +0 -0
  138. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/polling/populate.py +0 -0
  139. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/.dockerignore +0 -0
  140. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/.nova +0 -0
  141. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/Dockerfile +0 -0
  142. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/app.yaml +0 -0
  143. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/build.sh +0 -0
  144. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/k8s/deployment.yaml +0 -0
  145. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/k8s/ingress.yaml +0 -0
  146. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/k8s/kustomization.yaml +0 -0
  147. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/k8s/namespace.yaml +0 -0
  148. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/nginx.conf +0 -0
  149. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/nginx.http.conf.template +0 -0
  150. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/skaffold.yaml +0 -0
  151. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/start.sh +0 -0
  152. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/rerun_app/static/app_icon.png +0 -0
  153. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/robot_visualizer.py +0 -0
  154. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/safety_zones.py +0 -0
  155. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/stream_state.py +0 -0
  156. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/nova_rerun_bridge/trajectory.py +0 -0
  157. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/novax/__init__.py +0 -0
  158. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/novax/api/__init__.py +0 -0
  159. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/novax/api/dependencies.py +0 -0
  160. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/novax/api/programs.py +0 -0
  161. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/novax/config.py +0 -0
  162. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/novax/novax.py +0 -0
  163. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/novax/program_manager.py +0 -0
  164. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/nova_rerun_bridge/test_blueprint.py +0 -0
  165. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/nova_rerun_bridge/test_log_motion.py +0 -0
  166. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/nova_rerun_bridge/test_nova_rerun_bridge.py +0 -0
  167. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/nova_rerun_bridge/test_trajectory.py +0 -0
  168. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/api/test_nats.py +0 -0
  169. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/api/test_program_cycle.py +0 -0
  170. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/api/test_program_run.py +0 -0
  171. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/api/test_programs.py +0 -0
  172. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/conftest.py +0 -0
  173. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/serve.py +0 -0
  174. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/tests/novax/test_program_manager.py +0 -0
  175. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/vscode-ext/src/nova/readRobotPose.ts +0 -0
  176. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/vscode-ext/src/nova/selection.ts +0 -0
  177. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/CHANGELOG.md +0 -0
  178. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/README.md +0 -0
  179. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/__init__.py +0 -0
  180. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/__main__.py +0 -0
  181. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/antlrvisitor.py +0 -0
  182. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/__init__.py +0 -0
  183. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/array.py +0 -0
  184. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/assoc.py +0 -0
  185. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/controller.py +0 -0
  186. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/fetch.py +0 -0
  187. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/fs.py +0 -0
  188. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/math.py +0 -0
  189. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/pose.py +0 -0
  190. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/string.py +0 -0
  191. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins/wait.py +0 -0
  192. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/builtins.ws +0 -0
  193. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/cli.py +0 -0
  194. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/datatypes.py +0 -0
  195. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/and_or.json +0 -0
  196. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/and_or.ws +0 -0
  197. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/array.config +0 -0
  198. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/array.json +0 -0
  199. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/array.ws +0 -0
  200. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/assignment.json +0 -0
  201. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/assignment.ws +0 -0
  202. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/async_write.json +0 -0
  203. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/async_write.ws +0 -0
  204. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/blending.json +0 -0
  205. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/blending.ws +0 -0
  206. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/bool_negation.json +0 -0
  207. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/bool_negation.ws +0 -0
  208. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/builtins.json +0 -0
  209. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/builtins.ws +0 -0
  210. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/comments.json +0 -0
  211. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/comments.ws +0 -0
  212. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/context.json +0 -0
  213. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/context.ws +0 -0
  214. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/controller.cell.json +0 -0
  215. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/controller.json +0 -0
  216. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/controller.ws +0 -0
  217. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/coordinate_systems.json +0 -0
  218. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/coordinate_systems.ws +0 -0
  219. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/default.cell.json +0 -0
  220. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/default.json +0 -0
  221. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/default.ws +0 -0
  222. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/edge_pattern.json +0 -0
  223. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/edge_pattern.ws +0 -0
  224. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/edge_pattern_line.json +0 -0
  225. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/edge_pattern_line.ws +0 -0
  226. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/edge_pattern_manhattan.json +0 -0
  227. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/edge_pattern_manhattan.ws +0 -0
  228. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/empty.json +0 -0
  229. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/empty.ws +0 -0
  230. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/expressions.json +0 -0
  231. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/expressions.ws +0 -0
  232. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/fetch.json +0 -0
  233. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/fetch.ws +0 -0
  234. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/find_edge_from_4_poses.json +0 -0
  235. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/find_edge_from_4_poses.ws +0 -0
  236. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/frame.json +0 -0
  237. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/frame.ws +0 -0
  238. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/frame2.json +0 -0
  239. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/frame2.ws +0 -0
  240. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/frame3.cell.json +0 -0
  241. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/frame3.json +0 -0
  242. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/frame3.ws +0 -0
  243. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/function.json +0 -0
  244. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/function.ws +0 -0
  245. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/functional_pose.json +0 -0
  246. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/functional_pose.ws +0 -0
  247. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/get_pose.json +0 -0
  248. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/get_pose.ws +0 -0
  249. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/ifelse.json +0 -0
  250. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/ifelse.ws +0 -0
  251. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/interpolation.json +0 -0
  252. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/interpolation.ws +0 -0
  253. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/interrupt.json +0 -0
  254. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/interrupt.ws +0 -0
  255. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/io.json +0 -0
  256. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/io.ws +0 -0
  257. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/loops.json +0 -0
  258. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/loops.ws +0 -0
  259. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/move.json +0 -0
  260. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/move.ws +0 -0
  261. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/move_via_expression.json +0 -0
  262. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/move_via_expression.ws +0 -0
  263. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/move_with_velocity.json +0 -0
  264. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/move_with_velocity.ws +0 -0
  265. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots.cell.json +0 -0
  266. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots.json +0 -0
  267. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots.ws +0 -0
  268. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots2.cell.json +0 -0
  269. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots2.json +0 -0
  270. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots2.ws +0 -0
  271. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots3.cell.json +0 -0
  272. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots3.json +0 -0
  273. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/multiple_robots3.ws +0 -0
  274. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/not.json +0 -0
  275. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/not.ws +0 -0
  276. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/operator_precedence.json +0 -0
  277. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/operator_precedence.ws +0 -0
  278. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/pose.json +0 -0
  279. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/pose.ws +0 -0
  280. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/poses2.json +0 -0
  281. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/poses2.ws +0 -0
  282. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/print.json +0 -0
  283. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/print.ws +0 -0
  284. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/record.json +0 -0
  285. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/record.ws +0 -0
  286. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/scope.json +0 -0
  287. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/scope.ws +0 -0
  288. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/spline.json +0 -0
  289. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/spline.ws +0 -0
  290. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/switch.json +0 -0
  291. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/switch.ws +0 -0
  292. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/tcps.cell.json +0 -0
  293. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/tcps.json +0 -0
  294. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/tcps.ws +0 -0
  295. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/tower_of_hanoi.cell.json +0 -0
  296. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/tower_of_hanoi.json +0 -0
  297. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/tower_of_hanoi.ws +0 -0
  298. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/try.json +0 -0
  299. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/try.ws +0 -0
  300. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/vision_move.json +0 -0
  301. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/vision_move.ws +0 -0
  302. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wait.config +0 -0
  303. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wait.json +0 -0
  304. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wait.ws +0 -0
  305. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wandelchat2.json +0 -0
  306. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wandelchat2.ws +0 -0
  307. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wandelchat3.json +0 -0
  308. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wandelchat3.ws +0 -0
  309. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/whitespaces.json +0 -0
  310. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/whitespaces.ws +0 -0
  311. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wp393.json +0 -0
  312. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wp393.ws +0 -0
  313. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wp469.json +0 -0
  314. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples/wp469.ws +0 -0
  315. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/examples.py +0 -0
  316. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/exception.py +0 -0
  317. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/ffi.py +0 -0
  318. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/ffi_loader.py +0 -0
  319. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/frames.py +0 -0
  320. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/WandelscriptLexerBase.py +0 -0
  321. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/__init__.py +0 -0
  322. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptLexer.g4 +0 -0
  323. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptLexer.interp +0 -0
  324. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptLexer.py +0 -0
  325. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptLexer.tokens +0 -0
  326. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptParser.g4 +0 -0
  327. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptParser.interp +0 -0
  328. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptParser.py +0 -0
  329. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptParser.tokens +0 -0
  330. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptParserListener.py +0 -0
  331. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/grammar/wandelscriptParserVisitor.py +0 -0
  332. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/metamodel.py +0 -0
  333. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/migration.py +0 -0
  334. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/models.py +0 -0
  335. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/motions.py +0 -0
  336. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/operators.py +0 -0
  337. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/runner.py +0 -0
  338. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/runtime.py +0 -0
  339. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/scripts/generate_parser.sh +0 -0
  340. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/__init__.py +0 -0
  341. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_builtins.py +0 -0
  342. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_examples.py +0 -0
  343. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_executor.py +0 -0
  344. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_ffi.py +0 -0
  345. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_migration.py +0 -0
  346. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_motion.py +0 -0
  347. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_move.py +0 -0
  348. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_multirobot.py +0 -0
  349. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_parser.py +0 -0
  350. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_programs.py +0 -0
  351. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_run_twice.py +0 -0
  352. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_runner.py +0 -0
  353. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_runtime.py +0 -0
  354. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_simulation.py +0 -0
  355. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_stepwise.py +0 -0
  356. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_store.py +0 -0
  357. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_two_step_execution.py +0 -0
  358. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/tests/test_types.py +0 -0
  359. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/utils/__init__.py +0 -0
  360. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/utils/pose.py +0 -0
  361. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/utils/runtime.py +0 -0
  362. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/utils/serializer.py +0 -0
  363. {wandelbots_nova-3.3.3 → wandelbots_nova-3.3.4}/wandelscript/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wandelbots-nova
3
- Version: 3.3.3
3
+ Version: 3.3.4
4
4
  Summary: Official Python SDK for the Wandelbots Nova
5
5
  Author: Wandelbots GmbH
6
6
  Author-email: Christoph Biering <christoph.biering@wandelbots.com>, Mahsum Demir <mahsum.demir@wandelbots.com>, Dirk Sonnemann <dirk.sonnemann@wandelbots.com>, Andreas Langenhagen <andreas.langenhagen@wandelbots.com>, Stefan Wagner <stefan.wagner@wandelbots.com>, André Kühnert <andre.kuhnert@wandelbots.com>
@@ -1,6 +1,6 @@
1
1
  from dataclasses import dataclass
2
2
 
3
- from decouple import config
3
+ from nova.config import NOVA_AUTH0_AUDIENCE, NOVA_AUTH0_CLIENT_ID, NOVA_AUTH0_DOMAIN
4
4
 
5
5
 
6
6
  @dataclass
@@ -15,9 +15,7 @@ class Auth0Config:
15
15
  def from_env(cls) -> "Auth0Config":
16
16
  """Create Auth0Config from environment variables"""
17
17
  return cls(
18
- domain=config("NOVA_AUTH0_DOMAIN", default="auth.portal.wandelbots.io"),
19
- client_id=config("NOVA_AUTH0_CLIENT_ID", default="J7WJUi38xVQdJAEBNRT9Xw1b0fXDb4J2"),
20
- audience=config("NOVA_AUTH0_AUDIENCE", default="nova-api"),
18
+ domain=NOVA_AUTH0_DOMAIN, client_id=NOVA_AUTH0_CLIENT_ID, audience=NOVA_AUTH0_AUDIENCE
21
19
  )
22
20
 
23
21
  def is_complete(self) -> bool:
@@ -0,0 +1,103 @@
1
+ from urllib.parse import urlparse
2
+
3
+ from decouple import config
4
+ from pydantic import BaseModel, Field, model_validator
5
+
6
+ # Configuration for accessing the Nova platform
7
+ INTERNAL_CLUSTER_NOVA_API = "http://api-gateway.wandelbots.svc.cluster.local:8080"
8
+ NOVA_API = config("NOVA_API", default=INTERNAL_CLUSTER_NOVA_API)
9
+ NOVA_ACCESS_TOKEN = config("NOVA_ACCESS_TOKEN", default=None)
10
+ NOVA_USERNAME = config("NOVA_USERNAME", default=None)
11
+ NOVA_PASSWORD = config("NOVA_PASSWORD", default=None)
12
+
13
+ # Auth0 config
14
+ NOVA_AUTH0_DOMAIN = config("NOVA_AUTH0_DOMAIN", default="#{NOVA_AUTH0_DOMAIN}#")
15
+ NOVA_AUTH0_CLIENT_ID = config("NOVA_AUTH0_CLIENT_ID", default="#{NOVA_AUTH0_CLIENT_ID}#")
16
+ NOVA_AUTH0_AUDIENCE = config("NOVA_AUTH0_AUDIENCE", default="#{NOVA_AUTH0_AUDIENCE}#")
17
+
18
+ # Runtime configuration provided by the environment
19
+ NATS_BROKER = config("NATS_BROKER", default=None)
20
+ CELL_NAME = config("CELL_NAME", default="cell", cast=str)
21
+ BASE_PATH = config("BASE_PATH", default=None)
22
+ K8S_NAMESPACE = config("K8S_NAMESPACE", default="cell")
23
+
24
+ # Log configuration
25
+ LOG_LEVEL: str = config("LOG_LEVEL", default="INFO").upper()
26
+ LOG_FORMAT: str = config("LOG_FORMAT", default="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
27
+ LOG_DATETIME_FORMAT: str = config("LOG_DATETIME_FORMAT", default="%Y-%m-%d %H:%M:%S")
28
+ LOGGER_NAME: str = config("LOGGER_NAME", default="wandelbots-nova")
29
+
30
+ # Feature flags
31
+ ENABLE_TRAJECTORY_TUNING = config("ENABLE_TRAJECTORY_TUNING", cast=bool, default=False)
32
+
33
+
34
+ class NovaConfig(BaseModel):
35
+ """
36
+ Configuration for connecting to the Nova API.
37
+
38
+ Args:
39
+ host (str | None): The Nova API host.
40
+ access_token (str | None): An access token for the Nova API.
41
+ username (str | None): [Deprecated] Username to authenticate with the Nova API.
42
+ password (str | None): [Deprecated] Password to authenticate with the Nova API.
43
+ version (str): The API version to use (default: "v1").
44
+ verify_ssl (bool): Whether or not to verify SSL certificates (default: True).
45
+ nats_client_config (dict | None): Configuration dictionary for NATS client.
46
+ """
47
+
48
+ host: str | None = Field(default=None, description="Nova API host.")
49
+ access_token: str | None = Field(default=None, description="Access token for Nova API.")
50
+ username: str | None = Field(default=None, deprecated=True)
51
+ password: str | None = Field(default=None, deprecated=True)
52
+ verify_ssl: bool = Field(default=True)
53
+ nats_client_config: dict | None = Field(
54
+ default=None,
55
+ description="Client configuration to pass to the nats library. See: https://nats-io.github.io/nats.py/modules.html#nats.aio.client.Client.connect",
56
+ )
57
+
58
+ @model_validator(mode="after")
59
+ def _derive_nats_connection_string(self) -> "NovaConfig":
60
+ """
61
+ Automatically derive the NATS client configuration if not explicitly set.
62
+ """
63
+ # user has explicitly set the servers
64
+ if self.nats_client_config is not None and "servers" in self.nats_client_config:
65
+ return self
66
+
67
+ self.nats_client_config = self.nats_client_config or {}
68
+
69
+ # there is an environment variable NATS_BROKER set, use that
70
+ if NATS_BROKER:
71
+ self.nats_client_config["servers"] = NATS_BROKER
72
+ return self
73
+
74
+ # there is no host set, cannot derive NATS config
75
+ if not self.host:
76
+ return self
77
+
78
+ parsed_host = urlparse(self.host)
79
+ if parsed_host.scheme == "http":
80
+ self.nats_client_config["servers"] = (
81
+ f"ws://{parsed_host.hostname}:{parsed_host.port or 80}/api/nats"
82
+ )
83
+ return self
84
+
85
+ if parsed_host.scheme == "https" and self.access_token:
86
+ self.nats_client_config["servers"] = (
87
+ f"wss://{self.access_token}@{parsed_host.hostname}:{parsed_host.port or 443}/api/nats"
88
+ )
89
+ return self
90
+
91
+ # for backward compatiblity
92
+ if self.host and self.access_token and not parsed_host.scheme:
93
+ self.nats_client_config["servers"] = (
94
+ f"wss://{self.access_token}@{self.host}:{443}/api/nats"
95
+ )
96
+
97
+ return self
98
+
99
+
100
+ # default config to be used by the SDK if no other explict config is provided
101
+ default_config = NovaConfig(
102
+ host=NOVA_API, access_token=NOVA_ACCESS_TOKEN, username=NOVA_USERNAME, password=NOVA_PASSWORD
103
+ )
@@ -10,11 +10,17 @@ from urllib.parse import quote as original_quote
10
10
 
11
11
  import wandelbots_api_client as wb
12
12
  import wandelbots_api_client.v2 as v2
13
- from decouple import config
14
13
 
15
14
  from nova.auth.auth_config import Auth0Config
16
15
  from nova.auth.authorization import Auth0DeviceAuthorization
17
16
  from nova.cell.robot_cell import ConfigurablePeriphery, Device
17
+ from nova.config import ( # add to the module for backward compatibility
18
+ INTERNAL_CLUSTER_NOVA_API, # noqa: F401
19
+ NOVA_ACCESS_TOKEN,
20
+ NOVA_API,
21
+ NOVA_PASSWORD,
22
+ NOVA_USERNAME,
23
+ )
18
24
  from nova.core import logger
19
25
  from nova.core.env_handler import set_key
20
26
  from nova.core.exceptions import LoadPlanFailed, PlanTrajectoryFailed
@@ -31,8 +37,6 @@ def _custom_quote_for_ios(param, safe=""):
31
37
 
32
38
  T = TypeVar("T")
33
39
 
34
- INTERNAL_CLUSTER_NOVA_API = "http://api-gateway.wandelbots.svc.cluster.local:8080"
35
-
36
40
 
37
41
  class ComparisonType(Enum):
38
42
  COMPARISON_TYPE_EQUAL = "COMPARISON_TYPE_EQUAL"
@@ -111,17 +115,10 @@ class ApiGateway:
111
115
  verify_ssl: bool = True,
112
116
  auth0_config: Auth0Config | None = None,
113
117
  ):
114
- if host is None:
115
- host = config("NOVA_API", default=INTERNAL_CLUSTER_NOVA_API)
116
-
117
- if username is None:
118
- username = config("NOVA_USERNAME", default=None)
119
-
120
- if password is None:
121
- password = config("NOVA_PASSWORD", default=None)
122
-
123
- if access_token is None:
124
- access_token = config("NOVA_ACCESS_TOKEN", default=None)
118
+ host = host or NOVA_API
119
+ access_token = access_token or NOVA_ACCESS_TOKEN
120
+ username = username or NOVA_USERNAME
121
+ password = password or NOVA_PASSWORD
125
122
 
126
123
  self._version = version
127
124
  self._verify_ssl = verify_ssl
@@ -8,16 +8,15 @@ from warnings import warn
8
8
 
9
9
  import nova.logging as _new_logging_module
10
10
 
11
+ # backward compatibility
12
+ from nova.config import LOG_DATETIME_FORMAT, LOG_FORMAT, LOG_LEVEL, LOGGER_NAME # noqa: F401
13
+
11
14
  warn(
12
15
  "`nova.core.logging` is deprecated and will be removed in a future release; import from `nova.logging` instead.",
13
16
  FutureWarning,
14
17
  stacklevel=2,
15
18
  )
16
19
 
17
- LOG_LEVEL = _new_logging_module._LOG_LEVEL
18
- LOG_FORMAT = _new_logging_module._LOG_FORMAT
19
- LOG_DATETIME_FORMAT = _new_logging_module._LOG_DATETIME_FORMAT
20
- LOGGER_NAME = _new_logging_module._LOGGER_NAME
21
20
  formatter = _new_logging_module._formatter
22
21
  handler = _new_logging_module._handler
23
22
  logger = _new_logging_module.logger
@@ -3,13 +3,13 @@ from functools import partial
3
3
  from typing import AsyncIterable, cast
4
4
 
5
5
  import wandelbots_api_client as wb
6
- from decouple import config
7
6
 
8
7
  from nova.actions import Action, CombinedActions, MovementController, MovementControllerContext
9
8
  from nova.actions.mock import WaitAction
10
9
  from nova.actions.motions import CollisionFreeMotion, Motion
11
10
  from nova.api import models
12
11
  from nova.cell.robot_cell import AbstractRobot
12
+ from nova.config import ENABLE_TRAJECTORY_TUNING
13
13
  from nova.core import logger
14
14
  from nova.core.exceptions import InconsistentCollisionScenes
15
15
  from nova.core.gateway import ApiGateway
@@ -374,7 +374,7 @@ class MotionGroup(AbstractRobot):
374
374
  start_on_io: wb.models.StartOnIO | None = None,
375
375
  ) -> AsyncIterable[MovementResponse]:
376
376
  # This is the entrypoint for the trajectory tuning mode
377
- if config("ENABLE_TRAJECTORY_TUNING", cast=bool, default=False):
377
+ if ENABLE_TRAJECTORY_TUNING:
378
378
  logger.info("Entering trajectory tuning mode...")
379
379
  async for execute_response in self._tune_trajectory(joint_trajectory, tcp, actions):
380
380
  yield execute_response
@@ -1,19 +1,21 @@
1
1
  from __future__ import annotations
2
2
 
3
- from decouple import config as env_config
4
-
5
3
  from nova.cell.cell import Cell
6
- from nova.config import NovaConfig
4
+
5
+ # backward compatibility
6
+ from nova.config import ( # noqa: F401
7
+ CELL_NAME,
8
+ LOG_LEVEL,
9
+ NOVA_ACCESS_TOKEN,
10
+ NOVA_API,
11
+ NOVA_PASSWORD,
12
+ NOVA_USERNAME,
13
+ NovaConfig,
14
+ default_config,
15
+ )
7
16
  from nova.core.gateway import ApiGateway
8
17
  from nova.nats import NatsClient
9
18
 
10
- LOG_LEVEL = env_config("LOG_LEVEL", default="INFO")
11
- CELL_NAME = env_config("CELL_NAME", default="cell", cast=str)
12
- NOVA_API = env_config("NOVA_API", default=None)
13
- NOVA_ACCESS_TOKEN = env_config("NOVA_ACCESS_TOKEN", default=None)
14
- NOVA_USERNAME = env_config("NOVA_USERNAME", default=None)
15
- NOVA_PASSWORD = env_config("NOVA_PASSWORD", default=None)
16
-
17
19
 
18
20
  class Nova:
19
21
  """A high-level Nova client for interacting with robot cells and controllers."""
@@ -26,27 +28,15 @@ class Nova:
26
28
  config (NovaConfig | None): The Nova configuration.
27
29
  """
28
30
 
29
- config = config or NovaConfig(
30
- host=NOVA_API,
31
- access_token=NOVA_ACCESS_TOKEN,
32
- username=NOVA_USERNAME,
33
- password=NOVA_PASSWORD,
34
- )
35
-
36
- self._config = config
31
+ self._config = config or default_config
37
32
  self._api_client = ApiGateway(
38
- host=config.host,
39
- access_token=config.access_token,
40
- username=config.username,
41
- password=config.password,
42
- verify_ssl=config.verify_ssl,
43
- )
44
-
45
- self.nats = NatsClient(
46
- host=config.host,
47
- access_token=config.access_token,
48
- nats_client_config=config.nats_client_config,
33
+ host=self._config.host,
34
+ access_token=self._config.access_token,
35
+ username=self._config.username,
36
+ password=self._config.password,
37
+ verify_ssl=self._config.verify_ssl,
49
38
  )
39
+ self.nats = NatsClient(nats_client_config=self._config.nats_client_config)
50
40
 
51
41
  @property
52
42
  def config(self) -> NovaConfig:
@@ -3,19 +3,19 @@ from datetime import datetime, timedelta
3
3
  from typing import Any, Literal
4
4
  from uuid import UUID, uuid4
5
5
 
6
- from decouple import config
7
6
  from pydantic import BaseModel, Field
8
7
 
9
8
  from nova.cell.cell import Cell
10
9
  from nova.cell.robot_cell import Device, OutputDevice
10
+ from nova.config import BASE_PATH
11
11
  from nova.logging import logger
12
12
  from nova.nats import Message as NatsMessage
13
13
 
14
14
  # Read BASE_PATH environment variable and extract app name
15
15
  # TODO: make a util and move the logic there
16
- _BASE_PATH = config("BASE_PATH", default=None)
17
- if _BASE_PATH:
18
- _APP_NAME = _BASE_PATH.split("/")[-1] if "/" in _BASE_PATH else None
16
+
17
+ if BASE_PATH:
18
+ _APP_NAME = BASE_PATH.split("/")[-1] if "/" in BASE_PATH else None
19
19
  else:
20
20
  _APP_NAME = None
21
21
 
@@ -13,9 +13,9 @@ from asyncua.common import Node
13
13
  from asyncua.common.subscription import DataChangeNotif, DataChangeNotificationHandlerAsync
14
14
  from asyncua.crypto import security_policies
15
15
  from asyncua.ua import CreateSubscriptionParameters, DataValue, Variant, VariantType
16
- from decouple import config
17
16
 
18
17
  from nova import logger
18
+ from nova.config import K8S_NAMESPACE
19
19
 
20
20
 
21
21
  class DataChangeSubscription(DataChangeNotificationHandlerAsync):
@@ -73,7 +73,7 @@ class SubscriptionConfig(pydantic.BaseModel):
73
73
 
74
74
 
75
75
  async def fetch_certificate(certificate_path: str, private_key_path: str) -> tuple[bytes, bytes]:
76
- cell = config("K8S_NAMESPACE", default="cell")
76
+ cell = K8S_NAMESPACE
77
77
 
78
78
  cert_url = f"http://api-gateway:8080/api/v1/cells/{cell}/store/objects/{certificate_path}"
79
79
  private_key_url = (
@@ -0,0 +1,14 @@
1
+ import logging
2
+ import sys
3
+
4
+ from nova.config import LOG_DATETIME_FORMAT, LOG_FORMAT, LOG_LEVEL, LOGGER_NAME
5
+
6
+ # Setting up the underlying logger
7
+ _formatter: logging.Formatter = logging.Formatter(LOG_FORMAT, datefmt=LOG_DATETIME_FORMAT)
8
+ _handler: logging.StreamHandler = logging.StreamHandler(sys.stdout)
9
+ _handler.setLevel(LOG_LEVEL)
10
+ _handler.setFormatter(_formatter)
11
+
12
+ logger: logging.Logger = logging.getLogger(LOGGER_NAME)
13
+ logger.setLevel(LOG_LEVEL)
14
+ logger.addHandler(_handler)
@@ -6,7 +6,6 @@ import asyncio
6
6
  from typing import Awaitable, Callable
7
7
 
8
8
  import nats
9
- from decouple import config
10
9
  from nats.aio.msg import Msg as NatsLibMessage
11
10
 
12
11
  from nova.logging import logger
@@ -16,70 +15,30 @@ from nova.nats.message import Message
16
15
  class NatsClient:
17
16
  """NATS client for Nova with connection management and publishing capabilities."""
18
17
 
19
- def __init__(
20
- self,
21
- host: str | None = None,
22
- access_token: str | None = None,
23
- # TODO: accept "broker" parameter so the user can override the connection string
24
- nats_client_config: dict | None = None,
25
- ):
18
+ def __init__(self, nats_client_config: dict | None = None):
26
19
  """
27
20
  Initialize the NATS client.
28
21
 
29
22
  Args:
30
- host (str | None): The Nova API host.
31
- access_token (str | None): An access token for authentication.
32
23
  nats_client_config (dict | None): Configuration dictionary for NATS client.
33
24
  """
34
- self._host = host
35
- self._access_token = access_token
36
25
  self._nats_config = nats_client_config or {}
37
26
  self._nats_client: nats.NATS | None = None
38
- self._nats_connection_string: str = ""
39
27
  self._connect_lock = asyncio.Lock()
40
- self._init_nats_client()
41
-
42
- # TODO: nats connection string is not built correctly when being accessed like below
43
- # nova.nats -> here we are still dependent on NATS_BROKER env variable
44
- def _init_nats_client(self) -> None:
45
- host = self._host
46
- token = self._access_token
47
-
48
- self._nats_connection_string = config("NATS_BROKER", default=None)
49
-
50
- if not self._nats_connection_string and host and token:
51
- host = host.strip()
52
- is_http = host.startswith("http://")
53
- # Remove protocol and trailing slashes
54
- clean_host = host.replace("https://", "").replace("http://", "").rstrip("/")
55
-
56
- scheme, port = ("ws", 80) if is_http else ("wss", 443)
57
- auth = f"{token}@"
58
-
59
- self._nats_connection_string = f"{scheme}://{auth}{clean_host}:{port}/api/nats"
60
- return
61
-
62
- logger.debug("Host and token not both set; reading NATS connection from env var")
63
-
64
- if not self._nats_connection_string:
65
- logger.warning("NATS connection string is not set. NATS client will be disabled.")
66
28
 
67
29
  async def connect(self):
68
30
  """Connect to NATS server.
69
31
 
70
32
  Subsequent calls are no-ops while connected.
71
33
  """
72
- if not self._nats_connection_string:
73
- logger.info("NATS client is not configured. Skipping connection.")
74
- return
34
+ if "servers" not in self._nats_config:
35
+ raise ValueError("NATS connection is missing.")
75
36
 
76
37
  async with self._connect_lock:
77
38
  if self._nats_client is not None:
78
39
  return
79
40
 
80
- self._nats_client = await nats.connect(
81
- self._nats_connection_string, **self._nats_config
82
- )
41
+ self._nats_client = await nats.connect(**self._nats_config)
83
42
  logger.debug("NATS client connected successfully")
84
43
 
85
44
  async def close(self):
@@ -105,8 +64,6 @@ class NatsClient:
105
64
  Returns:
106
65
  bool: True if the NATS client is connected, False otherwise.
107
66
  """
108
- if not self._nats_connection_string:
109
- return False
110
67
  return self._nats_client is not None and self._nats_client.is_connected
111
68
 
112
69
  async def publish_message(self, message: Message) -> None:
@@ -16,7 +16,6 @@ from typing import Any, Coroutine, Optional
16
16
  import anyio
17
17
  from anyio import from_thread, to_thread
18
18
  from anyio.abc import TaskStatus
19
- from decouple import config
20
19
  from exceptiongroup import ExceptionGroup
21
20
  from loguru import logger
22
21
  from pydantic import BaseModel, Field, StrictStr
@@ -25,6 +24,7 @@ from wandelbots_api_client.v2.models import ProgramRunState
25
24
 
26
25
  from nova import Nova, NovaConfig, api
27
26
  from nova.cell.robot_cell import RobotCell
27
+ from nova.config import CELL_NAME
28
28
  from nova.core.exceptions import PlanTrajectoryFailed
29
29
  from nova.nats import Message
30
30
  from nova.program.exceptions import NotPlannableError
@@ -33,8 +33,6 @@ from nova.program.utils import Tee, stoppable_run
33
33
  from nova.types import MotionState
34
34
  from nova.utils import timestamp
35
35
 
36
- _CELL_NAME = config("CELL_NAME", default="")
37
-
38
36
  current_execution_context_var: contextvars.ContextVar = contextvars.ContextVar(
39
37
  "current_execution_context_var"
40
38
  )
@@ -112,7 +110,7 @@ class ProgramRunner(ABC):
112
110
  self._preconditions = program.preconditions
113
111
  self._parameters = parameters
114
112
  self._robot_cell_override = robot_cell_override
115
- self._cell_id = cell_id or _CELL_NAME
113
+ self._cell_id = cell_id or CELL_NAME
116
114
  self._app_name = app_name
117
115
  self._nova_config = nova_config
118
116
  self._program_run: ProgramRun = ProgramRun(
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wandelbots-nova"
3
- version = "3.3.3"
3
+ version = "3.3.4"
4
4
  description = "Official Python SDK for the Wandelbots Nova"
5
5
  authors = [
6
6
  { name = "Wandelbots GmbH" },
@@ -132,22 +132,6 @@ async def verify_program_definition_all_sources(
132
132
  found_program = await get_from_novax(client, decorated_program.program_id)
133
133
  assert_program_definition_matches(decorated_program, found_program)
134
134
 
135
- # NATS
136
- all_programs = await get_all_from_nats()
137
- found_program = filter_programs_by_name(all_programs, decorated_program.program_id, "novax")
138
- assert_program_definition_matches(decorated_program, found_program)
139
-
140
- found_program = await get_from_nats(decorated_program.program_id)
141
- assert_program_definition_matches(decorated_program, found_program)
142
-
143
- # Discovery Service
144
- all_programs = await get_all_from_discovery_service()
145
- found_program = filter_programs_by_name(all_programs, decorated_program.program_id, "novax")
146
- assert_program_definition_matches(decorated_program, found_program)
147
-
148
- found_program = await get_from_discovery_service(decorated_program.program_id)
149
- assert_program_definition_matches(decorated_program, found_program)
150
-
151
135
 
152
136
  @pytest.mark.integration
153
137
  @pytest.mark.asyncio
@@ -1,23 +0,0 @@
1
- from pydantic import BaseModel, Field
2
-
3
-
4
- class NovaConfig(BaseModel):
5
- """
6
- Configuration for connecting to the Nova API.
7
-
8
- Args:
9
- host (str | None): The Nova API host.
10
- access_token (str | None): An access token for the Nova API.
11
- username (str | None): [Deprecated] Username to authenticate with the Nova API.
12
- password (str | None): [Deprecated] Password to authenticate with the Nova API.
13
- version (str): The API version to use (default: "v1").
14
- verify_ssl (bool): Whether or not to verify SSL certificates (default: True).
15
- nats_client_config (dict | None): Configuration dictionary for NATS client.
16
- """
17
-
18
- host: str | None = Field(default=None, description="Nova API host.")
19
- access_token: str | None = None
20
- username: str | None = Field(default=None, deprecated=True)
21
- password: str | None = Field(default=None, deprecated=True)
22
- verify_ssl: bool = Field(default=True)
23
- nats_client_config: dict | None = None
@@ -1,19 +0,0 @@
1
- import logging
2
- import sys
3
-
4
- from decouple import config
5
-
6
- _LOG_LEVEL: str = config("LOG_LEVEL", default="INFO").upper()
7
- _LOG_FORMAT: str = config("LOG_FORMAT", default="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
8
- _LOG_DATETIME_FORMAT: str = config("LOG_DATETIME_FORMAT", default="%Y-%m-%d %H:%M:%S")
9
- _LOGGER_NAME: str = config("LOGGER_NAME", default="wandelbots-nova")
10
-
11
- # Setting up the underlying logger
12
- _formatter: logging.Formatter = logging.Formatter(_LOG_FORMAT, datefmt=_LOG_DATETIME_FORMAT)
13
- _handler: logging.StreamHandler = logging.StreamHandler(sys.stdout)
14
- _handler.setLevel(_LOG_LEVEL)
15
- _handler.setFormatter(_formatter)
16
-
17
- logger: logging.Logger = logging.getLogger(_LOGGER_NAME)
18
- logger.setLevel(_LOG_LEVEL)
19
- logger.addHandler(_handler)
File without changes