hyperstudy-perception 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/PKG-INFO +1 -1
  2. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/pyproject.toml +1 -1
  3. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/RELEASE.json +1 -1
  4. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody-captions/node.py +4 -2
  5. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody-captions/style_captions.py +15 -3
  6. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody-captions/test_style_captions.py +9 -2
  7. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/backends/base.py +9 -3
  8. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/backends/native.py +6 -1
  9. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/plan.py +3 -1
  10. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/prepare_first.py +9 -3
  11. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/remote_driver.py +15 -5
  12. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/LICENSE +0 -0
  13. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/README.md +0 -0
  14. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/__init__.py +0 -0
  15. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/runpod/guard.sh +0 -0
  16. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/runpod/image/Dockerfile +0 -0
  17. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/runpod/image/start.sh +0 -0
  18. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/runpod/image/tag.py +0 -0
  19. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/gpu-faces.yaml +0 -0
  20. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/gpu-tune.yaml +0 -0
  21. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/guard.sh +0 -0
  22. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/iam-perception-node.json +0 -0
  23. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/launch.sh +0 -0
  24. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/node-gpu.yaml +0 -0
  25. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/node-setup.sh +0 -0
  26. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/sky.yaml +0 -0
  27. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/cloud/skypilot/smoke.yaml +0 -0
  28. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/api/pyproject.toml +0 -0
  29. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/api/uv.lock +0 -0
  30. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/asr-cuda/pyproject.toml +0 -0
  31. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/asr-cuda/uv.lock +0 -0
  32. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/audio/pyproject.toml +0 -0
  33. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/audio/uv.lock +0 -0
  34. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/audio-events/pyproject.toml +0 -0
  35. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/audio-events/uv.lock +0 -0
  36. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/core/pyproject.toml +0 -0
  37. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/core/uv.lock +0 -0
  38. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/faces/pyproject.toml +0 -0
  39. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/faces/uv.lock +0 -0
  40. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/gaze/pyproject.toml +0 -0
  41. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/gaze/uv.lock +0 -0
  42. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/prosody/pyproject.toml +0 -0
  43. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/prosody/uv.lock +0 -0
  44. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/vision/pyproject.toml +0 -0
  45. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/envs/vision/uv.lock +0 -0
  46. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/graphs/decode.yaml +0 -0
  47. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/graphs/faces.yaml +0 -0
  48. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/graphs/full.yaml +0 -0
  49. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/graphs/mvp-captions.yaml +0 -0
  50. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/graphs/mvp.yaml +0 -0
  51. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/manifest.yaml +0 -0
  52. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/nemo_model.py +0 -0
  53. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/nemo_tokens.py +0 -0
  54. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/node.py +0 -0
  55. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/node_nemo.py +0 -0
  56. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/prepare.py +0 -0
  57. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/raw_tokens.py +0 -0
  58. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/test_nemo_model.py +0 -0
  59. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/test_nemo_tokens.py +0 -0
  60. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/test_raw_tokens.py +0 -0
  61. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/test_wav.py +0 -0
  62. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/utterances.py +0 -0
  63. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/asr/wav.py +0 -0
  64. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/diarization_raw.py +0 -0
  65. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/diarizer.py +0 -0
  66. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/manifest.yaml +0 -0
  67. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/node.py +0 -0
  68. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/pcm16.py +0 -0
  69. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/prepare.py +0 -0
  70. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/test_diarization_raw.py +0 -0
  71. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/test_diarizer.py +0 -0
  72. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/test_pcm16.py +0 -0
  73. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/test_voices.py +0 -0
  74. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/diarize/voices.py +0 -0
  75. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/manifest.yaml +0 -0
  76. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/node.py +0 -0
  77. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/odyssey.py +0 -0
  78. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/praat.py +0 -0
  79. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/prepare.py +0 -0
  80. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/prosody_layer.py +0 -0
  81. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/prosody_measure.py +0 -0
  82. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/prosody_tracks.py +0 -0
  83. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/prosody_units.py +0 -0
  84. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/test_prosody_layer.py +0 -0
  85. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/test_prosody_measure.py +0 -0
  86. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/test_prosody_tracks.py +0 -0
  87. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/test_prosody_units.py +0 -0
  88. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/third_party/README.md +0 -0
  89. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/third_party/odyssey/LICENSE +0 -0
  90. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody/third_party/odyssey/ser_model.py +0 -0
  91. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody-captions/captions_raw.py +0 -0
  92. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/prosody-captions/manifest.yaml +0 -0
  93. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/audioset_labels.csv +0 -0
  94. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/LICENSE +0 -0
  95. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/UPSTREAM.md +0 -0
  96. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/__init__.py +0 -0
  97. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/mn/__init__.py +0 -0
  98. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/mn/attention_pooling.py +0 -0
  99. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/mn/block_types.py +0 -0
  100. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/mn/model.py +0 -0
  101. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/mn/utils.py +0 -0
  102. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/efficientat/preprocess.py +0 -0
  103. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/manifest.yaml +0 -0
  104. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/models.py +0 -0
  105. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/node.py +0 -0
  106. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/panns/LICENSE.MIT +0 -0
  107. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/panns/UPSTREAM.md +0 -0
  108. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/panns/__init__.py +0 -0
  109. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/panns/cnn14.py +0 -0
  110. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/panns/pytorch_utils.py +0 -0
  111. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/prepare.py +0 -0
  112. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/sound_events.py +0 -0
  113. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/sound_scores.py +0 -0
  114. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/soundtrack.py +0 -0
  115. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/test_sound_events.py +0 -0
  116. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/test_sound_scores.py +0 -0
  117. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/sounds/test_soundtrack.py +0 -0
  118. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/waveform/manifest.yaml +0 -0
  119. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/waveform/node.py +0 -0
  120. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/waveform/test_waveform_peaks.py +0 -0
  121. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/audio/waveform/waveform_peaks.py +0 -0
  122. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/conftest.py +0 -0
  123. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/core/decode/manifest.yaml +0 -0
  124. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/core/decode/media.py +0 -0
  125. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/core/decode/node.py +0 -0
  126. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/core/decode/shot_scores.py +0 -0
  127. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/core/decode/test_media.py +0 -0
  128. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/core/decode/test_shot_scores.py +0 -0
  129. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/testdata/README.md +0 -0
  130. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/testdata/rotated-90.mp4 +0 -0
  131. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/asd_crops.py +0 -0
  132. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/asd_raw.py +0 -0
  133. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/manifest.yaml +0 -0
  134. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/models.py +0 -0
  135. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/node.py +0 -0
  136. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/prepare.py +0 -0
  137. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/speaker_links.py +0 -0
  138. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/test_asd_crops.py +0 -0
  139. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/test_asd_raw.py +0 -0
  140. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/test_speaker_links.py +0 -0
  141. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/third_party/README.md +0 -0
  142. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/third_party/lr_asd/LICENSE +0 -0
  143. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/third_party/lr_asd/loss.py +0 -0
  144. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/third_party/lr_asd/model/Classifier.py +0 -0
  145. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/third_party/lr_asd/model/Encoder.py +0 -0
  146. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/third_party/lr_asd/model/Model.py +0 -0
  147. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/active-speaker/video25.py +0 -0
  148. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/bodies.py +0 -0
  149. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/detections.py +0 -0
  150. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/keypoints.json +0 -0
  151. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/manifest.yaml +0 -0
  152. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/models.py +0 -0
  153. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/node.py +0 -0
  154. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/prepare.py +0 -0
  155. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/test_bodies.py +0 -0
  156. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/body-pose/test_detections.py +0 -0
  157. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/face_detail.py +0 -0
  158. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/frames.py +0 -0
  159. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/loader.py +0 -0
  160. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/manifest.yaml +0 -0
  161. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/node.py +0 -0
  162. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/prepare.py +0 -0
  163. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/pyfeat_raw.py +0 -0
  164. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/test_face_detail.py +0 -0
  165. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/test_frames.py +0 -0
  166. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/test_loader.py +0 -0
  167. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/test_pyfeat_raw.py +0 -0
  168. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/test_thumbnails.py +0 -0
  169. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/thumbnails.py +0 -0
  170. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/face-track/tracking.py +0 -0
  171. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/facing.py +0 -0
  172. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/facing_raw.py +0 -0
  173. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/manifest.yaml +0 -0
  174. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/models.py +0 -0
  175. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/node.py +0 -0
  176. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/prepare.py +0 -0
  177. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/test_facing.py +0 -0
  178. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/facing/test_facing_raw.py +0 -0
  179. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/gaze_polygons.py +0 -0
  180. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/gaze_targets.py +0 -0
  181. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/heatmaps.py +0 -0
  182. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/manifest.yaml +0 -0
  183. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/models.py +0 -0
  184. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/node.py +0 -0
  185. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/prepare.py +0 -0
  186. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/test_gaze_polygons.py +0 -0
  187. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/test_gaze_targets.py +0 -0
  188. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/test_heatmaps.py +0 -0
  189. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/README.md +0 -0
  190. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/LICENSE +0 -0
  191. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/__init__.py +0 -0
  192. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/__init__.py +0 -0
  193. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/attention.py +0 -0
  194. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/block.py +0 -0
  195. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/dino_head.py +0 -0
  196. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/drop_path.py +0 -0
  197. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/layer_scale.py +0 -0
  198. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/mlp.py +0 -0
  199. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/patch_embed.py +0 -0
  200. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/layers/swiglu_ffn.py +0 -0
  201. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/models/__init__.py +0 -0
  202. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/dinov2/dinov2/models/vision_transformer.py +0 -0
  203. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/gazelle/LICENSE +0 -0
  204. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/gazelle/gazelle/backbone.py +0 -0
  205. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/gazelle/gazelle/model.py +0 -0
  206. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gaze/third_party/gazelle/gazelle/utils.py +0 -0
  207. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gestures/gesture_evidence.py +0 -0
  208. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gestures/gesture_inputs.py +0 -0
  209. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gestures/gesture_rules.py +0 -0
  210. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gestures/manifest.yaml +0 -0
  211. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gestures/node.py +0 -0
  212. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gestures/test_gesture_evidence.py +0 -0
  213. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/gestures/test_gesture_rules.py +0 -0
  214. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/hand_detections.py +0 -0
  215. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/hand_tracks.py +0 -0
  216. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/manifest.yaml +0 -0
  217. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/models.py +0 -0
  218. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/node.py +0 -0
  219. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/prepare.py +0 -0
  220. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/scipy_lsap/LICENSE +0 -0
  221. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/scipy_lsap/UPSTREAM.md +0 -0
  222. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/scipy_lsap/__init__.py +0 -0
  223. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/scipy_lsap/rectangular_lsap.py +0 -0
  224. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/test_hand_detections.py +0 -0
  225. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/test_hand_tracks.py +0 -0
  226. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/test_node.py +0 -0
  227. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/hands/test_rectangular_lsap.py +0 -0
  228. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/budget.py +0 -0
  229. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/garments.py +0 -0
  230. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/geometry.py +0 -0
  231. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/haiku.py +0 -0
  232. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/link.py +0 -0
  233. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/linking.py +0 -0
  234. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/models.py +0 -0
  235. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/names.py +0 -0
  236. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/object_raw.py +0 -0
  237. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/object_tracks.py +0 -0
  238. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/person_masks.py +0 -0
  239. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/prepare.py +0 -0
  240. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/shot_frames.py +0 -0
  241. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_garments.py +0 -0
  242. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_models_hub.py +0 -0
  243. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_object_budget.py +0 -0
  244. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_object_links.py +0 -0
  245. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_object_raw.py +0 -0
  246. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_person_masks.py +0 -0
  247. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_shot_frames.py +0 -0
  248. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/test_split.py +0 -0
  249. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/testdata/node_1_1_0.py +0 -0
  250. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/track.py +0 -0
  251. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects/vocabulary.py +0 -0
  252. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects-link/manifest.yaml +0 -0
  253. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects-names/manifest.yaml +0 -0
  254. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vision/objects-track/manifest.yaml +0 -0
  255. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vlm/shot-captions/manifest.yaml +0 -0
  256. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/nodes/vlm/shot-captions/node.py +0 -0
  257. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/schema/README.md +0 -0
  258. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/schema/bundle-0.1.schema.json +0 -0
  259. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/sdk/pyproject.toml +0 -0
  260. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/sdk/src/perception_node/__init__.py +0 -0
  261. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/_pipeline/sdk/src/perception_node/weights.py +0 -0
  262. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/artifacts.py +0 -0
  263. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/backends/__init__.py +0 -0
  264. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/backends/cloud.py +0 -0
  265. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/backends/probe.py +0 -0
  266. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/backends/remote.py +0 -0
  267. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/cli.py +0 -0
  268. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/estimates.py +0 -0
  269. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/export.py +0 -0
  270. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/hosts.py +0 -0
  271. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/ir.py +0 -0
  272. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/keycheck.py +0 -0
  273. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/keys.py +0 -0
  274. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/manifests.py +0 -0
  275. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/release.py +0 -0
  276. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/remote_coordinator.py +0 -0
  277. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/remote_run.py +0 -0
  278. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/runpod.py +0 -0
  279. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/scheduler.py +0 -0
  280. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/setup.py +0 -0
  281. {hyperstudy_perception-0.1.2 → hyperstudy_perception-0.1.3}/src/perception/store.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: hyperstudy-perception
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Video perception pipeline: shots, speech, faces and captions from a video, as a versioned track bundle, run locally, on cloud GPUs or lab servers
5
5
  Project-URL: Homepage, https://github.com/hyperstudyio/hyperstudy-perception
