weightslab 1.2.6__tar.gz → 1.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. {weightslab-1.2.6 → weightslab-1.3.0}/.github/workflows/ci.yml +9 -28
  2. {weightslab-1.2.6 → weightslab-1.3.0}/.github/workflows/release.yml +68 -16
  3. {weightslab-1.2.6 → weightslab-1.3.0}/AGENTS.md +12 -5
  4. weightslab-1.3.0/CHANGELOG.md +1 -0
  5. weightslab-1.3.0/PKG-INFO +393 -0
  6. weightslab-1.3.0/README.md +334 -0
  7. {weightslab-1.2.6 → weightslab-1.3.0}/docs/configuration.rst +207 -2
  8. {weightslab-1.2.6 → weightslab-1.3.0}/docs/weights_studio.rst +7 -1
  9. {weightslab-1.2.6 → weightslab-1.3.0}/pyproject.toml +3 -1
  10. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/__init__.py +11 -1
  11. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/_version.py +3 -3
  12. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/art.py +13 -13
  13. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/backend/audit_logger.py +2 -2
  14. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/backend/cli.py +5 -5
  15. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/backend/dataloader_interface.py +39 -39
  16. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/backend/ledgers.py +99 -19
  17. weightslab-1.3.0/weightslab/backend/logger.py +1100 -0
  18. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/backend/model_interface.py +7 -7
  19. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/baseline_models/pytorch/models.py +65 -65
  20. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/components/__init__.py +9 -9
  21. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/components/checkpoint_manager.py +98 -98
  22. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/components/experiment_hash.py +9 -9
  23. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/components/global_monitoring.py +17 -10
  24. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/components/parallel_primitives.py +15 -15
  25. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/components/tracking.py +10 -10
  26. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/array_proxy.py +3 -3
  27. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/data_samples_with_ops.py +20 -20
  28. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/data_utils.py +40 -33
  29. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/dataframe_manager.py +43 -43
  30. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/h5_array_store.py +7 -7
  31. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/h5_dataframe_store.py +36 -25
  32. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/point_cloud_utils.py +21 -21
  33. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/sample_stats.py +6 -6
  34. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/docker_in_docker/Dockerfile +1 -2
  35. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/siblings_self_contained/Dockerfile +1 -2
  36. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Lightning/ws-classification/main.py +10 -10
  37. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-classification/config.yaml +4 -3
  38. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-classification/main.py +25 -16
  39. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-clustering/face/data.py +47 -47
  40. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-clustering/face/model.py +22 -22
  41. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-clustering/face/signals.py +2 -2
  42. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-clustering/face/utils.py +7 -7
  43. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-clustering/main.py +23 -23
  44. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-detection/main.py +16 -16
  45. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-detection/utils/criterions.py +18 -18
  46. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-detection/utils/data.py +15 -15
  47. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-detection/utils/model.py +11 -11
  48. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-generation/main.py +23 -23
  49. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/config.yaml +2 -1
  50. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/main.py +43 -29
  51. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/utils/criterions.py +9 -9
  52. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/utils/data.py +19 -8
  53. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/utils/model.py +2 -2
  54. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Ultralytics/ws-detection/config.yaml +3 -3
  55. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Ultralytics/ws-detection/main.py +13 -9
  56. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-2d-lidar-detection/config.yaml +1 -0
  57. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-2d-lidar-detection/main.py +6 -6
  58. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-2d-lidar-detection/utils/criterions.py +4 -4
  59. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-2d-lidar-detection/utils/data.py +8 -8
  60. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-2d-lidar-detection/utils/model.py +12 -12
  61. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-3d-lidar-detection/main.py +34 -34
  62. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/criterions.py +25 -25
  63. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/data.py +47 -47
  64. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/kitti_download.py +5 -5
  65. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/model.py +28 -28
  66. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/ultralytics/__init__.py +2 -2
  67. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/ultralytics/dataset.py +2 -2
  68. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/ultralytics/signals.py +12 -12
  69. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/ultralytics/trainer.py +10 -10
  70. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/models/model_with_ops.py +4 -4
  71. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/models/monkey_patcher.py +1 -1
  72. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/modules/modules_with_ops.py +26 -26
  73. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/proto/experiment_service.proto +61 -0
  74. weightslab-1.3.0/weightslab/proto/experiment_service_pb2.py +194 -0
  75. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/proto/experiment_service_pb2_grpc.py +91 -0
  76. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/security/cert_auth_manager.py +1 -1
  77. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/src.py +116 -129
  78. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_compare_dataloaders.py +65 -65
  79. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_data_loader_interface.py +65 -65
  80. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_instance_signal_logger.py +28 -37
  81. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_ledgers.py +57 -3
  82. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_logger_core.py +80 -54
  83. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_ui_docker_bridge.py +15 -15
  84. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_write_dataframe.py +3 -3
  85. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_write_history.py +5 -5
  86. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/chaos_monkeys_utests/test_grpc_chaos_monkey_robustness.py +1 -1
  87. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/components/test_checkpoint_workflow.py +63 -63
  88. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/components/test_global_monitoring_unit.py +21 -21
  89. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_data_samples_with_ops.py +3 -3
  90. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_dataframe_manager_unit.py +8 -8
  91. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_flush_pipeline.py +7 -8
  92. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_h5_array_store.py +1 -2
  93. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_h5_dataframe_store.py +3 -3
  94. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_point_cloud_utils.py +15 -15
  95. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/gRPC/test_get_point_cloud.py +39 -1
  96. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/gRPC/test_grpc_tag_operations.py +26 -26
  97. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/gRPC/test_grpc_user_actions.py +53 -11
  98. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/general/test_cli.py +86 -86
  99. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/general/test_signals.py +10 -10
  100. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/general/test_signals_wrapping.py +4 -4
  101. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/integrations/test_pytorch_lightning_integration.py +112 -112
  102. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/integrations/ultralytics/ddp/ddp_ablation.py +13 -13
  103. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/integrations/ultralytics/ddp/ddp_test_suite.py +108 -108
  104. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/model/test_constraint_generation.py +4 -4
  105. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/model/test_dependency_patterns.py +6 -6
  106. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/model/test_model_with_ops.py +1 -1
  107. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/model/test_tracking.py +1 -1
  108. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/modules/test_modules_with_ops.py +18 -18
  109. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/test_secure_docker.py +1 -1
  110. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/trainer/services/test_agent_prompt_unit.py +1 -1
  111. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/trainer/services/test_trainer_services_server.py +1 -1
  112. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/trainer/services/test_trainer_services_unit.py +118 -16
  113. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/watchdog/test_lock_monitor.py +1 -1
  114. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/watchdog/test_watchdog.py +14 -14
  115. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/experiment_context.py +2 -2
  116. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/agent/agent.py +9 -9
  117. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/agent_service.py +5 -5
  118. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/data_image_utils.py +3 -3
  119. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/data_service.py +503 -204
  120. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/experiment_service.py +246 -14
  121. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/instance_merger.py +6 -6
  122. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/utils/tools.py +1 -1
  123. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/trainer_services.py +19 -12
  124. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/trainer_tools.py +19 -19
  125. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/docker-compose.yml +15 -0
  126. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/utils/build-and-deploy.sh +49 -0
  127. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui_docker_bridge.py +59 -53
  128. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/utils/computational_graph.py +92 -92
  129. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/utils/logs.py +1 -1
  130. weightslab-1.3.0/weightslab/utils/telemetry.py +152 -0
  131. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/utils/tools.py +18 -16
  132. weightslab-1.3.0/weightslab/watchdog/__init__.py +30 -0
  133. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/watchdog/grpc_watchdog.py +2 -2
  134. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/watchdog/lock_monitor.py +7 -7
  135. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/watchdog/log_level.py +1 -1
  136. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/watchdog/watchdog.py +20 -20
  137. weightslab-1.3.0/weightslab.egg-info/PKG-INFO +393 -0
  138. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab.egg-info/SOURCES.txt +3 -0
  139. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab.egg-info/requires.txt +1 -1
  140. weightslab-1.3.0/weightslab.egg-info/scm_file_list.json +315 -0
  141. weightslab-1.3.0/weightslab.egg-info/scm_version.json +8 -0
  142. weightslab-1.2.6/CHANGELOG.md +0 -1
  143. weightslab-1.2.6/PKG-INFO +0 -481
  144. weightslab-1.2.6/README.md +0 -422
  145. weightslab-1.2.6/weightslab/backend/logger.py +0 -1058
  146. weightslab-1.2.6/weightslab/proto/experiment_service_pb2.py +0 -180
  147. weightslab-1.2.6/weightslab/watchdog/__init__.py +0 -30
  148. weightslab-1.2.6/weightslab.egg-info/PKG-INFO +0 -481
  149. {weightslab-1.2.6 → weightslab-1.3.0}/.gitattributes +0 -0
  150. {weightslab-1.2.6 → weightslab-1.3.0}/.github/workflows/docs-pages.yml +0 -0
  151. {weightslab-1.2.6 → weightslab-1.3.0}/.gitignore +0 -0
  152. {weightslab-1.2.6 → weightslab-1.3.0}/LICENSE +0 -0
  153. {weightslab-1.2.6 → weightslab-1.3.0}/agent_config.yaml +0 -0
  154. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_static/.gitkeep +0 -0
  155. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_static/custom.css +0 -0
  156. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_static/favicon.png +0 -0
  157. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_static/logo-dark.png +0 -0
  158. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_static/logo-light.png +0 -0
  159. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_static/version-switcher.js +0 -0
  160. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_static/weights_studio_architecture.png +0 -0
  161. {weightslab-1.2.6 → weightslab-1.3.0}/docs/_templates/.gitkeep +0 -0
  162. {weightslab-1.2.6 → weightslab-1.3.0}/docs/conf.py +0 -0
  163. {weightslab-1.2.6 → weightslab-1.3.0}/docs/data_exploration.rst +0 -0
  164. {weightslab-1.2.6 → weightslab-1.3.0}/docs/four_way_approach.rst +0 -0
  165. {weightslab-1.2.6 → weightslab-1.3.0}/docs/grpc/audit_logger.rst +0 -0
  166. {weightslab-1.2.6 → weightslab-1.3.0}/docs/grpc/grpc_functions.rst +0 -0
  167. {weightslab-1.2.6 → weightslab-1.3.0}/docs/grpc/index.rst +0 -0
  168. {weightslab-1.2.6 → weightslab-1.3.0}/docs/hyperparameters.rst +0 -0
  169. {weightslab-1.2.6 → weightslab-1.3.0}/docs/index.rst +0 -0
  170. {weightslab-1.2.6 → weightslab-1.3.0}/docs/logger.rst +0 -0
  171. {weightslab-1.2.6 → weightslab-1.3.0}/docs/model_interaction.rst +0 -0
  172. {weightslab-1.2.6 → weightslab-1.3.0}/docs/pytorch_lightning.rst +0 -0
  173. {weightslab-1.2.6 → weightslab-1.3.0}/docs/quickstart.rst +0 -0
  174. {weightslab-1.2.6 → weightslab-1.3.0}/docs/requirements.txt +0 -0
  175. {weightslab-1.2.6 → weightslab-1.3.0}/docs/segmentation_usecase.rst +0 -0
  176. {weightslab-1.2.6 → weightslab-1.3.0}/docs/usecases.rst +0 -0
  177. {weightslab-1.2.6 → weightslab-1.3.0}/docs/user_functions.rst +0 -0
  178. {weightslab-1.2.6 → weightslab-1.3.0}/setup.cfg +0 -0
  179. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/backend/__init__.py +0 -0
  180. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/backend/optimizer_interface.py +0 -0
  181. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/baseline_models/__init__.py +0 -0
  182. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/baseline_models/pytorch/__init__.py +0 -0
  183. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/components/evaluation_controller.py +0 -0
  184. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/data/__init__.py +0 -0
  185. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/README.md +0 -0
  186. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/docker_in_docker/README.md +0 -0
  187. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/docker_in_docker/docker-compose.yml +0 -0
  188. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/docker_in_docker/entrypoint.sh +0 -0
  189. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/siblings_self_contained/README.md +0 -0
  190. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/siblings_self_contained/docker-compose.yml +0 -0
  191. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/siblings_self_contained/entrypoint.sh +0 -0
  192. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Docker_training/siblings_self_contained/ui-compose.yml +0 -0
  193. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Lightning/ws-classification/config.yaml +0 -0
  194. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-clustering/config.yaml +0 -0
  195. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-clustering/face/__init__.py +0 -0
  196. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-detection/README.md +0 -0
  197. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-detection/config.yaml +0 -0
  198. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-generation/config.yaml +0 -0
  199. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0000f77c-6257be58.jpg +0 -0
  200. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/000f8d37-d4c09a0f.jpg +0 -0
  201. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00a0f008-a315437f.jpg +0 -0
  202. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00c12bd0-bb46e479.jpg +0 -0
  203. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00c29c52-f9524f1e.jpg +0 -0
  204. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00ce6f6d-50bbee62.jpg +0 -0
  205. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00d1bafa-1b47b41c.jpg +0 -0
  206. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00d7268f-fd4487be.jpg +0 -0
  207. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00f0dd0f-5e9c9557.jpg +0 -0
  208. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0a0d7f4c-ac5c3c8f.jpg +0 -0
  209. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0a1f4fce-f9cac880.jpg +0 -0
  210. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0a3bb2d8-c195d91e.jpg +0 -0
  211. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1cac6a7-04e33135.jpg +0 -0
  212. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1ceb32e-3f481b43.jpg +0 -0
  213. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1d10d08-5b108225.jpg +0 -0
  214. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1d22449-15fb948f.jpg +0 -0
  215. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1d7b3ac-5af8623b.jpg +0 -0
  216. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1dce572-c6a8cb5e.jpg +0 -0
  217. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1e1a7b8-0aec80e8.jpg +0 -0
  218. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1e8ad72-c3c79240.jpg +0 -0
  219. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1ee702d-0ae1fc10.jpg +0 -0
  220. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1f0efd9-37a14dda.jpg +0 -0
  221. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b2a0648b-d8e126bc.jpg +0 -0
  222. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b2b70230-bad4ff6e.jpg +0 -0
  223. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0000f77c-6257be58.png +0 -0
  224. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/000f8d37-d4c09a0f.png +0 -0
  225. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00a0f008-a315437f.png +0 -0
  226. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00c12bd0-bb46e479.png +0 -0
  227. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00c29c52-f9524f1e.png +0 -0
  228. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00ce6f6d-50bbee62.png +0 -0
  229. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00d1bafa-1b47b41c.png +0 -0
  230. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00d7268f-fd4487be.png +0 -0
  231. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00f0dd0f-5e9c9557.png +0 -0
  232. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0a0d7f4c-ac5c3c8f.png +0 -0
  233. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0a1f4fce-f9cac880.png +0 -0
  234. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0a3bb2d8-c195d91e.png +0 -0
  235. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1cac6a7-04e33135.png +0 -0
  236. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1ceb32e-3f481b43.png +0 -0
  237. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1d10d08-5b108225.png +0 -0
  238. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1d22449-15fb948f.png +0 -0
  239. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1d7b3ac-5af8623b.png +0 -0
  240. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1dce572-c6a8cb5e.png +0 -0
  241. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1e1a7b8-0aec80e8.png +0 -0
  242. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1e8ad72-c3c79240.png +0 -0
  243. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1ee702d-0ae1fc10.png +0 -0
  244. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1f0efd9-37a14dda.png +0 -0
  245. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b2a0648b-d8e126bc.png +0 -0
  246. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b2b70230-bad4ff6e.png +0 -0
  247. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Ultralytics/ws-detection/requirements.txt +0 -0
  248. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-2d-lidar-detection/README.md +0 -0
  249. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-3d-lidar-detection/README.md +0 -0
  250. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/examples/Usecases/ws-3d-lidar-detection/config.yaml +0 -0
  251. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/__init__.py +0 -0
  252. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/ultralytics/README.md +0 -0
  253. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/ultralytics/_utils.py +0 -0
  254. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/integrations/ultralytics/collate.py +0 -0
  255. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/models/__init__.py +0 -0
  256. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/modules/__init__.py +0 -0
  257. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/modules/neuron_ops.py +0 -0
  258. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/proto/__init__.py +0 -0
  259. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/security/__init__.py +0 -0
  260. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/__init__.py +0 -0
  261. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/__init__.py +0 -0
  262. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_audit_logger.py +0 -0
  263. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_cli_additional_unit.py +0 -0
  264. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_model_interface_unit.py +0 -0
  265. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_optimizer_interface.py +0 -0
  266. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/backend/test_optimizer_interface_additional_unit.py +0 -0
  267. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/chaos_monkeys_utests/__init__.py +0 -0
  268. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/components/__init__.py +0 -0
  269. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/components/test_experiment_hash_and_art.py +0 -0
  270. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/__init__.py +0 -0
  271. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_data_service_metadata_copy.py +0 -0
  272. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/data/test_data_utils_unit.py +0 -0
  273. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/gRPC/__init__.py +0 -0
  274. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/general/__init__.py +0 -0
  275. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/general/test_auditor_mode.py +0 -0
  276. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/general/test_hyperparams.py +0 -0
  277. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/general/test_logger_snapshot_rotation.py +0 -0
  278. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/integrations/__init__.py +0 -0
  279. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/model/__init__.py +0 -0
  280. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/model/test_logger.py +0 -0
  281. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/model/test_model_with_ops_unit.py +0 -0
  282. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/modules/__init__.py +0 -0
  283. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/test_src_functions.py +0 -0
  284. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/trainer/__init__.py +0 -0
  285. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/trainer/services/__init__.py +0 -0
  286. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/trainer/services/test_agent_service_unit.py +0 -0
  287. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/trainer/test_trainer_tools.py +0 -0
  288. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/__init__.py +0 -0
  289. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/test_computational_graph_utils_unit.py +0 -0
  290. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/test_logs_unit.py +0 -0
  291. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/test_modules_dependencies_unit.py +0 -0
  292. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/test_plot_graph_render_unit.py +0 -0
  293. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/test_plot_graph_unit.py +0 -0
  294. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/test_shape_prop_unit.py +0 -0
  295. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/utils/test_utils_tools_unit.py +0 -0
  296. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/tests/watchdog/__init__.py +0 -0
  297. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/__init__.py +0 -0
  298. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/__init__.py +0 -0
  299. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/agent/__init__.py +0 -0
  300. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/agent/agent_overview/agent.png +0 -0
  301. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/agent/agent_overview/query_example.png +0 -0
  302. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/agent/agent_overview/schema.png +0 -0
  303. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/agent/intent_prompt.py +0 -0
  304. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/model_service.py +0 -0
  305. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/trainer/services/utils/__init__.py +0 -0
  306. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/Dockerfile +0 -0
  307. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/.dockerignore +0 -0
  308. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/.env.example +0 -0
  309. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/DEPLOYMENT.md +0 -0
  310. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/nginx-entrypoint.sh +0 -0
  311. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/nginx.base-path.conf copy.template +0 -0
  312. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/nginx.base-path.conf.template +0 -0
  313. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/nginx.conf +0 -0
  314. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/test-deployment.sh +0 -0
  315. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/utils/generate-certs-auth-token.ps1 +0 -0
  316. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/utils/generate-certs-auth-token.sh +0 -0
  317. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/docker/utils/test-deployment.sh +0 -0
  318. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/envoy/envoy.downstream_plaintext.yaml +0 -0
  319. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/envoy/envoy.downstream_upstream_plaintext.yaml +0 -0
  320. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/envoy/envoy.upstream_plaintext.yaml +0 -0
  321. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/envoy/envoy.yaml +0 -0
  322. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/ui/nginx.conf +0 -0
  323. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/utils/__init__.py +0 -0
  324. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/utils/modules_dependencies.py +0 -0
  325. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/utils/plot_graph.py +0 -0
  326. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab/utils/shape_prop.py +0 -0
  327. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab.egg-info/dependency_links.txt +0 -0
  328. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab.egg-info/entry_points.txt +0 -0
  329. {weightslab-1.2.6 → weightslab-1.3.0}/weightslab.egg-info/top_level.txt +0 -0
