x4d-devkit 0.55.0rc2__tar.gz → 0.55.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. {x4d_devkit-0.55.0rc2/x4d_devkit.egg-info → x4d_devkit-0.55.1}/PKG-INFO +1 -1
  2. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/pyproject.toml +1 -1
  3. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_sdk_api.py +1 -1
  4. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_work_session.py +21 -1
  5. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/materialize.py +8 -1
  6. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1/x4d_devkit.egg-info}/PKG-INFO +1 -1
  7. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/LICENSE +0 -0
  8. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/README.md +0 -0
  9. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/setup.cfg +0 -0
  10. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_accounts.py +0 -0
  11. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_annotation_contract.py +0 -0
  12. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_annotation_document_hash.py +0 -0
  13. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_annotation_reference.py +0 -0
  14. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_assets_client.py +0 -0
  15. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_boundary.py +0 -0
  16. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_box.py +0 -0
  17. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_build_info.py +0 -0
  18. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_category_audit.py +0 -0
  19. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_clean_basemap.py +0 -0
  20. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_clean_basemap_client.py +0 -0
  21. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_cli_auth.py +0 -0
  22. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_client_json_contract.py +0 -0
  23. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_client_projects.py +0 -0
  24. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_clip_archives.py +0 -0
  25. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_contract_validation.py +0 -0
  26. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_coordinate_frames.py +0 -0
  27. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_current_state.py +0 -0
  28. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_current_state_identity_consumers_example.py +0 -0
  29. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_dataset_contract.py +0 -0
  30. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_dataset_identity.py +0 -0
  31. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_detection_eval.py +0 -0
  32. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_evaluate.py +0 -0
  33. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_export_bundle.py +0 -0
  34. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_clip.py +0 -0
  35. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_conditional_rules.py +0 -0
  36. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_enum_set.py +0 -0
  37. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_export.py +0 -0
  38. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_geometry.py +0 -0
  39. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_groups.py +0 -0
  40. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_preannotation.py +0 -0
  41. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_reference.py +0 -0
  42. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_review.py +0 -0
  43. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_schema_migration.py +0 -0
  44. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_schema_registry_client.py +0 -0
  45. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_schema_upgrade.py +0 -0
  46. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_source.py +0 -0
  47. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_image_work_session.py +0 -0
  48. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_inference_input.py +0 -0
  49. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_inference_schemas.py +0 -0
  50. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_inference_service.py +0 -0
  51. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_label_schemas.py +0 -0
  52. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_lidar_materialization.py +0 -0
  53. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_loader.py +0 -0
  54. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_matching.py +0 -0
  55. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_metrics.py +0 -0
  56. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_models.py +0 -0
  57. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_parse_equivalence.py +0 -0
  58. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_platform_pose.py +0 -0
  59. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_preannotation_client.py +0 -0
  60. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_project_discovery.py +0 -0
  61. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_reconstruction_client.py +0 -0
  62. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_release_gate.py +0 -0
  63. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_roadmark_preview.py +0 -0
  64. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_semantic_scene_authoring.py +0 -0
  65. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_semantic_scene_client.py +0 -0
  66. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_semantic_scene_contract.py +0 -0
  67. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_semantic_scene_independent.py +0 -0
  68. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_semantic_scene_native_clip.py +0 -0
  69. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_source_attributes.py +0 -0
  70. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_source_content.py +0 -0
  71. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_time_contract.py +0 -0
  72. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_token.py +0 -0
  73. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_tracking_eval.py +0 -0
  74. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_training_identity.py +0 -0
  75. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_transform.py +0 -0
  76. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_transform_chain.py +0 -0
  77. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_validation.py +0 -0
  78. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_vector_map.py +0 -0
  79. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_vector_map_geometry.py +0 -0
  80. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_vector_map_session.py +0 -0
  81. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/tests/test_work_session_validation_reuse.py +0 -0
  82. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/__init__.py +0 -0
  83. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/_image_contract.py +0 -0
  84. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/accounts.py +0 -0
  85. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/annotation_contract.py +0 -0
  86. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/annotation_reference.py +0 -0
  87. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/audit.py +0 -0
  88. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/build_info.py +0 -0
  89. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/clean_basemap.py +0 -0
  90. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/cli.py +0 -0
  91. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/__init__.py +0 -0
  92. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/_origin.py +0 -0
  93. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/accounts.py +0 -0
  94. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/annotation_reference.py +0 -0
  95. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/assets.py +0 -0
  96. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/bags.py +0 -0
  97. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/capabilities.py +0 -0
  98. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/checkpoints.py +0 -0
  99. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/clean_basemap.py +0 -0
  100. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/client.py +0 -0
  101. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/clip_work_sessions.py +0 -0
  102. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/clips.py +0 -0
  103. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/dataset_identity.py +0 -0
  104. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/image_clips.py +0 -0
  105. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/image_exports.py +0 -0
  106. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/image_preannotations.py +0 -0
  107. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/image_review.py +0 -0
  108. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/image_schemas.py +0 -0
  109. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/image_work_sessions.py +0 -0
  110. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/label_schemas.py +0 -0
  111. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/preannotation.py +0 -0
  112. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/projects.py +0 -0
  113. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/reconstruction.py +0 -0
  114. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/semantic_scene.py +0 -0
  115. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/semantic_scene_authoring.py +0 -0
  116. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/services.py +0 -0
  117. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/client/test_sets.py +0 -0
  118. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/consumer_identity.py +0 -0
  119. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/coordinate_contract.py +0 -0
  120. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/core/__init__.py +0 -0
  121. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/core/loader.py +0 -0
  122. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/core/models.py +0 -0
  123. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/core/token.py +0 -0
  124. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/core/transform.py +0 -0
  125. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/current_state.py +0 -0
  126. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/dataset_contract.py +0 -0
  127. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/dataset_identity.py +0 -0
  128. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/eval/__init__.py +0 -0
  129. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/eval/api.py +0 -0
  130. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/eval/box.py +0 -0
  131. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/eval/detection.py +0 -0
  132. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/eval/matching.py +0 -0
  133. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/eval/metrics.py +0 -0
  134. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/eval/tracking.py +0 -0
  135. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/export_bundle.py +0 -0
  136. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_clip.py +0 -0
  137. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_export.py +0 -0
  138. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_geometry.py +0 -0
  139. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_groups.py +0 -0
  140. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_preannotation.py +0 -0
  141. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_reference.py +0 -0
  142. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_review.py +0 -0
  143. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_schema.py +0 -0
  144. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_schema_migration.py +0 -0
  145. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_schema_upgrade.py +0 -0
  146. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_source.py +0 -0
  147. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/image_work_session.py +0 -0
  148. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/inference/__init__.py +0 -0
  149. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/inference/input.py +0 -0
  150. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/inference/models.py +0 -0
  151. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/inference/schemas.py +0 -0
  152. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/inference/service.py +0 -0
  153. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/inference/tasks.py +0 -0
  154. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/json_contract.py +0 -0
  155. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/label_schema.py +0 -0
  156. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/lidar_materialization.py +0 -0
  157. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/project_discovery.py +0 -0
  158. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/roadmark_preview.py +0 -0
  159. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/semantic_scene_authoring.py +0 -0
  160. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/semantic_scene_contract.py +0 -0
  161. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/source_content.py +0 -0
  162. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/time_contract.py +0 -0
  163. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/training_identity.py +0 -0
  164. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/validation/__init__.py +0 -0
  165. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/validation/contract.py +0 -0
  166. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/validation/platform_pose.py +0 -0
  167. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/validation/report.py +0 -0
  168. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/validation/validator.py +0 -0
  169. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/vector_map.py +0 -0
  170. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/vector_map_geometry.py +0 -0
  171. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit/work_session.py +0 -0
  172. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit.egg-info/SOURCES.txt +0 -0
  173. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit.egg-info/dependency_links.txt +0 -0
  174. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit.egg-info/entry_points.txt +0 -0
  175. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit.egg-info/requires.txt +0 -0
  176. {x4d_devkit-0.55.0rc2 → x4d_devkit-0.55.1}/x4d_devkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: x4d-devkit
