numpy<3,>=2.4.6
opencv-python<6,>=5.0.0.93
py65<2,>=1.2.0
requests<3,>=2.34.2

[all]
av<19,>=18.0.0
cv2-enumerate-cameras<2,>=1.3.3
fastapi<1,>=0.140.0
mediapipe<0.11,>=0.10.35
mido<2,>=1.3.3
obsws-python<2,>=1.8.0
pyserial<4,>=3.5
python-rtmidi<2,>=1.5.8
questionary<3,>=2.1.1
rich<16,>=15.0.0
sounddevice<0.6,>=0.5.5
uvicorn<1,>=0.51.0
websockets<17,>=16.1.1
yt-dlp>=2026.7.4
zeroconf<1,>=0.150.0

[camera]
cv2-enumerate-cameras<2,>=1.3.3

[control]
fastapi<1,>=0.140.0
uvicorn<1,>=0.51.0

[logging]
rich<16,>=15.0.0

[mic]
sounddevice<0.6,>=0.5.5

[midi]
mido<2,>=1.3.3
python-rtmidi<2,>=1.5.8

[obs]
obsws-python<2,>=1.8.0

[tr]
pyserial<4,>=3.5

[video]
av<19,>=18.0.0

[vision]
mediapipe<0.11,>=0.10.35

[wizard]
questionary<3,>=2.1.1

[wled]
zeroconf<1,>=0.150.0
fastapi<1,>=0.140.0
uvicorn<1,>=0.51.0
websockets<17,>=16.1.1

[yt]
yt-dlp>=2026.7.4
