reactor-runtime 3.2.3__tar.gz → 3.2.4__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 (98) hide show
  1. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/PKG-INFO +7 -7
  2. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/README.md +6 -6
  3. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/pyproject.toml +1 -1
  4. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/pyproject.toml.orig +1 -1
  5. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/manifest.py +16 -10
  6. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/LICENSE +0 -0
  7. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/NOTICE +0 -0
  8. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/__init__.py +0 -0
  9. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/codes.py +0 -0
  10. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/__init__.py +0 -0
  11. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/fields.py +0 -0
  12. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/model.py +0 -0
  13. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/naming.py +0 -0
  14. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/service.py +0 -0
  15. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/session.py +0 -0
  16. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/transport.py +0 -0
  17. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/typespec.py +0 -0
  18. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/core/values.py +0 -0
  19. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/event_stream.py +0 -0
  20. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/http/__init__.py +0 -0
  21. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/http/events.py +0 -0
  22. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/http/routes.py +0 -0
  23. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/http/server.py +0 -0
  24. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/http/spec.py +0 -0
  25. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/__init__.py +0 -0
  26. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/client.py +0 -0
  27. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/events/__init__.py +0 -0
  28. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/events/decorators.py +0 -0
  29. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/events/errors.py +0 -0
  30. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/events/messages.py +0 -0
  31. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/internal/__init__.py +0 -0
  32. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/internal/bridge.py +0 -0
  33. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/internal/input_buffer.py +0 -0
  34. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/internal/reactor_core.py +0 -0
  35. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/model/__init__.py +0 -0
  36. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/model/contract.py +0 -0
  37. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/model/reactor_model.py +0 -0
  38. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/model/schema.py +0 -0
  39. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/pipeline/__init__.py +0 -0
  40. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/pipeline/idle.py +0 -0
  41. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/pipeline/input_state.py +0 -0
  42. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/pipeline/reactor_pipeline.py +0 -0
  43. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/tracks/__init__.py +0 -0
  44. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/tracks/descriptors.py +0 -0
  45. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/tracks/input.py +0 -0
  46. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/interface/tracks/output.py +0 -0
  47. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/log.py +0 -0
  48. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/message_gateway.py +0 -0
  49. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/metrics.py +0 -0
  50. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/paths.py +0 -0
  51. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/protocol/__init__.py +0 -0
  52. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/protocol/base.py +0 -0
  53. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/protocol/common.py +0 -0
  54. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/protocol/v0/__init__.py +0 -0
  55. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/protocol/v0/codec.py +0 -0
  56. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/protocol/v1/__init__.py +0 -0
  57. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/protocol/v1/codec.py +0 -0
  58. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/py.typed +0 -0
  59. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/recording/__init__.py +0 -0
  60. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/recording/chunk_encoder.py +0 -0
  61. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/recording/markers.py +0 -0
  62. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/recording/recorder.py +0 -0
  63. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/runner/__init__.py +0 -0
  64. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/runner/connection_manager.py +0 -0
  65. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/runner/offer_epochs.py +0 -0
  66. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/runner/runner.py +0 -0
  67. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/runner/state_machine.py +0 -0
  68. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/schema.py +0 -0
  69. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/serve.py +0 -0
  70. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/service.py +0 -0
  71. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/__init__.py +0 -0
  72. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/acceptor.py +0 -0
  73. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/router.py +0 -0
  74. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/__init__.py +0 -0
  75. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/acceptor.py +0 -0
  76. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/config.py +0 -0
  77. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/connection.py +0 -0
  78. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/frames.py +0 -0
  79. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/pacer.py +0 -0
  80. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/peer.py +0 -0
  81. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/router.py +0 -0
  82. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/sdp.py +0 -0
  83. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/signaling.py +0 -0
  84. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/stats.py +0 -0
  85. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/transport/webrtc/version.py +0 -0
  86. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_runtime/upload_store.py +0 -0
  87. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/common_pb2.py +0 -0
  88. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/common_pb2.pyi +0 -0
  89. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/control_pb2.py +0 -0
  90. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/control_pb2.pyi +0 -0
  91. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/data_pb2.py +0 -0
  92. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/data_pb2.pyi +0 -0
  93. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/model_pb2.py +0 -0
  94. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/model_pb2.pyi +0 -0
  95. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/platform_pb2.py +0 -0
  96. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/platform_pb2.pyi +0 -0
  97. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/track_pb2.py +0 -0
  98. {reactor_runtime-3.2.3 → reactor_runtime-3.2.4}/src/reactor_wire/v1/track_pb2.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reactor-runtime
