{"categories":[{"label":"Software Development","url":"https://skillfed.io/packages/category/software-development/13"}],"enrichment":{"capability":"Fifolock provides a low-level building block for creating custom synchronization primitives in asyncio Python, where locks are granted strictly in first-in-first-out order and are not reentrant.","skillfed_tags":["asyncio","concurrency","abandoned"],"use_cases":["Building a read/write lock where multiple readers can access a resource concurrently but writers get exclusive access.","Implementing a bounded semaphore that allows concurrent operations in strict request order.","Creating custom synchronization logic where lock compatibility depends on which modes are currently held.","Ensuring fair, deterministic lock acquisition order in asyncio applications where FIFO fairness matters."],"what_it_does":"Fifolock is a minimal asyncio synchronization tool that lets you build custom lock types\u2014mutexes, read/write locks, semaphores\u2014by defining compatibility rules between lock modes. Each mode is a subclass of asyncio.Future, and the lock grants access strictly in the order requests arrive, never allowing reentrancy.\n\nYou create a FifoLock instance, define lock-mode classes with an is_compatible method that checks whether a new request can proceed given the currently held locks, then use the lock as an async context manager. The package includes recipes for common patterns like exclusive locks, shared/exclusive (read/write) locks, and bounded semaphores. It requires Python 3.5 or later and has no external dependencies.","worth_installing":"No, unless you have an existing codebase already using it. The package is abandoned (last release 2019-05-02, no commits since), and asyncio now includes built-in primitives that cover most common use cases. If you need custom lock semantics, consider maintaining a fork or using a maintained alternative."},"id":"fifolock","links":{"html":"https://skillfed.io/packages/fifolock","md":"https://skillfed.io/packages/fifolock.md","pypi":"https://pypi.org/project/fifolock/"},"maintenance":{"status":"abandoned"},"meta":{"latest_release":"2019-05-02","license_spdx":null,"license_treatment":"permissive","name":"fifolock","python_support":"supports_current","summary":"A flexible low-level tool to make synchronisation primitives in asyncio Python"},"popularity":{"monthly_downloads":236901,"position":8971,"tier":"top_15000"},"security":{"n_vulnerabilities":0},"version":"0.0.20"}
