wandelbots-nova 3.2.0__tar.gz → 3.3.0__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 (361) hide show
  1. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/PKG-INFO +1 -1
  2. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/runner.py +33 -17
  3. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/novax.py +10 -2
  4. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/program_manager.py +1 -0
  5. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/pyproject.toml +1 -1
  6. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_program_run.py +46 -28
  7. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/conftest.py +1 -1
  8. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/.gitignore +0 -0
  9. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/LICENSE +0 -0
  10. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/README.md +0 -0
  11. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/__init__.py +0 -0
  12. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/__init__.py +0 -0
  13. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/base.py +0 -0
  14. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/container.py +0 -0
  15. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/io.py +0 -0
  16. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/mock.py +0 -0
  17. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/motions.py +0 -0
  18. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/trajectory_builder.py +0 -0
  19. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/api.py +0 -0
  20. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/api.pyi +0 -0
  21. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/auth/__init__.py +0 -0
  22. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/auth/auth_config.py +0 -0
  23. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/auth/authorization.py +0 -0
  24. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/__init__.py +0 -0
  25. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/cell.py +0 -0
  26. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/controllers.py +0 -0
  27. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/robot_cell.py +0 -0
  28. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/simulation.py +0 -0
  29. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/config.py +0 -0
  30. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/__init__.py +0 -0
  31. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/controller.py +0 -0
  32. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/env_handler.py +0 -0
  33. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/exceptions.py +0 -0
  34. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/gateway.py +0 -0
  35. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/io.py +0 -0
  36. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/logging.py +0 -0
  37. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/motion_group.py +0 -0
  38. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/movement_controller.py +0 -0
  39. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/nova.py +0 -0
  40. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/tuner.py +0 -0
  41. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/events/__init__.py +0 -0
  42. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/__init__.py +0 -0
  43. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/opcua/__init__.py +0 -0
  44. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/opcua/client.py +0 -0
  45. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/opcua/functions.py +0 -0
  46. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/logging/__init__.py +0 -0
  47. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/nats/__init__.py +0 -0
  48. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/nats/client.py +0 -0
  49. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/nats/message.py +0 -0
  50. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/__init__.py +0 -0
  51. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/exceptions.py +0 -0
  52. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/function.py +0 -0
  53. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/store.py +0 -0
  54. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/utils.py +0 -0
  55. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/__init__.py +0 -0
  56. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/collision_scene.py +0 -0
  57. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/motion_settings.py +0 -0
  58. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/pose.py +0 -0
  59. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/state.py +0 -0
  60. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/vector3d.py +0 -0
  61. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/utils/__init__.py +0 -0
  62. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/utils/timestamp.py +0 -0
  63. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/version.py +0 -0
  64. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/__init__.py +0 -0
  65. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/base.py +0 -0
  66. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/manager.py +0 -0
  67. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/protocol.py +0 -0
  68. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/rerun.py +0 -0
  69. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/utils.py +0 -0
  70. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/LICENSE +0 -0
  71. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/README.md +0 -0
  72. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/__init__.py +0 -0
  73. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/README.md +0 -0
  74. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/benchmark_base.py +0 -0
  75. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/README.md +0 -0
  76. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/demo_set.yaml +0 -0
  77. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/mb_set.yaml +0 -0
  78. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/mpinets_set.yaml +0 -0
  79. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/datasets.py +0 -0
  80. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/log_successful_planning.py +0 -0
  81. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/robometrics_helper.py +0 -0
  82. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/run_collision_free_benchmark.py +0 -0
  83. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/run_collision_free_magma.py +0 -0
  84. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/run_ptp_benchmark.py +0 -0
  85. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/blueprint.py +0 -0
  86. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/collision_scene.py +0 -0
  87. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/colors.py +0 -0
  88. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/consts.py +0 -0
  89. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/conversion_helpers.py +0 -0
  90. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/dh_robot.py +0 -0
  91. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/Welding_Benchmark_USA_01.stl +0 -0
  92. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/bin_everything_05.ply +0 -0
  93. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/colliders.json +0 -0
  94. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/source.md +0 -0
  95. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/tool.stl +0 -0
  96. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/yaskawa_ar1440_rif_with_safety_zones.json +0 -0
  97. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/collison_world.py +0 -0
  98. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/import_ply.py +0 -0
  99. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/reachability_check.py +0 -0
  100. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/robocore.py +0 -0
  101. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/stream_robot.py +0 -0
  102. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/use_nova_rerun_bridge.py +0 -0
  103. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/visualize_tool.py +0 -0
  104. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/wait_action.py +0 -0
  105. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/welding_example.py +0 -0
  106. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/yaskawa-ar1440-16-mounting.json +0 -0
  107. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/yaskawa-ar1440-with-external-axis.json +0 -0
  108. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/README.md +0 -0
  109. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/__init__.py +0 -0
  110. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/code_server_helpers.py +0 -0
  111. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/download_models.py +0 -0
  112. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/plan_with_collisions.py +0 -0
  113. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/hull_visualizer.py +0 -0
  114. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/.gitignore +0 -0
  115. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/README.md +0 -0
  116. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/main.py +0 -0
  117. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/poetry.toml +0 -0
  118. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/pyproject.toml +0 -0
  119. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/ruff.toml +0 -0
  120. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/uv.lock +0 -0
  121. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/motion_recorder.py +0 -0
  122. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/motion_storage.py +0 -0
  123. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge.py +0 -0
  124. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/.dockerignore +0 -0
  125. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/.nova +0 -0
  126. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/Dockerfile +0 -0
  127. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/app.yaml +0 -0
  128. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/build.sh +0 -0
  129. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/data/README.md +0 -0
  130. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/deployment.yaml +0 -0
  131. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/ingress.yaml +0 -0
  132. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/kustomization.yaml +0 -0
  133. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/namespace.yaml +0 -0
  134. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/nginx.conf +0 -0
  135. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/nginx.http.conf.template +0 -0
  136. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/skaffold.yaml +0 -0
  137. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/start.sh +0 -0
  138. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/static/app_icon.png +0 -0
  139. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/polling/populate.py +0 -0
  140. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/.dockerignore +0 -0
  141. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/.nova +0 -0
  142. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/Dockerfile +0 -0
  143. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/app.yaml +0 -0
  144. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/build.sh +0 -0
  145. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/deployment.yaml +0 -0
  146. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/ingress.yaml +0 -0
  147. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/kustomization.yaml +0 -0
  148. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/namespace.yaml +0 -0
  149. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/nginx.conf +0 -0
  150. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/nginx.http.conf.template +0 -0
  151. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/skaffold.yaml +0 -0
  152. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/start.sh +0 -0
  153. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/static/app_icon.png +0 -0
  154. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/robot_visualizer.py +0 -0
  155. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/safety_zones.py +0 -0
  156. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/stream_state.py +0 -0
  157. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/trajectory.py +0 -0
  158. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/__init__.py +0 -0
  159. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/api/__init__.py +0 -0
  160. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/api/dependencies.py +0 -0
  161. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/api/programs.py +0 -0
  162. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/config.py +0 -0
  163. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_blueprint.py +0 -0
  164. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_log_motion.py +0 -0
  165. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_nova_rerun_bridge.py +0 -0
  166. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_trajectory.py +0 -0
  167. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_nats.py +0 -0
  168. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_program_cycle.py +0 -0
  169. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_program_registry.py +0 -0
  170. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_programs.py +0 -0
  171. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/serve.py +0 -0
  172. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/test_program_manager.py +0 -0
  173. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/vscode-ext/src/nova/readRobotPose.ts +0 -0
  174. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/vscode-ext/src/nova/selection.ts +0 -0
  175. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/CHANGELOG.md +0 -0
  176. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/README.md +0 -0
  177. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/__init__.py +0 -0
  178. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/__main__.py +0 -0
  179. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/antlrvisitor.py +0 -0
  180. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/__init__.py +0 -0
  181. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/array.py +0 -0
  182. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/assoc.py +0 -0
  183. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/controller.py +0 -0
  184. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/fetch.py +0 -0
  185. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/fs.py +0 -0
  186. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/math.py +0 -0
  187. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/pose.py +0 -0
  188. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/string.py +0 -0
  189. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/wait.py +0 -0
  190. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins.ws +0 -0
  191. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/cli.py +0 -0
  192. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/datatypes.py +0 -0
  193. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/and_or.json +0 -0
  194. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/and_or.ws +0 -0
  195. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/array.config +0 -0
  196. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/array.json +0 -0
  197. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/array.ws +0 -0
  198. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/assignment.json +0 -0
  199. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/assignment.ws +0 -0
  200. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/async_write.json +0 -0
  201. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/async_write.ws +0 -0
  202. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/blending.json +0 -0
  203. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/blending.ws +0 -0
  204. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/bool_negation.json +0 -0
  205. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/bool_negation.ws +0 -0
  206. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/builtins.json +0 -0
  207. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/builtins.ws +0 -0
  208. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/comments.json +0 -0
  209. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/comments.ws +0 -0
  210. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/context.json +0 -0
  211. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/context.ws +0 -0
  212. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/controller.cell.json +0 -0
  213. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/controller.json +0 -0
  214. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/controller.ws +0 -0
  215. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/coordinate_systems.json +0 -0
  216. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/coordinate_systems.ws +0 -0
  217. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/default.cell.json +0 -0
  218. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/default.json +0 -0
  219. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/default.ws +0 -0
  220. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern.json +0 -0
  221. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern.ws +0 -0
  222. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_line.json +0 -0
  223. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_line.ws +0 -0
  224. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_manhattan.json +0 -0
  225. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_manhattan.ws +0 -0
  226. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/empty.json +0 -0
  227. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/empty.ws +0 -0
  228. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/expressions.json +0 -0
  229. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/expressions.ws +0 -0
  230. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/fetch.json +0 -0
  231. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/fetch.ws +0 -0
  232. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/find_edge_from_4_poses.json +0 -0
  233. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/find_edge_from_4_poses.ws +0 -0
  234. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame.json +0 -0
  235. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame.ws +0 -0
  236. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame2.json +0 -0
  237. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame2.ws +0 -0
  238. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame3.cell.json +0 -0
  239. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame3.json +0 -0
  240. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame3.ws +0 -0
  241. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/function.json +0 -0
  242. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/function.ws +0 -0
  243. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/functional_pose.json +0 -0
  244. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/functional_pose.ws +0 -0
  245. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/get_pose.json +0 -0
  246. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/get_pose.ws +0 -0
  247. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/ifelse.json +0 -0
  248. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/ifelse.ws +0 -0
  249. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interpolation.json +0 -0
  250. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interpolation.ws +0 -0
  251. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interrupt.json +0 -0
  252. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interrupt.ws +0 -0
  253. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/io.json +0 -0
  254. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/io.ws +0 -0
  255. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/loops.json +0 -0
  256. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/loops.ws +0 -0
  257. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move.json +0 -0
  258. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move.ws +0 -0
  259. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_via_expression.json +0 -0
  260. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_via_expression.ws +0 -0
  261. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_with_velocity.json +0 -0
  262. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_with_velocity.ws +0 -0
  263. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots.cell.json +0 -0
  264. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots.json +0 -0
  265. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots.ws +0 -0
  266. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots2.cell.json +0 -0
  267. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots2.json +0 -0
  268. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots2.ws +0 -0
  269. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots3.cell.json +0 -0
  270. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots3.json +0 -0
  271. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots3.ws +0 -0
  272. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/not.json +0 -0
  273. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/not.ws +0 -0
  274. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/operator_precedence.json +0 -0
  275. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/operator_precedence.ws +0 -0
  276. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/pose.json +0 -0
  277. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/pose.ws +0 -0
  278. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/poses2.json +0 -0
  279. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/poses2.ws +0 -0
  280. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/print.json +0 -0
  281. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/print.ws +0 -0
  282. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/record.json +0 -0
  283. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/record.ws +0 -0
  284. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/scope.json +0 -0
  285. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/scope.ws +0 -0
  286. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/spline.json +0 -0
  287. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/spline.ws +0 -0
  288. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/switch.json +0 -0
  289. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/switch.ws +0 -0
  290. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tcps.cell.json +0 -0
  291. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tcps.json +0 -0
  292. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tcps.ws +0 -0
  293. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tower_of_hanoi.cell.json +0 -0
  294. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tower_of_hanoi.json +0 -0
  295. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tower_of_hanoi.ws +0 -0
  296. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/try.json +0 -0
  297. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/try.ws +0 -0
  298. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/vision_move.json +0 -0
  299. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/vision_move.ws +0 -0
  300. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wait.config +0 -0
  301. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wait.json +0 -0
  302. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wait.ws +0 -0
  303. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat2.json +0 -0
  304. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat2.ws +0 -0
  305. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat3.json +0 -0
  306. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat3.ws +0 -0
  307. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/whitespaces.json +0 -0
  308. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/whitespaces.ws +0 -0
  309. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp393.json +0 -0
  310. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp393.ws +0 -0
  311. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp469.json +0 -0
  312. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp469.ws +0 -0
  313. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples.py +0 -0
  314. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/exception.py +0 -0
  315. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/ffi.py +0 -0
  316. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/ffi_loader.py +0 -0
  317. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/frames.py +0 -0
  318. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/WandelscriptLexerBase.py +0 -0
  319. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/__init__.py +0 -0
  320. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.g4 +0 -0
  321. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.interp +0 -0
  322. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.py +0 -0
  323. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.tokens +0 -0
  324. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.g4 +0 -0
  325. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.interp +0 -0
  326. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.py +0 -0
  327. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.tokens +0 -0
  328. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParserListener.py +0 -0
  329. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParserVisitor.py +0 -0
  330. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/metamodel.py +0 -0
  331. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/migration.py +0 -0
  332. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/models.py +0 -0
  333. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/motions.py +0 -0
  334. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/operators.py +0 -0
  335. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/runner.py +0 -0
  336. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/runtime.py +0 -0
  337. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/scripts/generate_parser.sh +0 -0
  338. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/__init__.py +0 -0
  339. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_builtins.py +0 -0
  340. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_examples.py +0 -0
  341. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_executor.py +0 -0
  342. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_ffi.py +0 -0
  343. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_migration.py +0 -0
  344. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_motion.py +0 -0
  345. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_move.py +0 -0
  346. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_multirobot.py +0 -0
  347. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_parser.py +0 -0
  348. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_programs.py +0 -0
  349. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_run_twice.py +0 -0
  350. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_runner.py +0 -0
  351. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_runtime.py +0 -0
  352. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_simulation.py +0 -0
  353. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_stepwise.py +0 -0
  354. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_store.py +0 -0
  355. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_two_step_execution.py +0 -0
  356. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_types.py +0 -0
  357. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/__init__.py +0 -0
  358. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/pose.py +0 -0
  359. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/runtime.py +0 -0
  360. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/serializer.py +0 -0
  361. {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wandelbots-nova
3
- Version: 3.2.0
3
+ Version: 3.3.0
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>
@@ -3,7 +3,6 @@ import contextlib
3
3
  import contextvars
4
4
  import inspect
5
5
  import io
6
- import json
7
6
  import sys
8
7
  import threading
9
8
  import traceback as tb
@@ -11,6 +10,7 @@ import uuid
11
10
  from abc import ABC, abstractmethod
12
11
  from collections.abc import Awaitable, Callable
13
12
  from concurrent.futures import Future
13
+ from datetime import datetime
14
14
  from typing import Any, Coroutine, Optional
15
15
 
16
16
  import anyio
@@ -19,6 +19,7 @@ from anyio.abc import TaskStatus
19
19
  from decouple import config
20
20
  from exceptiongroup import ExceptionGroup
21
21
  from loguru import logger
22
+ from pydantic import BaseModel, Field, StrictStr
22
23
  from wandelbots_api_client.v2.models import ProgramRun as ApiProgramRun
23
24
  from wandelbots_api_client.v2.models import ProgramRunState
24
25
 
@@ -44,6 +45,18 @@ class ProgramRun(ApiProgramRun):
44
45
  output_data: dict[str, Any] = {}
45
46
 
46
47
 
48
+ class ProgramStatus(BaseModel):
49
+ run: StrictStr = Field(description="Unique identifier of the program run")
50
+ program: StrictStr = Field(description="Unique identifier of the program")
51
+ app: Optional[StrictStr] = Field(description="The app name where the program is hosted")
52
+ state: ProgramRunState = Field(description="State of the program run")
53
+ start_time: Optional[datetime] = Field(
54
+ default=None, description="Start time of the program run"
55
+ )
56
+ end_time: Optional[datetime] = Field(default=None, description="End time of the program run")
57
+ timestamp: datetime = Field(description="The RC3339 timestamp when the message was created")
58
+
59
+
47
60
  # TODO: should provide a number of tools to the program to control the execution of the program
48
61
  class ExecutionContext:
49
62
  # Maps the motion group id to the list of recorded motion lists
@@ -146,6 +159,18 @@ class ProgramRunner(ABC):
146
159
  """
147
160
  return self._program_run
148
161
 
162
+ @property
163
+ def program_status(self) -> ProgramStatus:
164
+ return ProgramStatus(
165
+ run=self._program_run.run,
166
+ program=self._program_run.program,
167
+ app=self._app_name,
168
+ state=self._program_run.state,
169
+ start_time=self._program_run.start_time,
170
+ end_time=self._program_run.end_time,
171
+ timestamp=timestamp.now_utc(),
172
+ )
173
+
149
174
  @property
150
175
  def state(self) -> ProgramRunState:
151
176
  """Get the current state of the program run.
@@ -310,24 +335,11 @@ class ProgramRunner(ABC):
310
335
  await on_state_change()
311
336
 
312
337
  if nova is not None:
313
- # publish program run to NATS
314
- # TODO: also use autogenerated model for NATS
315
- data = self._program_run.model_dump()
316
- data["timestamp"] = timestamp.now_rfc3339()
317
- data["start_time"] = (
318
- timestamp.datetime_to_rfc3339(self._program_run.start_time)
319
- if self._program_run.start_time
320
- else None
321
- )
322
- data["end_time"] = (
323
- timestamp.datetime_to_rfc3339(self._program_run.end_time)
324
- if self._program_run.end_time
325
- else None
326
- )
327
- data["app"] = self._app_name
338
+ data = self.program_status.model_dump_json().encode("utf-8")
328
339
 
340
+ # publish program run to NATS
329
341
  subject = f"nova.v2.cells.{self._cell_id}.programs"
330
- message = Message(subject=subject, data=json.dumps(data).encode("utf-8"))
342
+ message = Message(subject=subject, data=data)
331
343
  await nova.nats.publish_message(message)
332
344
 
333
345
  async def _run_program(
@@ -469,12 +481,14 @@ class PythonProgramRunner(ProgramRunner):
469
481
  parameters: Optional[dict[str, Any]] = None,
470
482
  robot_cell_override: RobotCell | None = None,
471
483
  nova_config: NovaConfig | None = None,
484
+ app_name: str | None = None,
472
485
  ):
473
486
  super().__init__(
474
487
  program,
475
488
  parameters=parameters or {},
476
489
  robot_cell_override=robot_cell_override,
477
490
  nova_config=nova_config,
491
+ app_name=app_name,
478
492
  )
479
493
  # TODO: is this still required?
480
494
  self.program = program
@@ -541,6 +555,7 @@ def run_program(
541
555
  robot_cell_override: RobotCell | None = None,
542
556
  on_state_change: Callable[[ProgramRun], Coroutine[Any, Any, None]] | None = None,
543
557
  nova_config: NovaConfig | None = None,
558
+ app_name: str | None = None,
544
559
  ) -> PythonProgramRunner:
545
560
  """Run a program with given parameters.
546
561
 
@@ -560,6 +575,7 @@ def run_program(
560
575
  parameters=parameters,
561
576
  robot_cell_override=robot_cell_override,
562
577
  nova_config=nova_config,
578
+ app_name=app_name,
563
579
  )
564
580
 
565
581
  # Try to grab a caller loop if there is one; otherwise, fall back to None.
@@ -13,12 +13,20 @@ from novax.program_manager import ProgramDetails, ProgramManager
13
13
 
14
14
 
15
15
  class Novax:
16
- def __init__(self):
16
+ def __init__(self, *, app_name: str | None = None):
17
+ """Initialize the Novax class.
18
+
19
+ Args:
20
+ app_name (str | None, optional): This one is read from the environment variable APP_NAME. Only change it for development purposes. Defaults to None.
21
+ """
22
+ app_name = app_name or APP_NAME
23
+
17
24
  nova = Nova()
18
25
  self._nova = nova
19
26
  self._cell = self._nova.cell(cell_id=CELL_NAME)
27
+
20
28
  self._program_manager: ProgramManager = ProgramManager(
21
- cell_id=CELL_NAME, app_name=APP_NAME, nova_config=nova.config
29
+ cell_id=CELL_NAME, app_name=app_name, nova_config=nova.config
22
30
  )
23
31
  self._app: FastAPI | None = None
24
32
 
@@ -128,6 +128,7 @@ class ProgramManager:
128
128
  on_state_change=on_state_change,
129
129
  nova_config=self._nova_config,
130
130
  robot_cell_override=self._robot_cell_override,
131
+ app_name=self._app_name,
131
132
  )
132
133
 
133
134
  self._runner = runner
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wandelbots-nova"
3
- version = "3.2.0"
3
+ version = "3.3.0"
4
4
  description = "Official Python SDK for the Wandelbots Nova"
5
5
  authors = [
6
6
  { name = "Wandelbots GmbH" },
@@ -7,7 +7,7 @@ from pydantic import BaseModel
7
7
 
8
8
  import nova
9
9
  from nova.core.nova import Nova
10
- from nova.program.runner import ProgramRun, ProgramRunState
10
+ from nova.program.runner import ProgramRun, ProgramRunState, ProgramStatus
11
11
  from novax.novax import Novax
12
12
 
13
13
 
@@ -28,12 +28,12 @@ async def test_novax_program_successful_run(novax_app):
28
28
  nova = Nova()
29
29
  await nova.connect()
30
30
 
31
- program_run_message = []
31
+ # subscribe to program run messages
32
+ program_status_messages = []
32
33
 
33
- async def cb(msg):
34
- program_run_message.append(msg)
35
-
36
- await nova.nats.subscribe("nova.v2.cells.cell.programs", on_message=cb)
34
+ await nova.nats.subscribe(
35
+ "nova.v2.cells.cell.programs", on_message=lambda msg: program_status_messages.append(msg)
36
+ )
37
37
 
38
38
  with TestClient(novax_app) as client:
39
39
  start_program = client.post("/programs/sucessful_program/start", json={"arguments": {}})
@@ -41,15 +41,21 @@ async def test_novax_program_successful_run(novax_app):
41
41
 
42
42
  await asyncio.sleep(10)
43
43
 
44
- assert len(program_run_message) == 3, (
45
- f"Expected 3 program run messages, but got {len(program_run_message)}"
44
+ assert len(program_status_messages) == 3, (
45
+ f"Expected 3 program status messages, but got {len(program_status_messages)}"
46
46
  )
47
47
 
48
- models = [ProgramRun.model_validate_json(message.data) for message in program_run_message]
48
+ # verify program run messages
49
+ models = [
50
+ ProgramStatus.model_validate_json(message.data) for message in program_status_messages
51
+ ]
49
52
  assert models[0].state == ProgramRunState.PREPARING
50
53
  assert models[1].state == ProgramRunState.RUNNING
51
54
  assert models[2].state == ProgramRunState.COMPLETED
52
55
 
56
+ for model in models:
57
+ assert model.app == "novax_test"
58
+
53
59
 
54
60
  @nova.program(
55
61
  id="failing_program",
@@ -68,12 +74,12 @@ async def test_novax_program_failed_run(novax_app):
68
74
  nova = Nova()
69
75
  await nova.connect()
70
76
 
71
- program_run_message = []
77
+ # subscribe to program run messages
78
+ program_status_messages = []
72
79
 
73
- async def cb(msg):
74
- program_run_message.append(msg)
75
-
76
- await nova.nats.subscribe("nova.v2.cells.cell.programs", on_message=cb)
80
+ await nova.nats.subscribe(
81
+ "nova.v2.cells.cell.programs", on_message=lambda msg: program_status_messages.append(msg)
82
+ )
77
83
 
78
84
  with TestClient(novax_app) as client:
79
85
  start_program = client.post("/programs/failing_program/start", json={"arguments": {}})
@@ -81,15 +87,21 @@ async def test_novax_program_failed_run(novax_app):
81
87
 
82
88
  await asyncio.sleep(8)
83
89
 
84
- assert len(program_run_message) == 3, (
85
- f"Expected 3 program run messages, but got {len(program_run_message)}"
90
+ assert len(program_status_messages) == 3, (
91
+ f"Expected 3 program status messages, but got {len(program_status_messages)}"
86
92
  )
87
93
 
88
- models = [ProgramRun.model_validate_json(message.data) for message in program_run_message]
94
+ # verify program status messages
95
+ models = [
96
+ ProgramStatus.model_validate_json(message.data) for message in program_status_messages
97
+ ]
89
98
  assert models[0].state == ProgramRunState.PREPARING
90
99
  assert models[1].state == ProgramRunState.RUNNING
91
100
  assert models[2].state == ProgramRunState.FAILED
92
101
 
102
+ for model in models:
103
+ assert model.app == "novax_test"
104
+
93
105
 
94
106
  @nova.program(
95
107
  id="long_running_program",
@@ -109,12 +121,12 @@ async def test_novax_program_stopped_run(novax_app):
109
121
  nova = Nova()
110
122
  await nova.connect()
111
123
 
112
- program_run_messages = []
113
-
114
- async def cb(msg):
115
- program_run_messages.append(msg)
124
+ # subscribe to program run messages
125
+ program_status_messages = []
116
126
 
117
- await nova.nats.subscribe("nova.v2.cells.cell.programs", on_message=cb)
127
+ await nova.nats.subscribe(
128
+ "nova.v2.cells.cell.programs", on_message=lambda msg: program_status_messages.append(msg)
129
+ )
118
130
 
119
131
  with TestClient(novax_app) as client:
120
132
  start_program = client.post("/programs/long_running_program/start", json={"arguments": {}})
@@ -125,10 +137,12 @@ async def test_novax_program_stopped_run(novax_app):
125
137
  await asyncio.sleep(5)
126
138
 
127
139
  # Verify program is running
128
- assert len(program_run_messages) >= 2, (
129
- f"Expected at least 2 program run messages, but got {len(program_run_messages)}"
140
+ assert len(program_status_messages) >= 2, (
141
+ f"Expected at least 2 program run messages, but got {len(program_status_messages)}"
130
142
  )
131
- models = [ProgramRun.model_validate_json(message.data) for message in program_run_messages]
143
+ models = [
144
+ ProgramStatus.model_validate_json(message.data) for message in program_status_messages
145
+ ]
132
146
  assert models[0].state == ProgramRunState.PREPARING
133
147
  assert models[1].state == ProgramRunState.RUNNING
134
148
 
@@ -140,17 +154,21 @@ async def test_novax_program_stopped_run(novax_app):
140
154
  await asyncio.sleep(5)
141
155
 
142
156
  # Verify that we received the STOPPED event
143
- assert len(program_run_messages) == 3, (
144
- f"Expected 3 program run messages, but got {len(program_run_messages)}"
157
+ assert len(program_status_messages) == 3, (
158
+ f"Expected 3 program status messages, but got {len(program_status_messages)}"
145
159
  )
146
160
 
161
+ # verify program status messages
147
162
  final_models = [
148
- ProgramRun.model_validate_json(message.data) for message in program_run_messages
163
+ ProgramStatus.model_validate_json(message.data) for message in program_status_messages
149
164
  ]
150
165
  assert final_models[0].state == ProgramRunState.PREPARING
151
166
  assert final_models[1].state == ProgramRunState.RUNNING
152
167
  assert final_models[2].state == ProgramRunState.STOPPED
153
168
 
169
+ for model in final_models:
170
+ assert model.app == "novax_test"
171
+
154
172
 
155
173
  @pytest.mark.integration
156
174
  @pytest.mark.xdist_group("program-runs")
@@ -29,7 +29,7 @@ async def simple_program(number_of_steps: int = 30):
29
29
 
30
30
  @pytest.fixture
31
31
  def novax_app():
32
- novax = Novax()
32
+ novax = Novax(app_name="novax_test")
33
33
  app = novax.create_app()
34
34
  novax.include_programs_router(app)
35
35
 
File without changes