Hasty Briefsbeta

双语

Superfunctions: A universal solution against sync/async fragmentation in Python

10 months ago
  • #async-programming
  • #python
  • #code-generation
  • 'transfunctions'库通过使用模板帮助避免Python中同步和异步函数之间的代码重复。
  • 通过pip安装:'pip install transfunctions'。
  • '@transfunction'装饰器允许创建可生成同步、异步或生成器函数的模板。
  • 上下文管理器'sync_context'、'async_context'和'generator_context'定义了针对每种函数类型的特定代码块。
  • 方法'get_usual_function()'、'get_async_function()'和'get_generator_function()'可从模板生成对应的函数类型。
  • 用'@superfunction'标记的超函数会根据使用场景(同步/异步/生成器)自动适配行为。
  • 超函数可通过波浪线语法(~function())实现同步调用,或通过await/asyncio.run实现异步调用。
  • 该库在AST层面进行代码生成,确保全局变量和闭包访问得以保留。
  • 使用类似await_it的标记来指示在生成的异步函数中插入await的位置。
  • 存在一些限制,例如避免在模板上使用第三方装饰器,并确保生成函数的语法正确性。