{"categories":[{"label":"Python Modules","url":"https://skillfed.io/packages/category/software-development-libraries-python-modules/5"}],"enrichment":{"capability":"Provides a dual-interface queue (sync and async) that bridges synchronous threaded code with asynchronous code across multiple async frameworks and sync concurrency models.","skillfed_tags":["concurrency-bridge","async-sync-interop"],"use_cases":["Bridging legacy synchronous code running in threads with new asyncio-based services in the same application.","Distributing work between a thread pool and an async task group without manual synchronization primitives.","Building adapter layers that accept messages from both sync and async producers and route them appropriately.","Migrating from standard queue to async-aware queues while keeping existing threaded code intact.","Coordinating between eventlet or gevent greenlets and trio or asyncio tasks in polyglot concurrency setups."],"what_it_does":"Culsans is a dual-interface queue library that lets synchronous and asynchronous code communicate through a single queue object. It exposes a `.sync_q` property for threaded, eventlet, or gevent code and an `.async_q` property for asyncio, trio, or curio code, allowing you to bridge concurrency models that normally don't mix. The synchronous interface is fully compatible with Python's standard queue module, while the asynchronous interface follows asyncio queue semantics.\n\nThe library is built on aiologic and inspired by janus, but extends support to include trio and curio on the async side, and eventlet and gevent on the sync side. It includes features like dynamic maxsize adjustment, peek operations, atomic clearing, and the ability to subclass queues with custom storage backends. All internal methods are called in exclusive access mode, so custom subclasses don't need to worry about thread-safety.","worth_installing":"Yes, if you need to bridge sync and async code in the same process. The low install friction, permissive ISC license, active maintenance, and broad concurrency framework support make it a solid choice for this specific problem. The Alpha status is not a blocker given recent activity and zero known vulnerabilities, but test it in your target concurrency mix before production use."},"id":"culsans","links":{"html":"https://skillfed.io/packages/culsans","md":"https://skillfed.io/packages/culsans.md","pypi":"https://pypi.org/project/culsans/"},"maintenance":{"status":"active"},"meta":{"latest_release":"2025-12-31","license_spdx":null,"license_treatment":"permissive","name":"culsans","python_support":"supports_current","summary":"Thread-safe async-aware queue for Python"},"popularity":{"monthly_downloads":2892340,"position":2838,"tier":"top_5000"},"security":{"n_vulnerabilities":0},"version":"0.11.0"}