3
- Version: 3.2.3
3
+ Version: 3.2.4
4
4
  Summary: A Python framework for building real-time, interactive video models
5
5
  Author: Reactor
6
6
  Author-email: Reactor <team@reactor.inc>
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
30
30
 
31
31
  **Build real-time AI models in Python.**
32
32
 
33
- [📖 Documentation](https://deploy-docs.reactor.inc) · [🚀 Quickstart](https://deploy-docs.reactor.inc/development/quickstart) · [🌐 Reactor](https://reactor.inc)
33
+ [📖 Documentation](https://docs.reactor.inc/deploy/overview) · [🚀 Quickstart](https://docs.reactor.inc/deploy/development/overview) · [🌐 Reactor](https://reactor.inc)
34
34
 
35
35
  </div>
36
36
 
@@ -95,19 +95,19 @@ reactor run
95
95
 
96
96
  ## Install
97
97
 
98
- Everything runs through the [`reactor` CLI](https://deploy-docs.reactor.inc/platform/installation). There is nothing to install on your host but the CLI and Docker; the runtime ships inside the image the CLI builds for your workspace.
98
+ Everything runs through the [`reactor` CLI](https://docs.reactor.inc/deploy/platform/installation). There is nothing to install on your host but the CLI and Docker; the runtime ships inside the image the CLI builds for your workspace.
99
99
 
100
100
  ```sh
101
101
  brew install reactor-team/tools/reactor-cli
102
102
  ```
103
103
 
104
- Not on macOS, or pinning a release in CI? See [Install the CLI](https://deploy-docs.reactor.inc/platform/installation).
104
+ Not on macOS, or pinning a release in CI? See [Install the CLI](https://docs.reactor.inc/deploy/platform/installation).
105
105
 
106
106
  ## Learn more
107
107
 
108
- - [Quickstart](https://deploy-docs.reactor.inc/development/quickstart): from zero to a streaming model in 2 minutes
109
- - [Model anatomy](https://deploy-docs.reactor.inc/development/reactor-model/model-anatomy): every piece of a Reactor model, line by line
110
- - [The run loop](https://deploy-docs.reactor.inc/development/reactor-model/run-loop): emitting frames, batches, and frame rates
108
+ - [Quickstart](https://docs.reactor.inc/deploy/development/overview): from zero to a streaming model in 2 minutes
109
+ - [Model anatomy](https://docs.reactor.inc/deploy/development/reactor-model/model-anatomy): every piece of a Reactor model, line by line
110
+ - [The run loop](https://docs.reactor.inc/deploy/development/reactor-model/run-loop): emitting frames, batches, and frame rates
111
111
 
112
112
  ## Development
113
113
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Build real-time AI models in Python.**
6
6
 
7
- [📖 Documentation](https://deploy-docs.reactor.inc) · [🚀 Quickstart](https://deploy-docs.reactor.inc/development/quickstart) · [🌐 Reactor](https://reactor.inc)
7
+ [📖 Documentation](https://docs.reactor.inc/deploy/overview) · [🚀 Quickstart](https://docs.reactor.inc/deploy/development/overview) · [🌐 Reactor](https://reactor.inc)
8
8
 
9
9
  </div>
10
10
 
@@ -69,19 +69,19 @@ reactor run
69
69
 
70
70
  ## Install
71
71
 
72
- Everything runs through the [`reactor` CLI](https://deploy-docs.reactor.inc/platform/installation). There is nothing to install on your host but the CLI and Docker; the runtime ships inside the image the CLI builds for your workspace.
72
+ Everything runs through the [`reactor` CLI](https://docs.reactor.inc/deploy/platform/installation). There is nothing to install on your host but the CLI and Docker; the runtime ships inside the image the CLI builds for your workspace.
73
73
 
74
74
  ```sh
75
75
  brew install reactor-team/tools/reactor-cli
76
76
  ```
77
77
 
78
- Not on macOS, or pinning a release in CI? See [Install the CLI](https://deploy-docs.reactor.inc/platform/installation).
78
+ Not on macOS, or pinning a release in CI? See [Install the CLI](https://docs.reactor.inc/deploy/platform/installation).
79
79
 
80
80
  ## Learn more
81
81
 
82
- - [Quickstart](https://deploy-docs.reactor.inc/development/quickstart): from zero to a streaming model in 2 minutes
83
- - [Model anatomy](https://deploy-docs.reactor.inc/development/reactor-model/model-anatomy): every piece of a Reactor model, line by line
84
- - [The run loop](https://deploy-docs.reactor.inc/development/reactor-model/run-loop): emitting frames, batches, and frame rates
82
+ - [Quickstart](https://docs.reactor.inc/deploy/development/overview): from zero to a streaming model in 2 minutes
83
+ - [Model anatomy](https://docs.reactor.inc/deploy/development/reactor-model/model-anatomy): every piece of a Reactor model, line by line
84
+ - [The run loop](https://docs.reactor.inc/deploy/development/reactor-model/run-loop): emitting frames, batches, and frame rates
85
85
 
86
86
  ## Development
87
87
 
@@ -92,7 +92,7 @@ pythonpath = ["."]
92
92
 
93
93
  [project]
94
94
  name = "reactor-runtime"
95
- version = "3.2.3"
95
+ version = "3.2.4"
96
96
  description = "A Python framework for building real-time, interactive video models"
97
97
  readme = "README.md"
98
98
  license = "Apache-2.0"
@@ -20,7 +20,7 @@ version = "1.20260814.7"
20
20
 
21
21
  [project]
22
22
  name = "reactor-runtime"
23
- version = "3.2.3"
23
+ version = "3.2.4"
24
24
  description = "A Python framework for building real-time, interactive video models"
25
25
  readme = "README.md"
26
26
  license = "Apache-2.0"
@@ -2,8 +2,8 @@
2
2
 
3
3
  The ``reactor.yaml`` manifest is the runtime's one configuration file:
4
4
  ``runtime.import`` names the model as a ``"module:Class"`` reference,
5
- ``runtime.config`` points at the model's own config file, and the top-level
6
- ``recording:`` block configures the recorder. This module turns that file into
5
+ ``runtime.config`` points at the model's own config file, and the
6
+ ``runtime.recording`` block configures the recorder. This module turns that file into
7
7
  a :class:`~reactor_runtime.core.RuntimeConfig` and the reference into the model
8
8
  class — and it is the only code that does either, so every entry point resolves
9
9
  the same model from the same directory.
@@ -32,8 +32,8 @@ def load_config(manifest: Path) -> RuntimeConfig:
32
32
 
33
33
  ``runtime.import`` — the ``"module:Class"`` model reference — and
34
34
  ``runtime.config`` — the path to the model's own config file — name the
35
- model, ``model.name`` is the name it is published under, and the top-level
36
- ``recording:`` block configures the recorder; the rest of the manifest
35
+ model, ``model.name`` is the name it is published under, and the
36
+ ``runtime.recording`` block configures the recorder; the rest of the manifest
37
37
  describes the model to the platform and is not the runtime's concern. The
38
38
  config path is passed to the model verbatim (resolved to an absolute path);
39
39
  the runtime never parses its contents.
@@ -65,7 +65,7 @@ def load_config(manifest: Path) -> RuntimeConfig:
65
65
  model_ref=model_ref,
66
66
  model_name=_model_name(document.get("model")),
67
67
  config_path=_resolve_config_path(runtime, manifest),
68
- recording=_recording_from_manifest(document.get("recording")),
68
+ recording=_recording_from_manifest(runtime, document),
69
69
  )
70
70
 
71
71
 
@@ -110,19 +110,25 @@ def import_model_class(model_ref: str) -> type[ReactorCore]:
110
110
  return model_cls
111
111
 
112
112
 
113
- def _recording_from_manifest(block: Any) -> RecordingConfig:
113
+ def _recording_from_manifest(runtime: dict[str, Any], document: dict[str, Any]) -> RecordingConfig:
114
114
  """Parse the manifest's ``recording:`` block into a :class:`RecordingConfig`.
115
115
 
116
- A missing or non-mapping block leaves recording disabled at its defaults.
117
- Unknown keys are ignored so a manifest can carry forward-looking settings
118
- without breaking an older runtime.
116
+ The block nests under ``runtime:``. A top-level ``recording:`` block is
117
+ still honored for older manifests, and the nested block wins when both are
118
+ present. A missing or non-mapping block leaves recording disabled at its
119
+ defaults. Unknown keys are ignored so a manifest can carry forward-looking
120
+ settings without breaking an older runtime.
119
121
 
120
122
  Args:
121
- block: The raw ``recording:`` value from the manifest, if any.
123
+ runtime: The manifest's ``runtime`` section.
124
+ document: The whole manifest document, for the legacy top-level block.
122
125
 
123
126
  Returns:
124
127
  The parsed recorder configuration.
125
128
  """
129
+ block = runtime.get("recording")
130
+ if not isinstance(block, dict):
131
+ block = document.get("recording")
126
132
  if not isinstance(block, dict):
127
133
  return RecordingConfig()
128
134
  raw_video = block.get("video")
File without changes
File without changes