pywebio / PyWebIO

Write interactive web app in script way.
https://pywebio.readthedocs.io
MIT License
4.49k stars 384 forks source link

使用config装饰器装饰的应用函数丢失了原本的__name__ #653

Open jackwolfey opened 2 months ago

jackwolfey commented 2 months ago

BUG描述 使用config装饰器装饰的应用函数丢失了原本的name 这会导致当在一个app函数上套了多个装饰器再搭配使用start_server()部署多个应用时,引发ValueError: Duplicated application name报错

环境信息

最小可复现示例

from pywebio import output
from pywebio.platform import start_server, config
from pywebio.session import run_js
from functools import wraps

def remove_footer(webio_app):
    @wraps(webio_app)
    def remove_footer_wrapper():
        jscode = """$(".footer").remove();"""
        run_js(jscode)
        webio_app()

    return remove_footer_wrapper

@remove_footer
@config(title='show text')
def show_text():
    output.put_text('abc')

@remove_footer
@config(title='show markdown')
def show_markdown():
    output.put_markdown('# abc')

if __name__ == '__main__':
    start_server([show_text, show_markdown])