3
- Version: 0.55.0rc2
3
+ Version: 0.55.1
4
4
  Summary: Official X-4D external SDK and CLI for datasets, platform APIs, training bridges, and automation
5
5
  Author: windzu
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "x4d-devkit"
7
- version = "0.55.0rc2"
7
+ version = "0.55.1"
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.0rc2"
14
+ assert x4d_devkit.__version__ == "0.55.1"
15
15
 
16
16
 
17
17
  def test_loader_exposes_and_enforces_only_current_schema(tmp_path):
@@ -723,11 +723,12 @@ def test_invalid_native_projection_never_publishes_cache_identity(
723
723
  ):
724
724
  original = materialize_module._write_component_tables
725
725
 
726
- def write_invalid_projection(clip_dir, tables, *, selected_components):
726
+ def write_invalid_projection(clip_dir, tables, *, selected_components, complete):
727
727
  original(
728
728
  clip_dir,
729
729
  tables,
730
730
  selected_components=selected_components,
731
+ complete=complete,
731
732
  )
732
733
  (clip_dir / "ego_pose.json").write_text("[]", encoding="utf-8")
733
734
 
@@ -756,6 +757,25 @@ def test_materialize_rejects_malformed_completed_cache_identity(tmp_path):
756
757
  materialize_work_session_clip(_manifest(), output_dir=tmp_path)
