PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Wrapt.

Wrapt
— модуль, цель которого предоставить прозрачный объектный прокси для Python, который может быть использован в качестве основы для создания обёрток функций и декораторов.

🫥Пример декоратора:
import wrapt

@wrapt.decorator
def pass_through(wrapped, instance, args, kwargs):
return wrapped(*args, **kwargs)

@pass_through
def function():
pass


🔘Помимо поддержки создания объектных прокси, обёрток функций и декораторов, модуль также предоставляет механизм хуков для импорта и другие утилиты.

🔘Модуль wrapt уделяет особое внимание корректности и значительно превосходит functools.wraps().

🔘Декораторы, созданные с помощью этого модуля, будут работать в гораздо большем числе сценариев, чем обычные декораторы, и обеспечат более предсказуемое и последовательное поведение.

#Python #Wrapt #Programming #Development #Coding #PythonModules #Decorators #FunctionWrappers #SoftwareEngineering #MonkeyPatching

📱Ссылка на репозиторий:
https://github.com/GrahamDumpleton/wrapt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32⚡1🔥1
Pristan.

📱Pristan — это библиотека для построения плагинных систем в Python, где плагины “подцепляются” к хост‑коду автоматически, а сам хост вообще не знает о конкретных реализациях.

Декорируете функцию как слот через @slot, а плагины объявляете как @some_slot.plugin — при вызове слота фактически вызываются все подключённые плагины, а результат агрегируется в list или dict в зависимости от аннотации типов.

🔹Ключевые особенности:

🔘Максимальная простота: объявил функцию и вызываешь её как обычно, плагины прозрачно расширяют или заменяют поведение.

🔘Pythonic‑подход: декораторы + аннотации типов определяют и контракт, и способ агрегации результатов.

🔘Type safety: проверки совместимости сигнатур слота и плагинов на основе sigmatch, плюс проверка типов возвращаемых значений через simtypes.

🔘Авто‑обнаружение: плагины находятся через entry points в pyproject.toml, достаточно указать модуль в секции [project.entry-points.pristan] или в своём namespace.

🔘Slot как коллекция: можно смотреть установленные плагины, обращаться к ним по имени (slot['name']()), считать их количество, ограничивать max, требовать уникальные имена или однократный вызов плагина (run_once).

✅Если вы пишете расширяемую библиотеку и хотите простую, типобезопасную плагинную систему без собственного фреймворка — pristan как раз для этого.

#python #plugins #pristan #pyproject #entrypoints #typing #decorators #opensource

📱Ссылка на репозиторий:
https://github.com/mutating/pristan
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3👍2⚡1