framesource 0.3.0__py3-none-any.whl

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 (37) hide show
  1. frame_processors/__init__.py +37 -0
  2. frame_source/__init__.py +50 -0
  3. framesource/__init__.py +93 -0
  4. framesource/_msmf_config.py +26 -0
  5. framesource/_version.py +24 -0
  6. framesource/discovery.py +109 -0
  7. framesource/errors.py +82 -0
  8. framesource/factory.py +290 -0
  9. framesource/processors/__init__.py +34 -0
  10. framesource/processors/equirectangular360_processor.py +577 -0
  11. framesource/processors/fisheye2equirectangular_processor.py +328 -0
  12. framesource/processors/frame_processor.py +30 -0
  13. framesource/processors/hyperspectral_processor.py +23 -0
  14. framesource/processors/realsense_depth_processor.py +90 -0
  15. framesource/py.typed +0 -0
  16. framesource/sources/__init__.py +40 -0
  17. framesource/sources/audiospectrogram_capture.py +1068 -0
  18. framesource/sources/basler_capture.py +477 -0
  19. framesource/sources/folder_capture.py +920 -0
  20. framesource/sources/genicam_capture.py +681 -0
  21. framesource/sources/huateng_capture.py +245 -0
  22. framesource/sources/ipcamera_capture.py +254 -0
  23. framesource/sources/mvsdk.py +2454 -0
  24. framesource/sources/realsense_capture.py +565 -0
  25. framesource/sources/screen_capture.py +800 -0
  26. framesource/sources/video_capture_base.py +560 -0
  27. framesource/sources/video_file_capture.py +259 -0
  28. framesource/sources/webcam_capture.py +511 -0
  29. framesource/sources/ximea_capture.py +299 -0
  30. framesource/threading_utils.py +790 -0
  31. framesource-0.3.0.dist-info/METADATA +787 -0
  32. framesource-0.3.0.dist-info/RECORD +37 -0
  33. framesource-0.3.0.dist-info/WHEEL +5 -0
  34. framesource-0.3.0.dist-info/licenses/LICENSE +21 -0
  35. framesource-0.3.0.dist-info/scm_file_list.json +276 -0
  36. framesource-0.3.0.dist-info/scm_version.json +8 -0
  37. framesource-0.3.0.dist-info/top_level.txt +3 -0