757
758
 
758
759
 
760
+ def test_complete_materialization_replaces_older_contract_meta(tmp_path):
761
+ # An older cache keeps retired meta fields (Dataset 0.17 vehicle_id).
762
+ (tmp_path / "meta.json").write_text(
763
+ json.dumps({"clip_id": "stale", "schema_version": "0.17", "vehicle_id": "G150"})
764
+ )
765
+ result = materialize_work_session_clip(
766
+ _manifest(),
767
+ output_dir=tmp_path,
768
+ api_url="http://x4d.local",
769
+ client=_FakeX4DClient(),
770
+ workers=1,
771
+ )
772
+ assert result["errors"] == []
773
+ meta = json.loads((tmp_path / "meta.json").read_text())
774
+ assert "vehicle_id" not in meta
775
+ assert meta["schema_version"] != "0.17"
776
+ assert validate_clip(tmp_path).ok
777
+
778
+
759
779
  def test_materialize_rejects_legacy_root_occ(tmp_path):
760
780
  (tmp_path / "occ").mkdir()
761
781
 
@@ -428,6 +428,7 @@ def materialize_work_session_clip(
428
428
  clip_dir,
429
429
  tables,
430
430
  selected_components=selected_components,
431
+ complete=complete_request,
431
432
  )
432
433
 
433
434
  selected_sample_data = tables["sample_data.json"]
@@ -929,11 +930,17 @@ def _write_component_tables(
929
930
  tables: dict[str, Any],
930
931
  *,
931
932
  selected_components: frozenset[str],
933
+ complete: bool = False,
932
934
  ) -> None:
933
935
  target_meta = tables["meta.json"]
934
936
  source_components = {"samples", "sweeps"}
935
937
  meta_components = {*source_components, "label_schema", "business_metadata"}
936
- if selected_components & meta_components:
938
+ if complete:
939
+ # A complete materialization owns every metadata field: write the
940
+ # target projection and never parse a previous (possibly older
941
+ # contract) meta.json, whose retired fields would fail validation.
942
+ _write_json(clip_dir / "meta.json", dict(target_meta))
943
+ elif selected_components & meta_components:
937
944
  meta_path = clip_dir / "meta.json"
938
945
  if meta_path.exists():
939
946
  current_meta = load_i_json(meta_path)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: x4d-devkit
3
- Version: 0.55.0rc2
3
+ Version: 0.55.1
4
4
  Summary: Official X-4D external SDK and CLI for datasets, platform APIs, training bridges, and automation
5
5
  Author: windzu
6
6
  License-Expression: Apache-2.0
File without changes
File without changes
File without changes