How the rest of the polyrepo uses it
FreeMoCap
- Declares
skellylogsas a dependency inpyproject.toml, sourced fromgit+https://github.com/freemocap/skellylogs; bothfreemocapandskellycamlockfiles pin the same commit (9114990350d7fb36747526286671c17abd7e523e). freemocap/__init__.pyandfreemocap/core/__init__.pyboth runconfigure_logging(LogLevels.TRACE)at import time, makingTRACEthe effective global verbosity for the whole app.core/pipeline/abcs/pipeline_ipc.py. Every realtime pipeline'sPipelineIPC.create()sets the dataclass'sws_queuefield toget_websocket_log_queue(), so all pipeline child processes inherit the shared log queue and their records reach the frontend alongside the main process's.api/websocket/websocket_server.py: the server's_logs_relayasyncio task is the consumer described preceding, it drains the queue withget_nowait(), drops records belowMIN_LOG_LEVEL_FOR_WEBSOCKET(its defaultws_log_level), toleratesEOFError/OSErrorfrom partial pickles left by dying child processes, and sends each dict to the client as JSON via its reusable msgspec encoder. App code leans on the custom levels throughout (logger.api(...)for route registration and lifecycle events,logger.trace(...)for per-frame backpressure chatter,logger.success(...)on startup/shutdown).app/app.pyreports the installedskellylogsversion in the startup "System info" log banner next to the other Skelly packages.
SkellyCam
- Also declares the git-sourced dependency in
pyproject.toml. skellycam/__init__.pyconfigures atLogLevels.TRACEbut overrides the file destination with its ownget_log_file_path()(under SkellyCam's data folder), the log-file location is a per-app decision, which is exactly whyconfigure_loggingtakeslog_file_path.core/ipc/process_management/managed_worker.py:ManagedProcessthreads the queue through process spawning. The child-side entry point callsconfigure_logging(LOG_LEVEL, ws_queue=log_queue)when a queue was provided (this is the intended way for children to join the log stream, per the child-process guard preceding) and callscancel_join_thread()on exit so the queue feeder doesn't block shutdown.core/ipc/pubsub/pubsub_topics.py: defines aLogsTopicwhose message type isLogRecordModeland whose publication queue defaults toget_websocket_log_queue(), the log stream plugs directly into SkellyCam's pubsub layer.api/websocket/websocket_server.py: mirrors FreeMoCap's_logs_relay, reconstructingLogRecordModel(**logs_queue.get_nowait())and forwarding to clients; the SkellyCam UI renders these records in its log terminal panel (documented further in the SkellyCam websocket protocol and logging pages).
Other repos
- SkellyForge does not depend on SkellyLogs. It carries its own vendored copy of the same design under
skellyforge/system/logging_configuration/(matchingconfigure_logging,LogLevels,DeltaTimeFilter, color helpers, and a simplerQueueHandler-based websocket handler), and itspyproject.tomllists neitherskellylogsnor a git source for it. - SkellyTracker, SkellySync, and SkellyPings contain no references to SkellyLogs in their sources.
- freemocap_blender_addon has no import or dependency on SkellyLogs either, but its
utilities/git_source_manager.py(a generic git-source dependency cache, imported by the addon's__init__.py) names the SkellyLogs repo in its module docstring example and its__main__self-test block as a sample entry.