@@ -0,0 +1,37 @@
1
+ frame_processors/__init__.py,sha256=Ve5MbeibnrtN08mzybqasnE1kIKFPT5GVM0ikCcLOOc,1335
2
+ frame_source/__init__.py,sha256=3zdYwbcYagTfG6zZGpfsESYgxQ_aKRtKsiwkUMRbviU,2056
3
+ framesource/__init__.py,sha256=dy4oJKPIvM_-RS_qTC_qdN2HhMGKes9t_garpPgu-qY,2883
4
+ framesource/_msmf_config.py,sha256=SHPbck2AQ0aRofoHdYaTaHfLaEioyNyPXbdyHHGS9xs,1263
5
+ framesource/_version.py,sha256=RCY04NY0kBCyn6ttH6lnVL6Gz2gceOrt45f0yDOOU8A,520
6
+ framesource/discovery.py,sha256=vl__8pzYIJhLR0tqPZDUaAa21PV-L6eGV1J9EF6G9kE,4059
7
+ framesource/errors.py,sha256=YqVDgot04Mv9B2NNQrcB6q2ffqUENEQN_sB5XU4hQEI,3377
8
+ framesource/factory.py,sha256=XLx_UajdTRfp9JO6GOYbRXWx7p6X0D4nlmAJZEhoYEk,10655
9
+ framesource/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ framesource/threading_utils.py,sha256=dFgm6zXRjP6kGMIBlN-rFuukxwAu55dDs9QBvyvURxU,28475
11
+ framesource/processors/__init__.py,sha256=FnBd7Qbo6Fd9FKf4mpzgmn7bBrMwLpGAaGPP4_vOQU0,1072
12
+ framesource/processors/equirectangular360_processor.py,sha256=5ruxtkGzTtWD7bLCP1loA5vAJk5aZJzXQrXETKHudX0,18302
13
+ framesource/processors/fisheye2equirectangular_processor.py,sha256=tyH0cih2ZbTcT-l73zX2jVV9hkuqyjgIR_7VXV5L0KA,11473
14
+ framesource/processors/frame_processor.py,sha256=eusIs8G7DopduW3-qEjeyQycGrjuITwBNUh21WHdRX8,828
15
+ framesource/processors/hyperspectral_processor.py,sha256=jSOQAWDjdABZJSoXk2r_6mcfWl4lB17S2UGBh0_f7Tk,955
16
+ framesource/processors/realsense_depth_processor.py,sha256=UmvBTDVK9XeoImdXzrluISHYW2pOZPHiiZnzDrPw9aQ,3206
17
+ framesource/sources/__init__.py,sha256=L28xgfI6TA3FH7uGNc5OKgQ7wBUFKDNkf-vqDk9XozE,1511
18
+ framesource/sources/audiospectrogram_capture.py,sha256=z5mxCApimBEX516u2Doz0BhB6YSJWNsnPU7ow9URquQ,40724
19
+ framesource/sources/basler_capture.py,sha256=78N7x_tfPv2EiYMoZR5gyaKRbNXycBN7Ef9Q9Oj0YXQ,17337
20
+ framesource/sources/folder_capture.py,sha256=MvS4KAPhVofuy5dW0SUPdxU1Ca7YWBgVl8XsWg7FkOc,34798
21
+ framesource/sources/genicam_capture.py,sha256=Un4SPIm25c4dwzBi4ETsmJosl1asUJLBrOZS8nzkYJE,24612
22
+ framesource/sources/huateng_capture.py,sha256=rGLgmUj-babexqKBz79cznHb6PME1nqyMkgvqbb-ppg,9223
23
+ framesource/sources/ipcamera_capture.py,sha256=3RXNnuXRsbV1_YDRxJ_Mow_zvQduFT-kMh0PW_rQlEw,9402
24
+ framesource/sources/mvsdk.py,sha256=HlSlIryPwkkfGucJIC3GHQpGjbk3q3yWcrlz3Bd_l5M,94004
25
+ framesource/sources/realsense_capture.py,sha256=D_dHKASLNw2naqCsStcsyYhp78zzOHBinlePbhtARY0,20554
26
+ framesource/sources/screen_capture.py,sha256=MUyeLdzzcR2ukgS7zbz5INnxwpoHzFP41HvR3xAD8Pw,28395
27
+ framesource/sources/video_capture_base.py,sha256=UkOxKKxQNXkJF5o9xvPtiL7odC0whXlEoiXqp0Fb0HM,18749
28
+ framesource/sources/video_file_capture.py,sha256=D5SdPtiJeLFSMuN4ouWENsf12JVM37RG0m8oxwaMDMU,9481
29
+ framesource/sources/webcam_capture.py,sha256=Goe42TNuijPLqP22wvdlFehz8kblcEdEcIwXdv-yajo,19547
30
+ framesource/sources/ximea_capture.py,sha256=lllRvmuATHOezl-bygKcW408Ta9ewmlKdtdgqyeuIz0,10558
31
+ framesource-0.3.0.dist-info/licenses/LICENSE,sha256=hxQ_j3KpUch1SjcLauKzKlt51TxmsKDEMhVqryfYenA,1072
32
+ framesource-0.3.0.dist-info/METADATA,sha256=J9bGKfi_b-H4aneI-OmnD4J0dArNp4Fame0nwnlgvlU,29476
33
+ framesource-0.3.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
34
+ framesource-0.3.0.dist-info/scm_file_list.json,sha256=EnjWUlbVpbEHZbjCmPcMiZN1hYE6G-CttvuIaP39Los,10431
35
+ framesource-0.3.0.dist-info/scm_version.json,sha256=M0OKWxbM43TPf7ZUT0T-2FTn6Auz8Bnqmy8tR0QzBSc,160
36
+ framesource-0.3.0.dist-info/top_level.txt,sha256=EmmTuzkBt8RJwptU8-ZWNonG6bEUa4-66osQBVscj0I,42
37
+ framesource-0.3.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Oliver Hamilton
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,276 @@
1
+ {
2
+ "files": [
3
+ "README.md",
4
+ "LICENSE",
5
+ "pyproject.toml",
6
+ "CHANGELOG.md",
7
+ "MANIFEST.in",
8
+ "example.py",
9
+ ".gitignore",
10
+ "src/frame_source/__init__.py",
11
+ "src/frame_processors/__init__.py",
12
+ "src/framesource/factory.py",
13
+ "src/framesource/py.typed",
14
+ "src/framesource/__init__.py",
15
+ "src/framesource/discovery.py",
16
+ "src/framesource/threading_utils.py",
17
+ "src/framesource/_msmf_config.py",
18
+ "src/framesource/errors.py",
19
+ "src/framesource/processors/__init__.py",
20
+ "src/framesource/processors/realsense_depth_processor.py",
21
+ "src/framesource/processors/hyperspectral_processor.py",
22
+ "src/framesource/processors/fisheye2equirectangular_processor.py",
23
+ "src/framesource/processors/equirectangular360_processor.py",
24
+ "src/framesource/processors/frame_processor.py",
25
+ "src/framesource/sources/huateng_capture.py",
26
+ "src/framesource/sources/folder_capture.py",
27
+ "src/framesource/sources/audiospectrogram_capture.py",
28
+ "src/framesource/sources/__init__.py",
29
+ "src/framesource/sources/webcam_capture.py",
30
+ "src/framesource/sources/screen_capture.py",
31
+ "src/framesource/sources/realsense_capture.py",
32
+ "src/framesource/sources/ximea_capture.py",
33
+ "src/framesource/sources/video_capture_base.py",
34
+ "src/framesource/sources/ipcamera_capture.py",
35
+ "src/framesource/sources/genicam_capture.py",
36
+ "src/framesource/sources/video_file_capture.py",
37
+ "src/framesource/sources/basler_capture.py",
38
+ "src/framesource/sources/mvsdk.py",
39
+ "tests/test_typed_constructors.py",
40
+ "tests/test_high_frequency.py",
41
+ "tests/test_contract.py",
42
+ "tests/test_discovery_info.py",
43
+ "tests/test_msmf_config.py",
44
+ "tests/test_opencv_api_compatibility.py",
45
+ "tests/test_webcam_backend.py",
46
+ "tests/test_factory.py",
47
+ "tests/test_threading_utils.py",
48
+ "tests/conftest.py",
49
+ "tests/test_opencv_compat.py",
50
+ "tests/test_base_capabilities.py",
51
+ "tests/test_frame_source_shim.py",
52
+ "tests/test_frame.py",
53
+ "tests/test_errors.py",
54
+ "tests/test_discovery.py",
55
+ "tests/test_simple_external_threading.py",
56
+ "tests/test_grayscale.py",
57
+ "tests/test_from_config.py",
58
+ "media/geti_demo.mp4",
59
+ "media/demo.gif",
60
+ "media/interactive_360_demo.gif",
61
+ "media/image_seq/880_71024.jpg",
62
+ "media/image_seq/1220_71024.jpg",
63
+ "media/image_seq/100_71024.jpg",
64
+ "media/image_seq/410_71024.jpg",
65
+ "media/image_seq/400_71024__1.jpg",
66
+ "media/image_seq/290_71024.jpg",
67
+ "media/image_seq/530_71024.jpg",
68
+ "media/image_seq/1390_71024.jpg",
69
+ "media/image_seq/420_71024.jpg",
70
+ "media/image_seq/2900_71024.jpg",
71
+ "media/image_seq/480_71024.jpg",
72
+ "media/image_seq/1350_71024.jpg",
73
+ "media/image_seq/100_71024__1.jpg",
74
+ "media/image_seq/700_71024.jpg",
75
+ "media/image_seq/1450_71024.jpg",
76
+ "media/image_seq/370_71024.jpg",
77
+ "media/image_seq/1250_71024.jpg",
78
+ "media/image_seq/280_71024.jpg",
79
+ "media/image_seq/590_71024.jpg",
80
+ "media/image_seq/2400_71024.jpg",
81
+ "media/image_seq/520_71024.jpg",
82
+ "media/image_seq/2000_71024__1.jpg",
83
+ "media/image_seq/1120_71024.jpg",
84
+ "media/image_seq/510_71024.jpg",
85
+ "media/image_seq/500_71024.jpg",
86
+ "media/image_seq/670_71024.jpg",
87
+ "media/image_seq/900_71024.jpg",
88
+ "media/image_seq/2400_71024__1.jpg",
89
+ "media/image_seq/200_71024.jpg",
90
+ "media/image_seq/1500_71024__1.jpg",
91
+ "media/image_seq/460_71024.jpg",
92
+ "media/image_seq/200_71024__1.jpg",
93
+ "media/image_seq/1280_71024.jpg",
94
+ "media/image_seq/2600_71024__1.jpg",
95
+ "media/image_seq/1100_71024__1.jpg",
96
+ "media/image_seq/340_71024.jpg",
97
+ "media/image_seq/1210_71024.jpg",
98
+ "media/image_seq/1160_71024.jpg",
99
+ "media/image_seq/1290_71024.jpg",
100
+ "media/image_seq/1100_71024.jpg",
101
+ "media/image_seq/300_71024__1.jpg",
102
+ "media/image_seq/900_71024__1.jpg",
103
+ "media/image_seq/450_71024.jpg",
104
+ "media/image_seq/690_71024.jpg",
105
+ "media/image_seq/790_71024.jpg",
106
+ "media/image_seq/3000_71024.jpg",
107
+ "media/image_seq/940_71024.jpg",
108
+ "media/image_seq/360_71024.jpg",
109
+ "media/image_seq/1500_71024.jpg",
110
+ "media/image_seq/870_71024.jpg",
111
+ "media/image_seq/2300_71024.jpg",
112
+ "media/image_seq/1190_71024.jpg",
113
+ "media/image_seq/1130_71024.jpg",
114
+ "media/image_seq/2600_71024.jpg",
115
+ "media/image_seq/570_71024.jpg",
116
+ "media/image_seq/1470_71024.jpg",
117
+ "media/image_seq/170_71024.jpg",
118
+ "media/image_seq/350_71024.jpg",
119
+ "media/image_seq/1510_71024.jpg",
120
+ "media/image_seq/1140_71024.jpg",
121
+ "media/image_seq/1150_71024.jpg",
122
+ "media/image_seq/1480_71024.jpg",
123
+ "media/image_seq/1800_71024.jpg",
124
+ "media/image_seq/720_71024.jpg",
125
+ "media/image_seq/2200_71024__1.jpg",
126
+ "media/image_seq/1260_71024.jpg",
127
+ "media/image_seq/2800_71024.jpg",
128
+ "media/image_seq/560_71024.jpg",
129
+ "media/image_seq/120_71024.jpg",
130
+ "media/image_seq/1410_71024.jpg",
131
+ "media/image_seq/980_71024.jpg",
132
+ "media/image_seq/840_71024.jpg",
133
+ "media/image_seq/1310_71024.jpg",
134
+ "media/image_seq/610_71024.jpg",
135
+ "media/image_seq/2500_71024__1.jpg",
136
+ "media/image_seq/250_71024.jpg",
137
+ "media/image_seq/1200_71024__1.jpg",
138
+ "media/image_seq/220_71024.jpg",
139
+ "media/image_seq/1400_71024.jpg",
140
+ "media/image_seq/600_71024__1.jpg",
141
+ "media/image_seq/380_71024.jpg",
142
+ "media/image_seq/1700_71024__1.jpg",
143
+ "media/image_seq/700_71024__1.jpg",
144
+ "media/image_seq/3000_71024__1.jpg",
145
+ "media/image_seq/730_71024.jpg",
146
+ "media/image_seq/430_71024.jpg",
147
+ "media/image_seq/1000_71024.jpg",
148
+ "media/image_seq/850_71024.jpg",
149
+ "media/image_seq/470_71024.jpg",
150
+ "media/image_seq/1230_71024.jpg",
151
+ "media/image_seq/780_71024.jpg",
152
+ "media/image_seq/540_71024.jpg",
153
+ "media/image_seq/230_71024.jpg",
154
+ "media/image_seq/640_71024.jpg",
155
+ "media/image_seq/300_71024.jpg",
156
+ "media/image_seq/710_71024.jpg",
157
+ "media/image_seq/680_71024.jpg",
158
+ "media/image_seq/210_71024.jpg",
159
+ "media/image_seq/1460_71024.jpg",
160
+ "media/image_seq/910_71024.jpg",
161
+ "media/image_seq/1900_71024__1.jpg",
162
+ "media/image_seq/1270_71024.jpg",
163
+ "media/image_seq/1090_71024.jpg",
164
+ "media/image_seq/190_71024.jpg",
165
+ "media/image_seq/1530_71024.jpg",
166
+ "media/image_seq/1400_71024__1.jpg",
167
+ "media/image_seq/990_71024.jpg",
168
+ "media/image_seq/3100_71024.jpg",
169
+ "media/image_seq/1050_71024.jpg",
170
+ "media/image_seq/1300_71024.jpg",
171
+ "media/image_seq/1360_71024.jpg",
172
+ "media/image_seq/1000_71024__1.jpg",
173
+ "media/image_seq/260_71024.jpg",
174
+ "media/image_seq/1340_71024.jpg",
175
+ "media/image_seq/760_71024.jpg",
176
+ "media/image_seq/1540_71024.jpg",
177
+ "media/image_seq/1430_71024.jpg",
178
+ "media/image_seq/800_71024__1.jpg",
179
+ "media/image_seq/1180_71024.jpg",
180
+ "media/image_seq/1370_71024.jpg",
181
+ "media/image_seq/1490_71024.jpg",
182
+ "media/image_seq/240_71024.jpg",
183
+ "media/image_seq/620_71024.jpg",
184
+ "media/image_seq/1060_71024.jpg",
185
+ "media/image_seq/1300_71024__1.jpg",
186
+ "media/image_seq/1030_71024.jpg",
187
+ "media/image_seq/960_71024.jpg",
188
+ "media/image_seq/2900_71024__1.jpg",
189
+ "media/image_seq/930_71024.jpg",
190
+ "media/image_seq/1040_71024.jpg",
191
+ "media/image_seq/770_71024.jpg",
192
+ "media/image_seq/150_71024.jpg",
193
+ "media/image_seq/130_71024.jpg",
194
+ "media/image_seq/330_71024.jpg",
195
+ "media/image_seq/950_71024.jpg",
196
+ "media/image_seq/2100_71024__1.jpg",
197
+ "media/image_seq/1700_71024.jpg",
198
+ "media/image_seq/750_71024.jpg",
199
+ "media/image_seq/630_71024.jpg",
200
+ "media/image_seq/2700_71024__1.jpg",
201
+ "media/image_seq/400_71024.jpg",
202
+ "media/image_seq/2800_71024__1.jpg",
203
+ "media/image_seq/1080_71024.jpg",
204
+ "media/image_seq/920_71024.jpg",
205
+ "media/image_seq/310_71024.jpg",
206
+ "media/image_seq/1800_71024__1.jpg",
207
+ "media/image_seq/970_71024.jpg",
208
+ "media/image_seq/1380_71024.jpg",
209
+ "media/image_seq/1900_71024.jpg",
210
+ "media/image_seq/650_71024.jpg",
211
+ "media/image_seq/2500_71024.jpg",
212
+ "media/image_seq/2100_71024.jpg",
213
+ "media/image_seq/440_71024.jpg",
214
+ "media/image_seq/270_71024.jpg",
215
+ "media/image_seq/600_71024.jpg",
216
+ "media/image_seq/1240_71024.jpg",
217
+ "media/image_seq/1200_71024.jpg",
218
+ "media/image_seq/1320_71024.jpg",
219
+ "media/image_seq/110_71024.jpg",
220
+ "media/image_seq/1520_71024.jpg",
221
+ "media/image_seq/1600_71024__1.jpg",
222
+ "media/image_seq/490_71024.jpg",
223
+ "media/image_seq/660_71024.jpg",
224
+ "media/image_seq/810_71024.jpg",
225
+ "media/image_seq/740_71024.jpg",
226
+ "media/image_seq/1020_71024.jpg",
227
+ "media/image_seq/820_71024.jpg",
228
+ "media/image_seq/550_71024.jpg",
229
+ "media/image_seq/320_71024.jpg",
230
+ "media/image_seq/1600_71024.jpg",
231
+ "media/image_seq/500_71024__1.jpg",
232
+ "media/image_seq/390_71024.jpg",
233
+ "media/image_seq/2000_71024.jpg",
234
+ "media/image_seq/1010_71024.jpg",
235
+ "media/image_seq/90_71024.jpg",
236
+ "media/image_seq/830_71024.jpg",
237
+ "media/image_seq/580_71024.jpg",
238
+ "media/image_seq/890_71024.jpg",
239
+ "media/image_seq/180_71024.jpg",
240
+ "media/image_seq/140_71024.jpg",
241
+ "media/image_seq/2200_71024.jpg",
242
+ "media/image_seq/860_71024.jpg",
243
+ "media/image_seq/2300_71024__1.jpg",
244
+ "media/image_seq/1110_71024.jpg",
245
+ "media/image_seq/800_71024.jpg",
246
+ "media/image_seq/1440_71024.jpg",
247
+ "media/image_seq/2700_71024.jpg",
248
+ "media/image_seq/1420_71024.jpg",
249
+ "media/image_seq/1330_71024.jpg",
250
+ "media/image_seq/1170_71024.jpg",
251
+ "media/image_seq/160_71024.jpg",
252
+ "media/image_seq/1070_71024.jpg",
253
+ "examples/record_replay_example.py",
254
+ "examples/image_folder_example.py",
255
+ "examples/screen_capture_example.py",
256
+ "examples/README.md",
257
+ "examples/source_swap_example.py",
258
+ "examples/industrial_cameras_example.py",
259
+ "examples/camera_360_example.py",
260
+ "examples/inference_pipeline_example.py",
261
+ "examples/fisheye_ptz_example.py",
262
+ "examples/webcam_example.py",
263
+ "examples/test_window_discovery.py",
264
+ "examples/multiple_cameras_example.py",
265
+ "examples/threading_utils_examples.py",
266
+ "examples/ipcamera_example.py",
267
+ "examples/run_examples.py",
268
+ "examples/multiple_cameras_external_threading.py",
269
+ "examples/video_file_example.py",
270
+ "examples/audio_spectrogram_example.py",
271
+ "examples/realsense_example.py",
272
+ ".github/workflows/publish.yaml",
273
+ ".github/workflows/release.yml",
274
+ ".github/workflows/ci.yml"
275
+ ]
276
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.3.0",
3
+ "distance": 0,
4
+ "node": "g0fe263a5c0d5a29a82770d1bd76e6f8f360e2fb0",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-14"
8
+ }
@@ -0,0 +1,3 @@
1
+ frame_processors
2
+ frame_source
3
+ framesource