
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
camera-ui-python-common
Advanced tools
Shared utilities for Python-based camera.ui plugins including logging, reactive programming, and common helpers.
pip install camera-ui-python-common
from camera_ui_python_common import LoggerService
logger = LoggerService({
"prefix": "MyPlugin",
"debug_enabled": True
})
logger.log("Plugin started")
logger.error("Something went wrong")
logger.success("Operation completed")
logger.debug("Debug information")
from camera_ui_python_common import ReactiveProperty
# Create reactive state
state = ReactiveProperty({"count": 0, "active": True})
# Subscribe to changes
state.observable.subscribe(lambda value: print(f"State: {value}"))
# Update state
state.next({"count": 1, "active": True})
from camera_ui_python_common import SignalHandler
async def cleanup():
print("Cleaning up...")
signal_handler = SignalHandler({
"display_name": "MyPlugin",
"logger": logger,
"close_function": cleanup
})
signal_handler.setup_handlers()
from camera_ui_python_common import ObjectPath
data = {"camera": {"settings": {"resolution": "1080p"}}}
# Get nested values
resolution = ObjectPath.get(data, "camera.settings.resolution")
# Set nested values
ObjectPath.set(data, "camera.settings.bitrate", 5000)
# Check if path exists
has_setting = ObjectPath.has(data, "camera.settings.fps")
from camera_ui_python_common import TaskSet
tasks = TaskSet("MyTasks")
tasks.add(my_async_function())
await tasks
from camera_ui_python_common import to_thread
# Run blocking operation in thread
result = await to_thread(blocking_function)
from camera_ui_python_common import make_sync
# Convert async function to sync
sync_version = make_sync(async_function)
result = sync_version(args)
from camera_ui_python_common import build_target_url
url = build_target_url("rtsp://camera.local/stream", {
"video": True,
"audio": ["pcma", "opus"],
"timeout": 30
})
import asyncio
from camera_ui_python_common import LoggerService, ReactiveProperty, SignalHandler
class MyPlugin:
def __init__(self):
self.logger = LoggerService({"prefix": "MyPlugin"})
self.state = ReactiveProperty({"active": False})
self.signal_handler = SignalHandler({
"display_name": "MyPlugin",
"logger": self.logger,
"close_function": self.cleanup
})
async def start(self):
self.logger.log("Starting plugin...")
self.signal_handler.setup_handlers()
# Update state
self.state.next({"active": True})
# Keep running
await asyncio.Future()
async def cleanup(self):
self.logger.log("Stopping plugin...")
# Usage
plugin = MyPlugin()
asyncio.run(plugin.start())
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.
MIT
Part of the camera.ui ecosystem - A comprehensive camera management solution.
FAQs
camera.ui python utilities
We found that camera-ui-python-common demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.