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.
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/PKG-INFO +1 -1
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/runner.py +33 -17
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/novax.py +10 -2
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/program_manager.py +1 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/pyproject.toml +1 -1
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_program_run.py +46 -28
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/conftest.py +1 -1
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/.gitignore +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/LICENSE +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/base.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/container.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/io.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/mock.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/motions.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/actions/trajectory_builder.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/api.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/api.pyi +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/auth/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/auth/auth_config.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/auth/authorization.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/cell.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/controllers.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/robot_cell.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/cell/simulation.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/config.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/controller.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/env_handler.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/exceptions.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/gateway.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/io.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/logging.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/motion_group.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/movement_controller.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/nova.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/core/tuner.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/events/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/opcua/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/opcua/client.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/extentions/opcua/functions.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/logging/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/nats/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/nats/client.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/nats/message.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/exceptions.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/function.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/store.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/program/utils.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/collision_scene.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/motion_settings.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/pose.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/state.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/types/vector3d.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/utils/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/utils/timestamp.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/version.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/base.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/manager.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/protocol.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/rerun.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova/viewers/utils.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/LICENSE +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/benchmark_base.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/demo_set.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/mb_set.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/mpinets_set.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/datasets.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/log_successful_planning.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/robometrics_helper.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/run_collision_free_benchmark.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/run_collision_free_magma.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/run_ptp_benchmark.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/blueprint.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/collision_scene.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/colors.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/consts.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/conversion_helpers.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/dh_robot.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/Welding_Benchmark_USA_01.stl +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/bin_everything_05.ply +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/colliders.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/source.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/tool.stl +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/yaskawa_ar1440_rif_with_safety_zones.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/collison_world.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/import_ply.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/reachability_check.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/robocore.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/stream_robot.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/use_nova_rerun_bridge.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/visualize_tool.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/wait_action.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/welding_example.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/yaskawa-ar1440-16-mounting.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/yaskawa-ar1440-with-external-axis.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/code_server_helpers.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/download_models.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/plan_with_collisions.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/hull_visualizer.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/.gitignore +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/main.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/poetry.toml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/pyproject.toml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/ruff.toml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/uv.lock +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/motion_recorder.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/motion_storage.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/.dockerignore +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/.nova +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/Dockerfile +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/app.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/build.sh +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/data/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/deployment.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/ingress.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/kustomization.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/k8s/namespace.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/nginx.conf +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/nginx.http.conf.template +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/skaffold.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/start.sh +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/nova_rerun_bridge_app/static/app_icon.png +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/polling/populate.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/.dockerignore +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/.nova +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/Dockerfile +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/app.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/build.sh +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/deployment.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/ingress.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/kustomization.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/k8s/namespace.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/nginx.conf +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/nginx.http.conf.template +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/skaffold.yaml +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/start.sh +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/rerun_app/static/app_icon.png +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/robot_visualizer.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/safety_zones.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/stream_state.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/trajectory.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/api/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/api/dependencies.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/api/programs.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/novax/config.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_blueprint.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_log_motion.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_nova_rerun_bridge.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/nova_rerun_bridge/test_trajectory.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_nats.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_program_cycle.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_program_registry.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/api/test_programs.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/serve.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/tests/novax/test_program_manager.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/vscode-ext/src/nova/readRobotPose.ts +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/vscode-ext/src/nova/selection.ts +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/CHANGELOG.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/README.md +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/__main__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/antlrvisitor.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/array.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/assoc.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/controller.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/fetch.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/fs.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/math.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/pose.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/string.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins/wait.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/builtins.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/cli.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/datatypes.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/and_or.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/and_or.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/array.config +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/array.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/array.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/assignment.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/assignment.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/async_write.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/async_write.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/blending.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/blending.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/bool_negation.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/bool_negation.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/builtins.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/builtins.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/comments.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/comments.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/context.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/context.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/controller.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/controller.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/controller.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/coordinate_systems.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/coordinate_systems.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/default.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/default.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/default.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_line.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_line.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_manhattan.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/edge_pattern_manhattan.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/empty.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/empty.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/expressions.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/expressions.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/fetch.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/fetch.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/find_edge_from_4_poses.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/find_edge_from_4_poses.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame2.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame2.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame3.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame3.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/frame3.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/function.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/function.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/functional_pose.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/functional_pose.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/get_pose.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/get_pose.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/ifelse.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/ifelse.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interpolation.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interpolation.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interrupt.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/interrupt.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/io.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/io.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/loops.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/loops.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_via_expression.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_via_expression.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_with_velocity.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/move_with_velocity.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots2.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots2.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots2.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots3.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots3.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/multiple_robots3.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/not.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/not.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/operator_precedence.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/operator_precedence.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/pose.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/pose.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/poses2.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/poses2.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/print.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/print.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/record.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/record.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/scope.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/scope.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/spline.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/spline.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/switch.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/switch.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tcps.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tcps.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tcps.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tower_of_hanoi.cell.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tower_of_hanoi.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/tower_of_hanoi.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/try.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/try.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/vision_move.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/vision_move.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wait.config +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wait.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wait.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat2.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat2.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat3.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wandelchat3.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/whitespaces.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/whitespaces.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp393.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp393.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp469.json +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples/wp469.ws +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/examples.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/exception.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/ffi.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/ffi_loader.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/frames.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/WandelscriptLexerBase.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.g4 +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.interp +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptLexer.tokens +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.g4 +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.interp +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParser.tokens +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParserListener.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/grammar/wandelscriptParserVisitor.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/metamodel.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/migration.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/models.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/motions.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/operators.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/runner.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/runtime.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/scripts/generate_parser.sh +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_builtins.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_examples.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_executor.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_ffi.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_migration.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_motion.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_move.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_multirobot.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_parser.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_programs.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_run_twice.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_runner.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_runtime.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_simulation.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_stepwise.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_store.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_two_step_execution.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/tests/test_types.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/__init__.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/pose.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/runtime.py +0 -0
- {wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/wandelscript/utils/serializer.py +0 -0
- {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.
|
|
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
|
-
|
|
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=
|
|
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=
|
|
29
|
+
cell_id=CELL_NAME, app_name=app_name, nova_config=nova.config
|
|
22
30
|
)
|
|
23
31
|
self._app: FastAPI | None = None
|
|
24
32
|
|
|
@@ -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
|
-
|
|
31
|
+
# subscribe to program run messages
|
|
32
|
+
program_status_messages = []
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
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(
|
|
45
|
-
f"Expected 3 program
|
|
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
|
-
|
|
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
|
-
|
|
77
|
+
# subscribe to program run messages
|
|
78
|
+
program_status_messages = []
|
|
72
79
|
|
|
73
|
-
|
|
74
|
-
|
|
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(
|
|
85
|
-
f"Expected 3 program
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
129
|
-
f"Expected at least 2 program run messages, but got {len(
|
|
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 = [
|
|
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(
|
|
144
|
-
f"Expected 3 program
|
|
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
|
-
|
|
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")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/benchmark_base.py
RENAMED
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/README.md
RENAMED
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/demo_set.yaml
RENAMED
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/mb_set.yaml
RENAMED
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/dataset/mpinets_set.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/robometrics_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/benchmark/run_ptp_benchmark.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/bin_everything_05.ply
RENAMED
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/example_data/colliders.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/collison_world.py
RENAMED
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/reachability_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/use_nova_rerun_bridge.py
RENAMED
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/visualize_tool.py
RENAMED
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/examples/welding_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/helper_scripts/download_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/poetry.toml
RENAMED
|
File without changes
|
{wandelbots_nova-3.2.0 → wandelbots_nova-3.3.0}/nova_rerun_bridge/minimal_example/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|