rosotacom-dev 2.2__tar.gz → 2.3__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.
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/PKG-INFO +18 -1
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/README.md +17 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/cli.py +70 -33
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/PKG-INFO +18 -1
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/scm_version.json +2 -2
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_packaged_resources.py +46 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_cli.py +25 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.devcontainer/devcontainer.json.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.devcontainer/re_generate_devcontainer_json.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/CODEOWNERS +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/documentation-audit.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/implementation-cleanup.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/quality-workflow.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/redesign.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/release-process.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/repository-diagnosis.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/test-ci-audit.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/ISSUE_TEMPLATE/work-item.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/dependabot.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/workflows/benchmark-calibrate.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/workflows/benchmark-gate.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/workflows/image-scan.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/workflows/nightly-e2e.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/workflows/pr-lightweight.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/workflows/pr-merge-gate.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.github/workflows/release.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/.pre-commit-config.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/AGENTS.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/CONCURRENCY.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/CONTRIBUTING.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/DEVELOPMENT_PRINCIPLES.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/LICENSE.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/MANIFEST.in +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/budgets.jsonl +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/calibration/README.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/calibration/capacity-size-tight-cyclone.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/calibration/probe-loss-gop-tight-cyclone.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/calibration/probe-loss-nominal-cyclone.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/calibration/probe-loss-tight-cyclone.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/calibration/probe-loss-tight-fastdds.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/calibration/probe-loss-tight-zenoh.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/codecov.yml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/deployment-configuration.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/benchmark-ab.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/benchmark-bag-as-load.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/ci.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/ffmpeg-keyframes.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/findings/README.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/findings/cyclone-spdp-discovery-bursts.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/findings/delay-alone-no-loss.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/findings/head-of-line-irregularity.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/findings/jitter-loss-bandwidth-latency.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/findings/lighter-message-loss.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/findings/zero-loss-boundaries-18kb-20hz.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/forensics-report.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/geo-link-map.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/github-repository-settings.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/link-trace.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/owner-runbook.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/performance-bands.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/playbooks/README.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/quality-model.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/release-notes/TEMPLATE.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/release-notes/v2.1.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/release-notes/v2.2.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/release.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/0001-expectation-driven-test-suite.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/0002-expectation-concepts.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/0003-metric-backbone.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/0004-network-profiles.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/0005-benchmark-genres-and-ci.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/0006-dynamic-qos.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/0007-regression-gate.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/rfcs/README.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/testing.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/docs/work-items.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/install.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/justfile +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/media/control_center.png +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/media/echo_test.png +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/media/forensics-report-example.png +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/media/host.png +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/media/vehicle.png +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/pyproject.toml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/requirements.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/rosotacom.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/run_session_in_container.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/session-configuration.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/setup.cfg +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/__init__.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/__main__.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/anonymize.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/bag_ground_truth.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/benched_set.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/benchmark.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/bundle_check.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/cli_benchmark.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/deployment.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/forensics.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/geomap.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/network_profiles.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/network_shaper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/plots.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/py.typed +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/benched-set.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/.gitignore +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/README.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/__init__.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/bags/8_drop_reference/metadata.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/deployment.example.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/profiles.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/rosotacom.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scenarios/2_native_chatter/scenario-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_a.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_b.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/wait_for_echo_topic.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/10_restamp/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/11_trickle/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/12_content_integrity/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/13_link_latency/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/14_remote_assist_anonymized/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/15_remote_assist_anonymized_costmap/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/16_remote_assist_anonymized_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/17_synthetic_camera_quality/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/1_heartbeat/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/1_heartbeat_status/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/2_native_chatter/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/3_comp_occ_grid/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/4_comp_occ_grid_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/5_sized_payload/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/6_sized_payload_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/7_latched_static/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/8_drop/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/9_throttle/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/bench_1_1_capacity/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/bench_1_2_load_sweep/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/bench_1_3_ramp/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/bench_1_4_recovery/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/sessions/bench_1_5_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ros2docker.json.example +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/.vscode/c_cpp_properties.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/.vscode/settings.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_initial_peer_list.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v2.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v3.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v4.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v5.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/create_zenoh_json5.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/cyclonedds_minimal.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/cyclonedds_tuned.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/fastdds_unicast.xml.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/get_ota_xml.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/utils.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ota_configs/zenoh.json5.template +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/.gitkeep +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_cpp/CMakeLists.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_cpp/COLCON_IGNORE +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_cpp/LICENSE.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_cpp/package.xml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_cpp/src/hz_monitor.cpp +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_compressor.cpp +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_decompressor.cpp +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_msgs/CMakeLists.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_msgs/LICENSE.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/CompressedData.msg +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/EchoHeartbeat.msg +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/OtaStamped.msg +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/SizedPayload.msg +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_msgs/package.xml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/LICENSE.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/__init__.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/base_bridge_relay.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_in.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_out.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/heartbeat_echo.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/hz_monitor.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_bandwidth_reducer.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_pixel_capper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/lanelet_saver.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/latch_relay.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/costmap_remapper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/marker_remapper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/speed_test.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/tf_remapper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/traffic_monitor.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/wifi_network_analysis_1.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_bytes.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_trace.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/local_global_frame_bridge.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/localization_map_split_reduce_saver.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/msg_transform.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pair_management.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pub_sub_pair.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/qos.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_in.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_out.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/restamp.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/sized_publisher.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency_core.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview_core.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/tf_map_to_cart_saver.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_monitor.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_resolution.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/trickle.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_compressor.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_decompressor.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_unwrapper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_wrapper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/package.xml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/resource/com_py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/setup.cfg +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/setup.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/test/test_copyright.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/test/test_flake8.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/ros2src/com_py/test/test_pep257.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/content/base/session_plugin_base.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/content/network/up_connectivity.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/content/network/wifi_network_analysis_2.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/creation/anonymize_bag.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/creation/catmux_log_setup.sh +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/creation/create_session_yaml.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/creation/generate_session_files.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/creation/run_session.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/ws/session/creation/strip_ansi.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/status_eval.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/stream_stats.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/trace_profiles.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/transit.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/video_quality.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/SOURCES.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/dependency_links.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/entry_points.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/requires.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/scm_file_list.json +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom_dev.egg-info/top_level.txt +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/stop_session_in_container.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/terminology.md +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_benched_set_registry.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_findings.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_markdown_links.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_package_metadata.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_profile_covers_generated_commands.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_pytest_policy.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_readme_examples.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_security_maintenance_config.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/contract/test_workflow_contracts.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/conftest.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_anonymize_e2e.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_benchmark_ab.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_benchmark_capacity.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_benchmark_replay.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_parallel_smoke.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_smoke.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_timeline_stepping.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/e2e/test_video_quality_e2e.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/sessions/generate_rmw_matrix.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-local_zenoh-ros2dds-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota-tuned/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/sessions/rmw_matrix/1_heartbeat_fastdds/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/sessions/rmw_matrix/1_heartbeat_zen-endpoints/session-definition.yaml +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_anonymize.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_bag_ground_truth.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_benched_set.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_benchmark.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_bundle_check.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_cli_benchmark.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_concurrency.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_deployment.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_forensics.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_geomap.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_link_bytes.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_link_trace.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_network_profiles.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_network_shaper.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_ota_xml.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_plots.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_stage_latency.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_status_eval.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_status_overview.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_stream_stats.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_trace_profiles.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_transit.py +0 -0
- {rosotacom_dev-2.2 → rosotacom_dev-2.3}/tests/unit/test_video_quality.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rosotacom-dev
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3
|
|
4
4
|
Summary: Host CLI for ROS OTA communication sessions.
|
|
5
5
|
Author: develNor
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -218,6 +218,23 @@ scripts/
|
|
|
218
218
|
project-local directories first and shared/example directories later when one
|
|
219
219
|
project should discover both.
|
|
220
220
|
|
|
221
|
+
### Locating packaged resources
|
|
222
|
+
|
|
223
|
+
rosotacom is installed in an isolated environment (pipx, or a project venv), so
|
|
224
|
+
another tool cannot `import rosotacom` from a system Python to find the files
|
|
225
|
+
that ship with it. Ask the CLI instead — it prints one absolute path, so it
|
|
226
|
+
composes directly in a shell:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
rosotacom resources path com_msgs # the ROS 2 message package
|
|
230
|
+
rosotacom resources path ws # the packaged runtime workspace
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Use this wherever another project needs rosotacom's files on the host, for
|
|
234
|
+
example to bake `com_msgs` into its own container image. Ask for the resource by
|
|
235
|
+
name rather than reconstructing a path: the names are part of the CLI contract,
|
|
236
|
+
the layout behind them is not.
|
|
237
|
+
|
|
221
238
|
See the [example project README](src/rosotacom/resources/examples/README.md)
|
|
222
239
|
for the copyable example layout, the
|
|
223
240
|
[session configuration reference](session-configuration.md) for the session
|
|
@@ -173,6 +173,23 @@ scripts/
|
|
|
173
173
|
project-local directories first and shared/example directories later when one
|
|
174
174
|
project should discover both.
|
|
175
175
|
|
|
176
|
+
### Locating packaged resources
|
|
177
|
+
|
|
178
|
+
rosotacom is installed in an isolated environment (pipx, or a project venv), so
|
|
179
|
+
another tool cannot `import rosotacom` from a system Python to find the files
|
|
180
|
+
that ship with it. Ask the CLI instead — it prints one absolute path, so it
|
|
181
|
+
composes directly in a shell:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
rosotacom resources path com_msgs # the ROS 2 message package
|
|
185
|
+
rosotacom resources path ws # the packaged runtime workspace
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Use this wherever another project needs rosotacom's files on the host, for
|
|
189
|
+
example to bake `com_msgs` into its own container image. Ask for the resource by
|
|
190
|
+
name rather than reconstructing a path: the names are part of the CLI contract,
|
|
191
|
+
the layout behind them is not.
|
|
192
|
+
|
|
176
193
|
See the [example project README](src/rosotacom/resources/examples/README.md)
|
|
177
194
|
for the copyable example layout, the
|
|
178
195
|
[session configuration reference](session-configuration.md) for the session
|
|
@@ -82,6 +82,16 @@ PROJECT_DIR = RESOURCE_DIR
|
|
|
82
82
|
WS_DIR = RESOURCE_DIR / "ws"
|
|
83
83
|
DEFAULT_ROS2DOCKER_CONFIG = RESOURCE_DIR / "ros2docker.json.example"
|
|
84
84
|
EXAMPLE_PROJECT_DIR = RESOURCE_DIR / "examples"
|
|
85
|
+
|
|
86
|
+
# Packaged resources external tooling may need to locate on the host. rosotacom
|
|
87
|
+
# is installed in an isolated environment (pipx, or a project venv), so a
|
|
88
|
+
# consumer cannot `import rosotacom` to find these; `rosotacom resources path`
|
|
89
|
+
# is the supported lookup. Names are part of the CLI contract, the layout behind
|
|
90
|
+
# them is not — ask for "com_msgs", not for "ws/ros2src/com_msgs".
|
|
91
|
+
NAMED_RESOURCES = {
|
|
92
|
+
"ws": WS_DIR,
|
|
93
|
+
"com_msgs": WS_DIR / "ros2src" / "com_msgs",
|
|
94
|
+
}
|
|
85
95
|
SESSION_CONFIG_CONTAINER_DIR = "/session/configs"
|
|
86
96
|
SESSION_DEFINITION_CONTAINER_DIR = "/session/definitions"
|
|
87
97
|
SESSION_INSTANCE_CONTAINER_DIR = "/session/instances"
|
|
@@ -4618,6 +4628,20 @@ def examples_create_command(args: argparse.Namespace) -> int:
|
|
|
4618
4628
|
return 0
|
|
4619
4629
|
|
|
4620
4630
|
|
|
4631
|
+
def resources_path_command(args: argparse.Namespace) -> int:
|
|
4632
|
+
"""Print the host path of a packaged resource, for external tooling."""
|
|
4633
|
+
|
|
4634
|
+
path = NAMED_RESOURCES[args.name].resolve()
|
|
4635
|
+
if not path.exists():
|
|
4636
|
+
raise RuntimeError(
|
|
4637
|
+
f"Packaged resource {args.name!r} is missing from this rosotacom "
|
|
4638
|
+
f"installation (expected at {path}). The install is incomplete: "
|
|
4639
|
+
f"reinstall the package."
|
|
4640
|
+
)
|
|
4641
|
+
print(path)
|
|
4642
|
+
return 0
|
|
4643
|
+
|
|
4644
|
+
|
|
4621
4645
|
def _require_project_file(raw: str | None) -> Path:
|
|
4622
4646
|
config = _resolve_path(raw, Path.cwd(), must_exist=True)
|
|
4623
4647
|
if not config or not config.is_file():
|
|
@@ -7801,43 +7825,50 @@ def videoquality_command(args: argparse.Namespace) -> int:
|
|
|
7801
7825
|
return 0
|
|
7802
7826
|
|
|
7803
7827
|
|
|
7828
|
+
# `rosotacom <session>` is shorthand for `rosotacom start <session>`. To know when
|
|
7829
|
+
# NOT to insert the implicit "start", main() needs the set of real command names.
|
|
7830
|
+
# A subparser missing here becomes unreachable — `rosotacom foo` would silently
|
|
7831
|
+
# turn into `rosotacom start foo` — so a contract test keeps the two in sync.
|
|
7832
|
+
TOP_LEVEL_COMMANDS = {
|
|
7833
|
+
"start",
|
|
7834
|
+
"stop",
|
|
7835
|
+
"doctor",
|
|
7836
|
+
"ps",
|
|
7837
|
+
"smoke",
|
|
7838
|
+
"ota-smoke",
|
|
7839
|
+
"status",
|
|
7840
|
+
"metrics",
|
|
7841
|
+
"videoquality",
|
|
7842
|
+
"geomap",
|
|
7843
|
+
"report",
|
|
7844
|
+
"stream-stats",
|
|
7845
|
+
"test",
|
|
7846
|
+
"expect",
|
|
7847
|
+
"calibrate",
|
|
7848
|
+
"verify", # retired; keep guarded so it is not rewritten as `start verify`.
|
|
7849
|
+
"probe-publish",
|
|
7850
|
+
"probe-check",
|
|
7851
|
+
"probe-content",
|
|
7852
|
+
"publish-test-topics",
|
|
7853
|
+
"list-sessions",
|
|
7854
|
+
"scenario",
|
|
7855
|
+
"examples",
|
|
7856
|
+
"resources",
|
|
7857
|
+
"config",
|
|
7858
|
+
"bundle",
|
|
7859
|
+
"profile",
|
|
7860
|
+
"completion",
|
|
7861
|
+
"benchmark",
|
|
7862
|
+
"ota-benchmark",
|
|
7863
|
+
"anonymize",
|
|
7864
|
+
}
|
|
7865
|
+
|
|
7866
|
+
|
|
7804
7867
|
def main(argv: list[str] | None = None) -> int:
|
|
7805
7868
|
argv = list(sys.argv[1:] if argv is None else argv)
|
|
7806
|
-
commands = {
|
|
7807
|
-
"start",
|
|
7808
|
-
"stop",
|
|
7809
|
-
"doctor",
|
|
7810
|
-
"ps",
|
|
7811
|
-
"smoke",
|
|
7812
|
-
"ota-smoke",
|
|
7813
|
-
"status",
|
|
7814
|
-
"metrics",
|
|
7815
|
-
"videoquality",
|
|
7816
|
-
"geomap",
|
|
7817
|
-
"report",
|
|
7818
|
-
"stream-stats",
|
|
7819
|
-
"test",
|
|
7820
|
-
"expect",
|
|
7821
|
-
"calibrate",
|
|
7822
|
-
"verify", # retired; keep guarded so it is not rewritten as `start verify`.
|
|
7823
|
-
"probe-publish",
|
|
7824
|
-
"probe-check",
|
|
7825
|
-
"probe-content",
|
|
7826
|
-
"publish-test-topics",
|
|
7827
|
-
"list-sessions",
|
|
7828
|
-
"scenario",
|
|
7829
|
-
"examples",
|
|
7830
|
-
"config",
|
|
7831
|
-
"bundle",
|
|
7832
|
-
"profile",
|
|
7833
|
-
"completion",
|
|
7834
|
-
"benchmark",
|
|
7835
|
-
"ota-benchmark",
|
|
7836
|
-
"anonymize",
|
|
7837
|
-
}
|
|
7838
7869
|
if not argv:
|
|
7839
7870
|
argv = ["start"]
|
|
7840
|
-
elif argv[0] not in
|
|
7871
|
+
elif argv[0] not in TOP_LEVEL_COMMANDS and not argv[0].startswith("-"):
|
|
7841
7872
|
argv = ["start", *argv]
|
|
7842
7873
|
|
|
7843
7874
|
parser = argparse.ArgumentParser(prog="rosotacom")
|
|
@@ -8480,6 +8511,12 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
8480
8511
|
examples_create_parser.add_argument("--force", action="store_true", help="Replace the target if it exists.")
|
|
8481
8512
|
examples_create_parser.set_defaults(func=examples_create_command)
|
|
8482
8513
|
|
|
8514
|
+
resources_parser = subparsers.add_parser("resources", help="Locate resources packaged with rosotacom.")
|
|
8515
|
+
resources_subparsers = resources_parser.add_subparsers(dest="resources_action", required=True)
|
|
8516
|
+
resources_path_parser = resources_subparsers.add_parser("path", help="Print the host path of a packaged resource.")
|
|
8517
|
+
resources_path_parser.add_argument("name", choices=sorted(NAMED_RESOURCES))
|
|
8518
|
+
resources_path_parser.set_defaults(func=resources_path_command)
|
|
8519
|
+
|
|
8483
8520
|
config_parser = subparsers.add_parser("config", help="Inspect or set the active rosotacom project.")
|
|
8484
8521
|
config_subparsers = config_parser.add_subparsers(dest="config_action", required=True)
|
|
8485
8522
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rosotacom-dev
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3
|
|
4
4
|
Summary: Host CLI for ROS OTA communication sessions.
|
|
5
5
|
Author: develNor
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -218,6 +218,23 @@ scripts/
|
|
|
218
218
|
project-local directories first and shared/example directories later when one
|
|
219
219
|
project should discover both.
|
|
220
220
|
|
|
221
|
+
### Locating packaged resources
|
|
222
|
+
|
|
223
|
+
rosotacom is installed in an isolated environment (pipx, or a project venv), so
|
|
224
|
+
another tool cannot `import rosotacom` from a system Python to find the files
|
|
225
|
+
that ship with it. Ask the CLI instead — it prints one absolute path, so it
|
|
226
|
+
composes directly in a shell:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
rosotacom resources path com_msgs # the ROS 2 message package
|
|
230
|
+
rosotacom resources path ws # the packaged runtime workspace
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Use this wherever another project needs rosotacom's files on the host, for
|
|
234
|
+
example to bake `com_msgs` into its own container image. Ask for the resource by
|
|
235
|
+
name rather than reconstructing a path: the names are part of the CLI contract,
|
|
236
|
+
the layout behind them is not.
|
|
237
|
+
|
|
221
238
|
See the [example project README](src/rosotacom/resources/examples/README.md)
|
|
222
239
|
for the copyable example layout, the
|
|
223
240
|
[session configuration reference](session-configuration.md) for the session
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import argparse
|
|
3
4
|
import os
|
|
4
5
|
import subprocess
|
|
5
6
|
from importlib import resources
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
|
|
9
|
+
import pytest
|
|
8
10
|
import yaml
|
|
9
11
|
|
|
10
12
|
import rosotacom.cli as cli
|
|
@@ -238,3 +240,47 @@ def test_native_chatter_waiter_reads_topic_info_without_broken_pipe(tmp_path: Pa
|
|
|
238
240
|
|
|
239
241
|
assert result.stdout.strip() == "echo started"
|
|
240
242
|
assert "BrokenPipeError" not in result.stderr
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def test_every_registered_subcommand_is_exempt_from_implicit_start(
|
|
246
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
247
|
+
) -> None:
|
|
248
|
+
# `rosotacom <session>` is shorthand for `rosotacom start <session>`, so
|
|
249
|
+
# main() only skips the implicit "start" for names in TOP_LEVEL_COMMANDS.
|
|
250
|
+
# A subparser missing from that set is unreachable: the CLI silently turns
|
|
251
|
+
# `rosotacom foo ...` into `rosotacom start foo ...` and fails somewhere
|
|
252
|
+
# unrelated. Capture what is actually registered and compare.
|
|
253
|
+
captured: dict[str, argparse._SubParsersAction] = {}
|
|
254
|
+
original = argparse.ArgumentParser.add_subparsers
|
|
255
|
+
|
|
256
|
+
def spy(self: argparse.ArgumentParser, *args: object, **kwargs: object):
|
|
257
|
+
action = original(self, *args, **kwargs)
|
|
258
|
+
if self.prog == "rosotacom":
|
|
259
|
+
captured["top"] = action
|
|
260
|
+
return action
|
|
261
|
+
|
|
262
|
+
monkeypatch.setattr(argparse.ArgumentParser, "add_subparsers", spy)
|
|
263
|
+
with pytest.raises(SystemExit):
|
|
264
|
+
cli.main(["--help"])
|
|
265
|
+
|
|
266
|
+
registered = set(captured["top"].choices)
|
|
267
|
+
assert registered, "no top-level subparsers were captured"
|
|
268
|
+
|
|
269
|
+
unreachable = registered - cli.TOP_LEVEL_COMMANDS
|
|
270
|
+
assert not unreachable, f"subcommands missing from TOP_LEVEL_COMMANDS: {sorted(unreachable)}"
|
|
271
|
+
|
|
272
|
+
# The reverse direction may legitimately carry retired names (e.g. "verify"),
|
|
273
|
+
# which stay guarded so they are not rewritten as `start verify`.
|
|
274
|
+
assert "resources" in registered
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def test_named_resources_point_at_real_packaged_directories() -> None:
|
|
278
|
+
for name, path in cli.NAMED_RESOURCES.items():
|
|
279
|
+
assert path.is_dir(), f"packaged resource {name!r} is not a directory: {path}"
|
|
280
|
+
|
|
281
|
+
# com_msgs is consumed by external builds (fleet_mgmt bakes it into its
|
|
282
|
+
# container images), so it must be a usable ROS 2 package, not just a folder.
|
|
283
|
+
com_msgs = cli.NAMED_RESOURCES["com_msgs"]
|
|
284
|
+
assert (com_msgs / "package.xml").is_file()
|
|
285
|
+
assert (com_msgs / "CMakeLists.txt").is_file()
|
|
286
|
+
assert list(com_msgs.glob("msg/*.msg"))
|
|
@@ -2759,3 +2759,28 @@ def test_content_integrity_skips_transformed_topics() -> None:
|
|
|
2759
2759
|
)
|
|
2760
2760
|
)
|
|
2761
2761
|
assert rosotacom._content_integrity_specs(cfg, "a") == []
|
|
2762
|
+
|
|
2763
|
+
|
|
2764
|
+
def test_resources_path_prints_an_absolute_existing_path(capsys: pytest.CaptureFixture[str]) -> None:
|
|
2765
|
+
# External tooling cannot `import rosotacom` (pipx/venv isolation), so this
|
|
2766
|
+
# command is the only supported way to locate packaged resources. It must
|
|
2767
|
+
# print exactly one absolute path and nothing else, to stay shell-composable.
|
|
2768
|
+
for name in rosotacom.NAMED_RESOURCES:
|
|
2769
|
+
assert rosotacom.resources_path_command(argparse.Namespace(name=name)) == 0
|
|
2770
|
+
out = capsys.readouterr().out
|
|
2771
|
+
assert out.endswith("\n")
|
|
2772
|
+
printed = Path(out.strip())
|
|
2773
|
+
assert printed.is_absolute()
|
|
2774
|
+
assert printed.is_dir()
|
|
2775
|
+
assert len(out.splitlines()) == 1
|
|
2776
|
+
|
|
2777
|
+
|
|
2778
|
+
def test_resources_path_rejects_an_unknown_resource_name() -> None:
|
|
2779
|
+
with pytest.raises(SystemExit):
|
|
2780
|
+
rosotacom.main(["resources", "path", "no_such_resource"])
|
|
2781
|
+
|
|
2782
|
+
|
|
2783
|
+
def test_resources_path_reports_an_incomplete_installation(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:
|
|
2784
|
+
monkeypatch.setitem(rosotacom.NAMED_RESOURCES, "ws", tmp_path / "gone")
|
|
2785
|
+
with pytest.raises(RuntimeError, match="missing from this rosotacom installation"):
|
|
2786
|
+
rosotacom.resources_path_command(argparse.Namespace(name="ws"))
|
|
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
|
|
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
|
{rosotacom_dev-2.2 → rosotacom_dev-2.3}/src/rosotacom/resources/examples/deployment.example.yaml
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|