@@ -9,7 +9,7 @@ on:
9
9
  branches: [ '**' ]
10
10
  tags: [ 'v*' ]
11
11
  pull_request:
12
- types: [ opened, reopened, ready_for_review ]
12
+ types: [ opened, reopened, ready_for_review, synchronize ]
13
13
  workflow_dispatch:
14
14
 
15
15
  jobs:
@@ -32,8 +32,8 @@ jobs:
32
32
  run_ci=true # PRs and manual dispatch always run
33
33
  elif [[ "${{ github.ref }}" == refs/tags/* ]]; then
34
34
  run_ci=false # tag pushes are handled by the release workflow
35
- elif [ "${{ github.ref }}" = "refs/heads/main" ] || [ "${{ github.ref }}" = "refs/heads/dev" ]; then
36
- run_ci=true # default branches always run
35
+ elif [ "${{ github.ref }}" = "refs/heads/main" ] || [ "${{ github.ref }}" = "refs/heads/dev" ] || [[ "${{ github.ref }}" == refs/heads/v* ]]; then
36
+ run_ci=true # default branches and release branches (v*) always run
37
37
  elif [ "${FORCE_CI}" = "true" ]; then
38
38
  run_ci=true # custom branch opted in via [force ci]
39
39
  else
@@ -57,7 +57,7 @@ jobs:
57
57
 
58
58
  - name: Set up Python
59
59
  id: setup-python
60
- uses: actions/setup-python@v5
60
+ uses: actions/setup-python@v6
61
61
  with:
62
62
  python-version: '3.11'
63
63
 
@@ -141,7 +141,7 @@ jobs:
141
141
  uses: actions/checkout@v4
142
142
 
143
143
  - name: Set up Python 3.11
144
- uses: actions/setup-python@v5
144
+ uses: actions/setup-python@v6
145
145
  with:
146
146
  python-version: '3.11'
147
147
 
@@ -179,7 +179,7 @@ jobs:
179
179
  uses: actions/checkout@v4
180
180
 
181
181
  - name: Set up Python ${{ matrix.python-version }}
182
- uses: actions/setup-python@v5
182
+ uses: actions/setup-python@v6
183
183
  with:
184
184
  python-version: ${{ matrix.python-version }}
185
185
  allow-prereleases: ${{ matrix.allow-prereleases || false }}
@@ -204,7 +204,7 @@ jobs:
204
204
  uses: actions/checkout@v4
205
205
 
206
206
  - name: Set up Python
207
- uses: actions/setup-python@v5
207
+ uses: actions/setup-python@v6
208
208
  with:
209
209
  python-version: '3.11'
210
210
 
@@ -223,25 +223,6 @@ jobs:
223
223
  # A per-test timeout guards against any regression that hangs a test.
224
224
  python -m pytest ./weightslab/tests -v --timeout=300
225
225
 
226
- # TODO (GP): WL CI do not find WS CI for now; token or visibility problem ??
227
- # - name: Trigger WeightsStudio CI
228
- # env:
229
- # WS_TOKEN: ${{ secrets.WEIGHTS_STUDIO_API_TOKEN }}
230
- # run: |
231
- # if [ -z "${WS_TOKEN}" ]; then
232
- # echo "WEIGHTS_STUDIO_API_TOKEN not set; skipping WeightsStudio trigger."
233
- # exit 0
234
- # fi
235
-
236
- # # Trigger the ws-ci workflow in the weights_studio repository on main.
237
- # curl -fSs -X POST "https://api.github.com/repos/GrayboxTech/weights_studio/actions/workflows/ws-ci.yml/dispatches" \
238
- # -H "Authorization: Bearer ${WS_TOKEN}" \
239
- # -H "Accept: application/vnd.github+json" \
240
- # -H "Content-Type: application/json" \
241
- # -d '{"ref":"main"}'
242
-
243
- # echo "WeightsStudio workflow dispatch requested successfully."
244
-
245
226
  build-and-publish-dev:
246
227
  # Only publish to TestPyPI when pushing to main (not on PRs or dev branch pushes).
247
228
  if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
@@ -259,7 +240,7 @@ jobs:
259
240
  fetch-depth: 0
260
241
 
261
242
  - name: Set up Python
262
- uses: actions/setup-python@v5
243
+ uses: actions/setup-python@v6
263
244
  with:
264
245
  python-version: '3.11'
265
246
 
@@ -351,7 +332,7 @@ jobs:
351
332
  contents: read
352
333
  steps:
353
334
  - name: Set up Python ${{ matrix.python-version }}
354
- uses: actions/setup-python@v5
335
+ uses: actions/setup-python@v6
355
336
  with:
356
337
  python-version: ${{ matrix.python-version }}
357
338
  allow-prereleases: ${{ matrix.allow-prereleases || false }}
@@ -40,20 +40,25 @@ jobs:
40
40
  steps:
41
41
  - uses: actions/checkout@v4
42
42
 
43
- - uses: actions/setup-python@v5
43
+ - uses: actions/setup-python@v6
44
44
  with:
45
45
  python-version: '3.11'
46
46
 
47
47
  - name: Install dependencies
48
48
  run: |
49
49
  python -m pip install --upgrade pip
50
- python -m pip install . --extra-index-url https://download.pytorch.org/whl/cpu
50
+ # Install the test extra so pytest, graphviz, torchmetrics,
51
+ # pytorch-lightning and tensorboard are available (several test modules
52
+ # import pytest / use pytest fixtures and cannot run under bare unittest).
53
+ python -m pip install .[utest] --extra-index-url https://download.pytorch.org/whl/cpu
54
+ python -m pip install pytest-timeout
51
55
 
52
56
  - name: Run tests
53
57
  run: |
54
58
  export WEIGHTSLAB_LOG_LEVEL="DEBUG"
55
59
  python -m pip install pytorch_lightning
56
- python -m unittest discover -s ./weightslab/tests -p "test_*.py" -t . -v
60
+ # python -m unittest discover -s ./weightslab/tests -p "test_*.py" -t . -v
61
+ python -m pytest ./weightslab/tests -v --timeout=300
57
62
 
58
63
  # ═══════════════════════════════════════════════════════════════════════════
59
64
  # DEV RELEASE — tag on dev branch, not yet merged to main
@@ -74,7 +79,7 @@ jobs:
74
79
  with:
75
80
  fetch-depth: 0
76
81
 
77
- - uses: actions/setup-python@v5
82
+ - uses: actions/setup-python@v6
78
83
  with:
79
84
  python-version: '3.11'
80
85
 
@@ -108,7 +113,7 @@ jobs:
108
113
  python -m twine upload --repository-url https://test.pypi.org/legacy/ --verbose dist/*
109
114
 
110
115
  - name: Upload build artifacts for release
111
- uses: actions/upload-artifact@v4
116
+ uses: actions/upload-artifact@v6
112
117
  with:
113
118
  name: dev-release-dist
114
119
  path: dist/
@@ -133,7 +138,7 @@ jobs:
133
138
  permissions:
134
139
  contents: read
135
140
  steps:
136
- - uses: actions/setup-python@v5
141
+ - uses: actions/setup-python@v6
137
142
  with:
138
143
  python-version: ${{ matrix.python-version }}
139
144
  allow-prereleases: ${{ matrix.allow-prereleases || false }}
@@ -195,7 +200,7 @@ jobs:
195
200
  fetch-depth: 0
196
201
 
197
202
  - name: Download build artifacts
198
- uses: actions/download-artifact@v4
203
+ uses: actions/download-artifact@v7
199
204
  with:
200
205
  name: dev-release-dist
201
206
  path: dist/
@@ -226,7 +231,7 @@ jobs:
226
231
 
227
232
  export PRS_JSON
228
233
  PRS_JSON=$(gh pr list --state merged --base "dev" --limit 100 \
229
- --json number,title,mergedAt,url,author,body \
234
+ --json number,title,mergedAt,url,author,body,commits \
230
235
  2>/dev/null || echo "[]")
231
236
 
232
237
  python3 << 'PYEOF'
@@ -249,6 +254,29 @@ jobs:
249
254
  line += f"\n\n > {desc}"
250
255
  return line
251
256
  filtered = [pr for pr in prs_data if pr.get("mergedAt", "") > prev_date]
257
+ # "What's Changed precisely": list each merged PR's own developer commits,
258
+ # NOT the squashed/merge/chore commits that land on the release branch
259
+ # (those are redundant with the PR list above and not useful).
260
+ _seen_commits = set()
261
+ _commit_blocks = []
262
+ for pr in filtered:
263
+ _commit_lines = []
264
+ for c in (pr.get("commits") or []):
265
+ oid = (c.get("oid") or "")[:7]
266
+ head = (c.get("messageHeadline") or "").strip()
267
+ if not head or head.startswith("Merge "):
268
+ continue
269
+ key = (oid, head)
270
+ if key in _seen_commits:
271
+ continue
272
+ _seen_commits.add(key)
273
+ _commit_lines.append(f" - `{oid}` {head}")
274
+ if _commit_lines:
275
+ _commit_blocks.append(
276
+ f"**[#{pr['number']}]({pr['url']}) {pr['title']}**\n" + "\n".join(_commit_lines)
277
+ )
278
+ # Fall back to the raw git log only when no PR commits are available.
279
+ commits_section = "\n\n".join(_commit_blocks) if _commit_blocks else commits
252
280
  if filtered:
253
281
  prs_lines = "\n".join(_pr_entry(pr) for pr in filtered)
254
282
  seen, clabels = set(), []
@@ -276,7 +304,7 @@ jobs:
276
304
  "Happy Training!\n\n"
277
305
  "---\n\n"
278
306
  "### What's Changed precisely:\n\n"
279
- f"{commits}\n\n"
307
+ f"{commits_section}\n\n"
280
308
  "---\n\n"
281
309
  "### Thank you!\n\n"
282
310
  f"{contributors}\n"
@@ -303,7 +331,8 @@ jobs:
303
331
 
304
332
  build-and-publish-main:
305
333
  name: Build & Publish Main (PyPI)
306
- needs: [detect-target]
334
+ needs: [detect-target,test]
335
+ # needs: [detect-target]
307
336
  runs-on: ubuntu-latest
308
337
  if: ${{ needs.detect-target.outputs.is_main == 'true' }}
309
338
  permissions:
@@ -315,7 +344,7 @@ jobs:
315
344
  with:
316
345
  fetch-depth: 0
317
346
 
318
- - uses: actions/setup-python@v5
347
+ - uses: actions/setup-python@v6
319
348
  with:
320
349
  python-version: '3.11'
321
350
 
@@ -349,7 +378,7 @@ jobs:
349
378
  python -m twine upload dist/* --non-interactive --verbose
350
379
 
351
380
  - name: Upload build artifacts for release
352
- uses: actions/upload-artifact@v4
381
+ uses: actions/upload-artifact@v6
353
382
  with:
354
383
  name: main-release-dist
355
384
  path: dist/
@@ -367,7 +396,7 @@ jobs:
367
396
  permissions:
368
397
  contents: read
369
398
  steps:
370
- - uses: actions/setup-python@v5
399
+ - uses: actions/setup-python@v6
371
400
  with:
372
401
  python-version: ${{ matrix.python-version }}
373
402
 
@@ -427,7 +456,7 @@ jobs:
427
456
  fetch-depth: 0
428
457
 
429
458
  - name: Download build artifacts
430
- uses: actions/download-artifact@v4
459
+ uses: actions/download-artifact@v7
431
460
  with:
432
461
  name: main-release-dist
433
462
  path: dist/
@@ -458,7 +487,7 @@ jobs:
458
487
 
459
488
  export PRS_JSON
460
489
  PRS_JSON=$(gh pr list --state merged --base "main" --limit 100 \
461
- --json number,title,mergedAt,url,author,body \
490
+ --json number,title,mergedAt,url,author,body,commits \
462
491
  2>/dev/null || echo "[]")
463
492
 
464
493
  python3 << 'PYEOF'
@@ -481,6 +510,29 @@ jobs:
481
510
  line += f"\n\n > {desc}"
482
511
  return line
483
512
  filtered = [pr for pr in prs_data if pr.get("mergedAt", "") > prev_date]
513
+ # "What's Changed precisely": list each merged PR's own developer commits,
514
+ # NOT the squashed/merge/chore commits that land on the release branch
515
+ # (those are redundant with the PR list above and not useful).
516
+ _seen_commits = set()
517
+ _commit_blocks = []
518
+ for pr in filtered:
519
+ _commit_lines = []
520
+ for c in (pr.get("commits") or []):
521
+ oid = (c.get("oid") or "")[:7]
522
+ head = (c.get("messageHeadline") or "").strip()
523
+ if not head or head.startswith("Merge "):
524
+ continue
525
+ key = (oid, head)
526
+ if key in _seen_commits:
527
+ continue
528
+ _seen_commits.add(key)
529
+ _commit_lines.append(f" - `{oid}` {head}")
530
+ if _commit_lines:
531
+ _commit_blocks.append(
532
+ f"**[#{pr['number']}]({pr['url']}) {pr['title']}**\n" + "\n".join(_commit_lines)
533
+ )
534
+ # Fall back to the raw git log only when no PR commits are available.
535
+ commits_section = "\n\n".join(_commit_blocks) if _commit_blocks else commits
484
536
  if filtered:
485
537
  prs_lines = "\n".join(_pr_entry(pr) for pr in filtered)
486
538
  seen, clabels = set(), []
@@ -508,7 +560,7 @@ jobs:
508
560
  "Happy Training!\n\n"
509
561
  "---\n\n"
510
562
  "### What's Changed precisely:\n\n"
511
- f"{commits}\n\n"
563
+ f"{commits_section}\n\n"
512
564
  "---\n\n"
513
565
  "### Thank you!\n\n"
514
566
  f"{contributors}\n"
@@ -155,11 +155,18 @@ ones when debugging:
155
155
  | `WS_HISTOGRAM_MAX_BINS` | `512` | Cap on metadata histogram bars. |
156
156
  | `BB_THUMB_RENDER` | `10` | Max bounding boxes drawn per **thumbnail**, per overlay (GT and PRED capped independently). |
157
157
  | `BB_MODAL_RENDER` | `100` | Max bounding boxes drawn per **modal** image, per overlay. A `?` button in the modal shows the active limit. |
158
-
159
- > **VITE_ vs WS_/BB_:** `VITE_*` variables are baked at **build time** (changing
160
- > them needs a rebuild). `WS_*` / `BB_*` are injected at **container start** into
161
- > `config.js` and read as `window.*` globals changing them needs only a
162
- > container restart + browser reload (see the caching note in §5).
158
+ | `ENABLE_PLOTS` | `1` | `0`/`false` removes the plots board + Signals card and stops plot auto-refresh. |
159
+ | `ENABLE_DATA_EXPLORATION` | `1` | `0`/`false` removes the data grid + metadata/details panel and stops the data/metadata auto-refresh. |
160
+ | `ENABLE_HYPERPARAMETERS_OPTIMIZATION` | `1` | `0`/`false` removes the Hyperparameters section, makes HP inputs read-only, and stops the HP poll. |
161
+ | `ENABLE_AGENT` | `1` | `0`/`false` removes the agent chat bar + history panel and stops the agent health poll. |
162
+
163
+ > **VITE_ vs WS_/BB_/ENABLE_:** `VITE_*` variables are baked at **build time**
164
+ > (changing them needs a rebuild). `WS_*` / `BB_*` / `ENABLE_*` are injected at
165
+ > **container start** into `config.js` and read as `window.*` globals (the
166
+ > toggles as `window.WS_ENABLE_*`) — changing them needs only a container restart
167
+ > + browser reload (see the caching note in §5). Each `ENABLE_*` defaults to on;
168
+ > set it to `0`/`false`/`no`/`off` to disable. Full reference:
169
+ > `weightslab/docs/configuration.rst` (“Feature toggles”).
163
170
 
164
171
  ---
165
172
 
@@ -0,0 +1 @@
1
+ # Changelog - 2026-06-26 v1.3.0 (1)