6
6
  Project-URL: Changelog, https://github.com/hyperstudyio/hyperstudy-perception/releases
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "hyperstudy-perception"
3
- version = "0.1.2"
3
+ version = "0.1.3"
4
4
  description = "Video perception pipeline: shots, speech, faces and captions from a video, as a versioned track bundle, run locally, on cloud GPUs or lab servers"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,5 +1,5 @@
1
1
  {
2
- "commit": "6301eca468f046c39fbf4a84f05e106ce6b12688",
2
+ "commit": "ba5bb86926a9a7218d908ad5f7dc0371cf87a0c3",
3
3
  "files": [
4
4
  "cloud/runpod/guard.sh",
5
5
  "cloud/runpod/image/Dockerfile",
@@ -99,7 +99,7 @@ with Node() as node:
99
99
  parsed = sc.parse_caption(arguments)
100
100
  except ValueError as e:
101
101
  raise NodeError("internal", f"{u['id']}: {e}") from None
102
- return {"parsed": parsed, "usage": usage, "prompt": text,
102
+ return {"parsed": parsed, "usage": usage, "prompt": text, "outside": sc.outside_tags(arguments),
103
103
  "raw": {"model": r.model, "finish_reason": choice.finish_reason, "arguments": arguments,
104
104
  "usage": r.usage.model_dump(mode="json")}}
105
105
 
@@ -141,6 +141,8 @@ with Node() as node:
141
141
  node.write_json("prosody", "prosody.json", sc.refine(
142
142
  prosody, entries, node.producer(timings={"caption_s": caption_s, "tagger_s": tagger_s}, device="OpenAI API"),
143
143
  {"file": captions_raw.FILE, "format": "parquet", "description": captions_raw.DESCRIPTION}))
144
- node.usage(utterances=len(units), workers=sc.WORKERS,
144
+ # tags the audio model gave outside the list, dropped from their captions: utterance -> tags
145
+ outside = {u["id"]: c["outside"] for u, c in zip(units, captions) if c["outside"]}
146
+ node.usage(utterances=len(units), workers=sc.WORKERS, tags_outside_list=outside,
145
147
  usd_by_model={sc.GPT_MODEL: round(sum(c["usage"]["usd"] for c in captions), 4),
146
148
  sc.TAGGER: round(sum(t["usage"]["usd"] for t in tagged), 4)})
@@ -137,13 +137,25 @@ def cost(model: str, prompt_tokens: int, audio_tokens: int | None, completion_to
137
137
 
138
138
 
139
139
  def parse_caption(arguments: str) -> dict:
140
- """The function call's arguments -> {description, tags, emphasized_words}; ValueError when they are not that."""
140
+ """The function call's arguments -> {description, tags, emphasized_words}; ValueError when they are not that. Its tags
141
+ are those of the list only: gpt-audio-1.5 does not hold a function call to the schema's enum (strict or not), so a tag
142
+ outside it is dropped here (outside_tags says which; the side file keeps the reply as it came)."""
141
143
  import json
142
144
  out = json.loads(arguments)
143
145
  if not (isinstance(out, dict) and set(out) == {"description", "tags", "emphasized_words"}):
144
146
  raise ValueError(f"the caption is not {{description, tags, emphasized_words}}: {sorted(out) if isinstance(out, dict) else type(out).__name__}")
145
- check_tags(out["tags"])
146
- return out
147
+ if not isinstance(out["tags"], list):
148
+ check_tags(out["tags"]) # not a list: said as such
149
+ if not all(isinstance(t, str) for t in out["tags"]):
150
+ raise ValueError(f"the caption's tags are not strings: {[t for t in out['tags'] if not isinstance(t, str)][:5]}")
151
+ return {**out, "tags": [t for t in out["tags"] if t in ALL_TAGS]}
152
+
153
+
154
+ def outside_tags(arguments: str) -> list[str]:
155
+ """The tags a caption's reply gave that are not in the list (dropped by parse_caption)."""
156
+ import json
157
+ tags = json.loads(arguments).get("tags")
158
+ return [t for t in tags if t not in ALL_TAGS] if isinstance(tags, list) else []
147
159
 
148
160
 
149
161
  def parse_tags(content: str) -> list[str]:
@@ -68,8 +68,15 @@ def test_cost_is_the_bakeoffs_at_its_prices():
68
68
  def test_replies_must_be_the_schemas_with_tags_from_the_list():
69
69
  ok = {"description": "Calm.", "tags": ["calm", "falling-end"], "emphasized_words": []}
70
70
  assert sc.parse_caption(json.dumps(ok)) == ok
71
- with pytest.raises(ValueError, match="outside the vocabulary"):
72
- sc.parse_caption(json.dumps({**ok, "tags": ["calm", "grumpy"]}))
71
+ # gpt-audio-1.5 does not hold its function call to the schema's tag list (strict or not: "friendly" on an OOO
72
+ # held-out clip, 2026-10-30): a tag outside it is dropped from that caption and said, not the step's failure
73
+ assert sc.parse_caption(json.dumps({**ok, "tags": ["calm", "grumpy", "falling-end"]})) == ok
74
+ assert sc.outside_tags(json.dumps({**ok, "tags": ["calm", "grumpy", "falling-end"]})) == ["grumpy"]
75
+ assert sc.outside_tags(json.dumps(ok)) == []
76
+ with pytest.raises(ValueError, match="not strings"): # not a tag at all: the reply is not the schema's
77
+ sc.parse_caption(json.dumps({**ok, "tags": ["calm", 3, None]}))
78
+ with pytest.raises(ValueError, match="outside the vocabulary"): # the tagger's json_schema holds it to the list
79
+ sc.parse_tags('{"tags": ["neutral", "grumpy"]}')
73
80
  with pytest.raises(ValueError, match="not {description, tags, emphasized_words}"):
74
81
  sc.parse_caption(json.dumps({"description": "x"}))
75
82
  assert sc.parse_tags('{"tags": ["neutral"]}') == ["neutral"]
@@ -330,9 +330,15 @@ def child_env(requested: list[str], secrets: dict[str, str]) -> dict[str, str]:
330
330
  # once, not a download it has no token for. Nor does it load a token stored on the machine (`hf auth login`'s, or
331
331
  # HF_TOKEN_PATH's), which huggingface_hub otherwise does even offline
332
332
  OFFLINE = {"HF_HUB_OFFLINE": "1", "HF_HUB_DISABLE_IMPLICIT_TOKEN": "1"}
333
- # a prepare on another machine: the token it was sent, or none, never the machine's own login (its HF_TOKEN in a
334
- # profile, its stored token): access to a gated model is a person's. A prepare that prepare_first runs has it from OFFLINE
335
- SENT_TOKEN_ONLY = {"HF_HUB_DISABLE_IMPLICIT_TOKEN": "1"}
333
+ # A prepare is online, with the token it was sent as HF_TOKEN: access to a gated model is a person's. It runs without
334
+ # HF_HUB_DISABLE_IMPLICIT_TOKEN (PREPARE_UNSET), and only when it was sent one: transformers 5.20 fetches a model's
335
+ # config without the token it is given when implicit tokens are off (SAM 3's prepare got a 401 on liquidswords2,
336
+ # 2026-10-30). The implicit token must then be the one it was sent: huggingface_hub (2.3) takes an OIDC identity first
337
+ # (OIDC_LOGINS, unset), then HF_TOKEN (which replaces any other), then a stored token (its path NO_STORED_TOKEN)
338
+ PREPARE_UNSET = ("HF_HUB_OFFLINE", "HF_HUB_DISABLE_IMPLICIT_TOKEN")
339
+ OIDC_LOGINS = ("HF_OIDC_RESOURCE", "HF_OIDC_ID_TOKEN")
340
+ # where a prepare looks for a stored token: a path that cannot exist (below /dev/null)
341
+ NO_STORED_TOKEN = "/dev/null/no-stored-token"
336
342
 
337
343
 
338
344
  def hf_cache_env(home: str) -> dict[str, str]:
@@ -20,7 +20,7 @@ from pathlib import Path
20
20
 
21
21
  from ..manifests import Manifest, Runner
22
22
  from ..store import Artifact
23
- from .base import GPU_LEASES, LEASE_FOLDER, OFFLINE, Backend, Capabilities, LeaseRefused, gpu_env, holder, lease_command
23
+ from .base import GPU_LEASES, LEASE_FOLDER, OFFLINE, Backend, Capabilities, LeaseRefused, SubmitRefused, gpu_env, holder, lease_command
24
24
  from .probe import probe
25
25
 
26
26
  from ..release import REPO, env_vars
@@ -88,6 +88,11 @@ class NativeBackend(Backend):
88
88
  command = [*lease_command(str(self.lease_folder()), gpu, manifest.resources.gpu,
89
89
  holder(json.loads(request.read_text()))), *command]
90
90
  if prepare_secrets is not None and manifest.download_secrets and self.downloads(manifest, runner):
91
+ if missing := [k for k in manifest.download_secrets if not (prepare_secrets.get(k) or "").strip()]:
92
+ # refused, not prepared with whatever login this machine has: the plan says so first (missing_secrets),
93
+ # but a resumed run is not planned again (as a host's submit, remote.py)
94
+ raise SubmitRefused("input", f"its weights are downloaded with {', '.join(missing)}, which is not set here "
95
+ f"(perception keys set {missing[0]})")
91
96
  # its prepare first, with them, then the node (with its lease: no card is held while weights download)
92
97
  # without them (prepare_first.py)
93
98
  from .. import prepare_first
@@ -238,7 +238,9 @@ def plan(coord: Coordinator, graph: Graph, allow_downloads: bool = False, allow_
238
238
  np.estimates[p.label] = {"estimate_s": seconds, "estimate_basis": basis,
239
239
  "cost_usd": p.backend.estimate(m, p.runner, {}, video_s).cost_usd, "uploads": sent, "upload_to": to}
240
240
  # a download secret is needed only for a download: weights already in the cache are read without it
241
- np.missing_secrets = [s for s in (*m.secrets, *(m.download_secrets if np.downloads else ())) if s not in coord.secrets]
241
+ # an empty value is no key: it is never given to a step (download_for, child_env)
242
+ np.missing_secrets = [s for s in (*m.secrets, *(m.download_secrets if np.downloads else ()))
243
+ if not (coord.secrets.get(s) or "").strip()]
242
244
  if placement and not np.cached:
243
245
  chosen = np.estimates[placement.label]
244
246
  np.estimate_s, np.estimate_basis = chosen["estimate_s"], chosen["estimate_basis"]
@@ -49,8 +49,14 @@ def main(argv: list[str]) -> int:
49
49
  secrets = [s for s in opts["--secrets"].split(",") if s]
50
50
  offline = json.loads(opts["--offline"])
51
51
  request = Path(node[-1])
52
- # online, for the download, and with the token it was sent alone (SENT_TOKEN_ONLY stays)
53
- env = {k: v for k, v in os.environ.items() if k != "HF_HUB_OFFLINE"}
52
+ # online, for the download, with the token it was sent as HF_TOKEN, and implicit tokens on only then: transformers
53
+ # fetches a model's config without the token it is given when they are off. Its implicit token is then that one: no
54
+ # OIDC identity (which huggingface_hub takes first) and no stored token (its path where there is none). As
55
+ # base.PREPARE_UNSET, OIDC_LOGINS and NO_STORED_TOKEN, which this script cannot import
56
+ env = {k: v for k, v in os.environ.items() if k not in ("HF_HUB_OFFLINE", "HF_OIDC_RESOURCE", "HF_OIDC_ID_TOKEN")}
57
+ implicit = bool((env.get("HF_TOKEN") or "").strip())
58
+ prepare_env = {**{k: v for k, v in env.items() if not (implicit and k == "HF_HUB_DISABLE_IMPLICIT_TOKEN")},
59
+ "HF_TOKEN_PATH": "/dev/null/no-stored-token", **({} if implicit else {"HF_HUB_DISABLE_IMPLICIT_TOKEN": "1"})}
54
60
  if "--sync" in opts:
55
61
  print("syncing the node's environment", flush=True)
56
62
  done = subprocess.run(json.loads(opts["--sync"]), env={k: v for k, v in env.items() if k not in secrets},
@@ -58,7 +64,7 @@ def main(argv: list[str]) -> int:
58
64
  if done.returncode:
59
65
  return fail(request, f"syncing the node's environment failed (exit {done.returncode}): see the end of the log")
60
66
  print("preparing the node (its weights, into the cache it reads)", flush=True)
61
- done = subprocess.run(json.loads(opts["--prepare"]), env=env, stdin=subprocess.DEVNULL) # its output: the log
67
+ done = subprocess.run(json.loads(opts["--prepare"]), env=prepare_env, stdin=subprocess.DEVNULL) # its output: the log
62
68
  if done.returncode:
63
69
  return fail(request, f"preparing the node failed (exit {done.returncode}): see the end of the log")
64
70
  for mark in json.loads(opts.get("--marks", "[]")):
@@ -496,17 +496,27 @@ class Driver:
496
496
  from this code's own folder, and only the card the scheduler gave it (CUDA_VISIBLE_DEVICES). A node with download
497
497
  secrets reads its account's cache there (hf_home), offline and without them, as does its prepare without the ones
498
498
  it was not sent: the host's own (a login's HF_TOKEN in .bashrc, which bash reads under sshd) are never used."""
499
- from .backends.base import OFFLINE, SENT_TOKEN_ONLY, gpu_env, hf_cache_env
499
+ from .backends.base import NO_STORED_TOKEN, OFFLINE, OIDC_LOGINS, PREPARE_UNSET, gpu_env, hf_cache_env
500
500
  from .backends.remote import SDK_SOURCE
501
501
  q, s = shlex.quote, self.spec
502
502
  env = gpu_env(s.get("gpu"))
503
503
  if s.get("hf_home"):
504
504
  env.update(hf_cache_env(s["hf_home"]))
505
505
  unset = [k for k in s.get("download_secrets") or [] if not (prepare and k in self.download)]
506
- if s.get("download_secrets"):
507
- # the node offline; its prepare online, whatever the host's own profile says, with the token it was sent
508
- env.update(SENT_TOKEN_ONLY if prepare else OFFLINE)
509
- unset += ["HF_HUB_OFFLINE"] if prepare else []
506
+ if s.get("download_secrets") and not prepare:
507
+ env.update(OFFLINE) # the node offline, with no token: none sent, and not the host's own login either
508
+ unset += ["HUGGING_FACE_HUB_TOKEN", *OIDC_LOGINS]
509
+ elif s.get("download_secrets") and "HF_TOKEN" in self.download:
510
+ # its prepare online, whatever the host's own profile says, with implicit tokens on (PREPARE_UNSET): the
511
+ # token huggingface_hub takes is the HF_TOKEN it was sent (an assignment that replaces the host's), and no
512
+ # other login is in reach: the host's OIDC identity (which huggingface_hub would take first) and
513
+ # HUGGING_FACE_HUB_TOKEN unset, and its stored token's path (HF_TOKEN_PATH) one where there is none
514
+ unset += [*PREPARE_UNSET, "HUGGING_FACE_HUB_TOKEN", *OIDC_LOGINS]
515
+ env["HF_TOKEN_PATH"] = NO_STORED_TOKEN
516
+ elif s.get("download_secrets"):
517
+ # sent no HF_TOKEN: online, with implicit tokens off, so none of the host's is used
518
+ unset += ["HF_HUB_OFFLINE", *OIDC_LOGINS]
519
+ env["HF_HUB_DISABLE_IMPLICIT_TOKEN"] = "1"
510
520
  if s["runner_kind"] == "self":
511
521
  python = q(s["python"])
512
522
  else: