x4d-devkit 0.53.0rc2__tar.gz → 0.53.0rc3__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.53.0rc2 → x4d_devkit-0.53.0rc3}/PKG-INFO +1 -1
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/pyproject.toml +1 -1
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_schema_migration.py +45 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_sdk_api.py +1 -1
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_schema_migration.py +10 -3
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit.egg-info/PKG-INFO +1 -1
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/LICENSE +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/README.md +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/setup.cfg +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_accounts.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_annotation_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_annotation_document_hash.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_annotation_reference.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_assets_client.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_boundary.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_box.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_build_info.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_category_audit.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_clean_basemap.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_clean_basemap_client.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_cli_auth.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_client_json_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_client_projects.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_clip_archives.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_contract_validation.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_coordinate_frames.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_current_state.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_current_state_identity_consumers_example.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_dataset_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_dataset_identity.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_detection_eval.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_evaluate.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_export_bundle.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_clip.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_conditional_rules.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_enum_set.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_export.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_geometry.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_groups.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_preannotation.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_reference.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_review.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_schema_registry_client.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_schema_upgrade.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_image_work_session.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_inference_input.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_inference_schemas.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_inference_service.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_label_schemas.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_lidar_materialization.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_loader.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_matching.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_metrics.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_models.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_parse_equivalence.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_platform_pose.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_preannotation_client.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_project_discovery.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_reconstruction_client.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_release_gate.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_roadmark_preview.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_semantic_scene_authoring.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_semantic_scene_client.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_semantic_scene_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_semantic_scene_independent.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_semantic_scene_native_clip.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_source_attributes.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_time_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_token.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_tracking_eval.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_training_identity.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_transform.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_transform_chain.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_validation.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_vector_map.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_vector_map_geometry.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_vector_map_session.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_work_session.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/tests/test_work_session_validation_reuse.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/__init__.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/_image_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/accounts.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/annotation_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/annotation_reference.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/audit.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/build_info.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/clean_basemap.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/cli.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/__init__.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/_origin.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/accounts.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/annotation_reference.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/assets.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/bags.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/capabilities.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/checkpoints.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/clean_basemap.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/client.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/clip_work_sessions.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/clips.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/dataset_identity.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/image_clips.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/image_exports.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/image_preannotations.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/image_review.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/image_schemas.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/image_work_sessions.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/label_schemas.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/preannotation.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/projects.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/reconstruction.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/semantic_scene.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/semantic_scene_authoring.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/services.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/client/test_sets.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/consumer_identity.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/coordinate_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/core/__init__.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/core/loader.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/core/models.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/core/token.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/core/transform.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/current_state.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/dataset_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/dataset_identity.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/eval/__init__.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/eval/api.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/eval/box.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/eval/detection.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/eval/matching.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/eval/metrics.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/eval/tracking.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/export_bundle.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_clip.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_export.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_geometry.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_groups.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_preannotation.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_reference.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_review.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_schema.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_schema_upgrade.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/image_work_session.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/inference/__init__.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/inference/input.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/inference/models.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/inference/schemas.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/inference/service.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/inference/tasks.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/json_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/label_schema.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/lidar_materialization.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/materialize.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/project_discovery.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/roadmark_preview.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/semantic_scene_authoring.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/semantic_scene_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/time_contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/training_identity.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/validation/__init__.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/validation/contract.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/validation/platform_pose.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/validation/report.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/validation/validator.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/vector_map.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/vector_map_geometry.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit/work_session.py +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit.egg-info/SOURCES.txt +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit.egg-info/dependency_links.txt +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit.egg-info/entry_points.txt +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/x4d_devkit.egg-info/requires.txt +0 -0
- {x4d_devkit-0.53.0rc2 → x4d_devkit-0.53.0rc3}/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.53.
|
|
7
|
+
version = "0.53.0rc3"
|
|
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"
|
|
@@ -281,3 +281,48 @@ def test_typed_client_verifies_the_exact_preview_and_receipt():
|
|
|
281
281
|
with pytest.raises(ValueError, match="another request"):
|
|
282
282
|
client.image_schemas.commit_migration(request)
|
|
283
283
|
assert build_image_schema_migration_request(parsed, "k").to_dict()["preview"] == preview
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
def box_object(attributes=None):
|
|
287
|
+
return {
|
|
288
|
+
"id": "box_a",
|
|
289
|
+
"image_id": "image_a",
|
|
290
|
+
"view_id": "objects",
|
|
291
|
+
"category_id": "box",
|
|
292
|
+
"geometry": {"geometry_type": "box_2d", "box": {"x_min": 10, "y_min": 20, "x_max": 40, "y_max": 60}},
|
|
293
|
+
"attributes": attributes or {},
|
|
294
|
+
"attribute_ranges": [],
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def test_box_objects_migrate_alongside_lines():
|
|
299
|
+
clip = clip_payload()
|
|
300
|
+
clip["image_annotation"]["objects"] = [line_object(), box_object()]
|
|
301
|
+
clip["identity"] = build_image_identity(clip)
|
|
302
|
+
candidate, _ = image_schema_migration_candidate(
|
|
303
|
+
clip, target(clip), mapping(VISIBLE_TO_RANGE, DISCARD_STYLE)
|
|
304
|
+
)
|
|
305
|
+
assert candidate.to_dict()["image_annotation"]["objects"][1] == box_object()
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
def test_a_box_value_cannot_become_a_range():
|
|
309
|
+
clip = clip_payload()
|
|
310
|
+
body = deepcopy(clip["label_schema"]["body"])
|
|
311
|
+
body["categories"][1]["attributes"] = [
|
|
312
|
+
{"id": "flag", "display_name": "Flag", "type": "boolean", "required": False, "scopes": ["object"], "values": []}
|
|
313
|
+
]
|
|
314
|
+
clip["label_schema"] = snapshot(body)
|
|
315
|
+
clip["image_annotation"]["objects"] = [box_object({"flag": True})]
|
|
316
|
+
clip["identity"] = build_image_identity(clip)
|
|
317
|
+
new = deepcopy(body)
|
|
318
|
+
new["version"] = "2.0.0"
|
|
319
|
+
new["categories"][1]["attributes"] = []
|
|
320
|
+
rules = mapping(
|
|
321
|
+
{
|
|
322
|
+
"match": {"category_id": "box", "scope": "object", "attribute_id": "flag", "value": True},
|
|
323
|
+
"action": {"kind": "range", "attribute_id": "flag", "value": True},
|
|
324
|
+
}
|
|
325
|
+
)
|
|
326
|
+
with pytest.raises(ImageSchemaMigrationConflict) as caught:
|
|
327
|
+
image_schema_migration_candidate(clip, snapshot(new), rules)
|
|
328
|
+
assert [row["code"] for row in caught.value.conflicts] == ["mapped_value_invalid"]
|
|
@@ -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.53.
|
|
14
|
+
assert x4d_devkit.__version__ == "0.53.0rc3"
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def test_loader_exposes_and_enforces_only_current_schema(tmp_path):
|
|
@@ -181,7 +181,7 @@ def migrate_image_annotation(annotation, *, target_schema, mapping):
|
|
|
181
181
|
changes, removed, conflicts = [], [], []
|
|
182
182
|
carried = 0
|
|
183
183
|
|
|
184
|
-
def convert(object_id, category, scope, values, range_id, base_path):
|
|
184
|
+
def convert(object_id, category, scope, values, range_id, base_path, polyline):
|
|
185
185
|
nonlocal carried
|
|
186
186
|
output, added = {}, []
|
|
187
187
|
for attribute_id in sorted(values):
|
|
@@ -230,6 +230,11 @@ def migrate_image_annotation(annotation, *, target_schema, mapping):
|
|
|
230
230
|
)
|
|
231
231
|
continue
|
|
232
232
|
change["after"] = {"attribute_id": action["attribute_id"], "value": action["value"]}
|
|
233
|
+
if action["kind"] == "range" and not polyline:
|
|
234
|
+
conflicts.append(
|
|
235
|
+
_conflict("mapped_value_invalid", f"rule {index}: only a polyline can carry ranges", path, **context)
|
|
236
|
+
)
|
|
237
|
+
continue
|
|
233
238
|
if action["kind"] == "range":
|
|
234
239
|
change["range_id"] = _range_id(object_id, index)
|
|
235
240
|
added.append((change["range_id"], action))
|
|
@@ -256,8 +261,9 @@ def migrate_image_annotation(annotation, *, target_schema, mapping):
|
|
|
256
261
|
_conflict("object_unrepresentable", "target category geometry differs", path, object_id=object_id)
|
|
257
262
|
)
|
|
258
263
|
continue
|
|
264
|
+
polyline = category["geometry_type"] == "polyline_2d"
|
|
259
265
|
row["attributes"], added = convert(
|
|
260
|
-
object_id, category, "object", row["attributes"], None, path + ".attributes"
|
|
266
|
+
object_id, category, "object", row["attributes"], None, path + ".attributes", polyline
|
|
261
267
|
)
|
|
262
268
|
ranges = []
|
|
263
269
|
for range_index, interval in enumerate(row["attribute_ranges"]):
|
|
@@ -268,14 +274,15 @@ def migrate_image_annotation(annotation, *, target_schema, mapping):
|
|
|
268
274
|
interval["attributes"],
|
|
269
275
|
interval["range_id"],
|
|
270
276
|
f"{path}.attribute_ranges[{range_index}].attributes",
|
|
277
|
+
polyline,
|
|
271
278
|
)
|
|
272
279
|
assert not nested # range actions are object-scope only
|
|
273
280
|
if values:
|
|
274
281
|
ranges.append({**interval, "attributes": values})
|
|
275
282
|
else:
|
|
276
283
|
removed.append({"object_id": object_id, "range_id": interval["range_id"]})
|
|
277
|
-
vertices = row["geometry"]["vertices"]
|
|
278
284
|
for range_id, action in added:
|
|
285
|
+
vertices = row["geometry"]["vertices"]
|
|
279
286
|
ranges.append(
|
|
280
287
|
{
|
|
281
288
|
"range_id": range_id,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.53.0rc2 → x4d_devkit-0.53.0rc3}/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
|