x4d-devkit 0.55.0rc1__tar.gz → 0.55.0rc2__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.
- {x4d_devkit-0.55.0rc1/x4d_devkit.egg-info → x4d_devkit-0.55.0rc2}/PKG-INFO +1 -1
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/pyproject.toml +1 -1
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_sdk_api.py +1 -1
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_work_session.py +16 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/materialize.py +16 -2
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/validation/validator.py +9 -2
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2/x4d_devkit.egg-info}/PKG-INFO +1 -1
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/LICENSE +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/README.md +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/setup.cfg +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_accounts.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_annotation_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_annotation_document_hash.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_annotation_reference.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_assets_client.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_boundary.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_box.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_build_info.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_category_audit.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_clean_basemap.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_clean_basemap_client.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_cli_auth.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_client_json_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_client_projects.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_clip_archives.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_contract_validation.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_coordinate_frames.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_current_state.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_current_state_identity_consumers_example.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_dataset_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_dataset_identity.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_detection_eval.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_evaluate.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_export_bundle.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_clip.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_conditional_rules.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_enum_set.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_export.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_geometry.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_groups.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_preannotation.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_reference.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_review.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_schema_migration.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_schema_registry_client.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_schema_upgrade.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_source.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_image_work_session.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_inference_input.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_inference_schemas.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_inference_service.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_label_schemas.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_lidar_materialization.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_loader.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_matching.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_metrics.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_models.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_parse_equivalence.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_platform_pose.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_preannotation_client.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_project_discovery.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_reconstruction_client.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_release_gate.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_roadmark_preview.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_semantic_scene_authoring.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_semantic_scene_client.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_semantic_scene_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_semantic_scene_independent.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_semantic_scene_native_clip.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_source_attributes.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_source_content.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_time_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_token.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_tracking_eval.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_training_identity.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_transform.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_transform_chain.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_validation.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_vector_map.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_vector_map_geometry.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_vector_map_session.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_work_session_validation_reuse.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/__init__.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/_image_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/accounts.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/annotation_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/annotation_reference.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/audit.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/build_info.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/clean_basemap.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/cli.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/__init__.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/_origin.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/accounts.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/annotation_reference.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/assets.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/bags.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/capabilities.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/checkpoints.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/clean_basemap.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/client.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/clip_work_sessions.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/clips.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/dataset_identity.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/image_clips.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/image_exports.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/image_preannotations.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/image_review.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/image_schemas.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/image_work_sessions.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/label_schemas.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/preannotation.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/projects.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/reconstruction.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/semantic_scene.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/semantic_scene_authoring.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/services.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/client/test_sets.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/consumer_identity.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/coordinate_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/core/__init__.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/core/loader.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/core/models.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/core/token.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/core/transform.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/current_state.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/dataset_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/dataset_identity.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/eval/__init__.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/eval/api.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/eval/box.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/eval/detection.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/eval/matching.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/eval/metrics.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/eval/tracking.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/export_bundle.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_clip.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_export.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_geometry.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_groups.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_preannotation.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_reference.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_review.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_schema.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_schema_migration.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_schema_upgrade.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_source.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/image_work_session.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/inference/__init__.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/inference/input.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/inference/models.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/inference/schemas.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/inference/service.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/inference/tasks.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/json_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/label_schema.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/lidar_materialization.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/project_discovery.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/roadmark_preview.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/semantic_scene_authoring.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/semantic_scene_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/source_content.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/time_contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/training_identity.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/validation/__init__.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/validation/contract.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/validation/platform_pose.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/validation/report.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/vector_map.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/vector_map_geometry.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit/work_session.py +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit.egg-info/SOURCES.txt +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit.egg-info/dependency_links.txt +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit.egg-info/entry_points.txt +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit.egg-info/requires.txt +0 -0
- {x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/x4d_devkit.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "x4d-devkit"
|
|
7
|
-
version = "0.55.
|
|
7
|
+
version = "0.55.0rc2"
|
|
8
8
|
description = "Official X-4D external SDK and CLI for datasets, platform APIs, training bridges, and automation"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -11,7 +11,7 @@ from x4d_devkit.eval.matching import MetricData
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def test_package_version_is_current_release():
|
|
14
|
-
assert x4d_devkit.__version__ == "0.55.
|
|
14
|
+
assert x4d_devkit.__version__ == "0.55.0rc2"
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def test_loader_exposes_and_enforces_only_current_schema(tmp_path):
|
|
@@ -442,6 +442,22 @@ def test_work_session_materializes_optional_semantic_scene_as_an_independent_com
|
|
|
442
442
|
loader = ClipLoader(tmp_path)
|
|
443
443
|
assert loader.load_semantic_scene_component().manifest.semantic_scene_revision == source["semantic_scene_revision"]
|
|
444
444
|
|
|
445
|
+
# A later complete materialization of the same semantic-scene revision
|
|
446
|
+
# reuses the vouched component: no removal, transfer or re-validation.
|
|
447
|
+
semantic_urls = set(source["semantic_scene_asset_urls"].values())
|
|
448
|
+
before = len(client._http.urls)
|
|
449
|
+
again = materialize_work_session_clip(
|
|
450
|
+
source,
|
|
451
|
+
output_dir=tmp_path,
|
|
452
|
+
client=client,
|
|
453
|
+
workers=1,
|
|
454
|
+
)
|
|
455
|
+
assert again["errors"] == []
|
|
456
|
+
assert not semantic_urls & {url for _, url in client._http.urls[before:]}
|
|
457
|
+
assert ClipLoader(tmp_path).load_semantic_scene_component().manifest.semantic_scene_revision == (
|
|
458
|
+
source["semantic_scene_revision"]
|
|
459
|
+
)
|
|
460
|
+
|
|
445
461
|
|
|
446
462
|
def test_keyframes_only_materialization_writes_self_contained_projection(
|
|
447
463
|
tmp_path,
|
|
@@ -466,7 +466,17 @@ def materialize_work_session_clip(
|
|
|
466
466
|
errors=errors,
|
|
467
467
|
)
|
|
468
468
|
|
|
469
|
-
|
|
469
|
+
# The Semantic Scene is an independent content-addressed component with its
|
|
470
|
+
# own revision. When the completed cache already vouches for exactly the
|
|
471
|
+
# target revision, it is reused: no removal, transfer, or re-validation.
|
|
472
|
+
reuse_semantic_scene = (
|
|
473
|
+
"semantic_scene" in selected_components
|
|
474
|
+
and ws.semantic_scene_revision is not None
|
|
475
|
+
and previous_identity.get("semantic_scene_revision")
|
|
476
|
+
== ws.semantic_scene_revision
|
|
477
|
+
and (clip_dir / "semantic_scene" / "manifest.json").is_file()
|
|
478
|
+
)
|
|
479
|
+
if "semantic_scene" in selected_components and not reuse_semantic_scene:
|
|
470
480
|
_remove_semantic_scene_component(clip_dir)
|
|
471
481
|
if ws.semantic_scene_revision is not None:
|
|
472
482
|
with _http_context(client=client, api_url=api_url, token=token) as http:
|
|
@@ -502,6 +512,7 @@ def materialize_work_session_clip(
|
|
|
502
512
|
not errors
|
|
503
513
|
and "semantic_scene" in selected_components
|
|
504
514
|
and ws.semantic_scene_revision is not None
|
|
515
|
+
and not reuse_semantic_scene
|
|
505
516
|
):
|
|
506
517
|
try:
|
|
507
518
|
from x4d_devkit.validation.validator import load_semantic_scene_component
|
|
@@ -523,7 +534,10 @@ def materialize_work_session_clip(
|
|
|
523
534
|
if not errors:
|
|
524
535
|
from x4d_devkit.validation.validator import validate_clip
|
|
525
536
|
|
|
526
|
-
report = validate_clip(
|
|
537
|
+
report = validate_clip(
|
|
538
|
+
clip_dir,
|
|
539
|
+
validate_semantic_scene=not reuse_semantic_scene,
|
|
540
|
+
)
|
|
527
541
|
if not report.ok:
|
|
528
542
|
errors.append(
|
|
529
543
|
{
|
|
@@ -86,8 +86,15 @@ def _is_canonical_asset_path(value: Any) -> bool:
|
|
|
86
86
|
|
|
87
87
|
def validate_clip(
|
|
88
88
|
clip_dir: str | Path,
|
|
89
|
+
*,
|
|
90
|
+
validate_semantic_scene: bool = True,
|
|
89
91
|
) -> ValidationReport:
|
|
90
|
-
"""Validate one self-contained native Dataset 0.18 Clip.
|
|
92
|
+
"""Validate one self-contained native Dataset 0.18 Clip.
|
|
93
|
+
|
|
94
|
+
``validate_semantic_scene=False`` is only for a caller that already holds
|
|
95
|
+
proof that the present Semantic Scene component is the exact unchanged
|
|
96
|
+
revision it validated before (for example a reused cache component).
|
|
97
|
+
"""
|
|
91
98
|
|
|
92
99
|
root = Path(clip_dir)
|
|
93
100
|
issues: list[ValidationIssue] = []
|
|
@@ -136,7 +143,7 @@ def validate_clip(
|
|
|
136
143
|
"native semantic_scene component path must be a directory",
|
|
137
144
|
str(semantic_scene_path),
|
|
138
145
|
)
|
|
139
|
-
elif report.ok:
|
|
146
|
+
elif report.ok and validate_semantic_scene:
|
|
140
147
|
try:
|
|
141
148
|
load_semantic_scene_component(root)
|
|
142
149
|
except Exception as exc:
|
|
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
|
{x4d_devkit-0.55.0rc1 → x4d_devkit-0.55.0rc2}/tests/test_current_state_identity_consumers_example.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
|
|
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
|
|
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
|