{"categories":[{"label":"Application Frameworks","url":"https://skillfed.io/packages/category/software-development-libraries-application-frameworks/2"}],"enrichment":{"capability":"Venusian defers decorator actions from import time to a separate scan phase, allowing framework authors to register decorated functions and classes after modules are loaded rather than at decoration time.","skillfed_tags":["decorator-pattern","framework-utility","zope-ecosystem"],"use_cases":["Building web frameworks that need to collect route or view decorations from multiple modules before setting up routing tables.","Implementing plugin systems where decorators mark plugin entry points but registration must happen after all modules load.","Creating configuration systems that defer decorator-driven setup until after dependency injection or configuration is complete.","Zope-based applications that use decorators to register adapters, utilities, or event handlers in a deferred manner.","Testing frameworks that need to collect test markers or fixtures from decorated functions without executing them at import time."],"what_it_does":"Venusian is a decorator deferral library used primarily by web frameworks and Zope-based systems. Instead of executing decorator logic when a function or class is decorated at import time, venusian lets you attach metadata to the decorated object and then run all registered callbacks during a separate \"scan\" phase. This separation is useful when you need to defer decisions until after all modules are loaded, or when you want to collect and process decorations in batch.\n\nThe library works by attaching callbacks to decorated objects via a `__venusian_callbacks__` attribute, then providing a Scanner that walks through packages and modules to invoke those callbacks. It handles edge cases like inherited decorations, imported objects that shouldn't be double-scanned, and metaclasses that don't behave normally. Venusian has no runtime dependencies and supports Python 3.7 through 3.13 on both CPython and PyPy.","worth_installing":"Yes, if you are building a framework or plugin system that benefits from deferred decorator registration. Venusian is mature, well-tested, and has no dependencies. However, it is dormant (620 days since last release), so adopt it only if you are comfortable with minimal ongoing maintenance and can handle any issues yourself. For typical application code, you likely don't need it."},"id":"venusian","links":{"html":"https://skillfed.io/packages/venusian","md":"https://skillfed.io/packages/venusian.md","pypi":"https://pypi.org/project/venusian/"},"maintenance":{"status":"dormant"},"meta":{"latest_release":"2024-12-02","license_spdx":null,"license_treatment":"permissive","name":"venusian","python_support":"supports_current","summary":"A library for deferring decorator actions"},"popularity":{"monthly_downloads":2893607,"position":2835,"tier":"top_5000"},"security":{"n_vulnerabilities":0},"version":"3.1.1"}
