touch-callable:自动为 Python Function 生成 WebUI

2019-12-01 12:20:56 +08:00
 pengwkgood

给大家介绍一下我的业余项目: https://github.com/pengwk/touch-callable (求 Star 😝、求建议)

使用 Python 3 的 type annotation 特性,自动提取 Function 参数类型信息,生成 Web UI,只需要正常编写 Python function 就可以立刻开始一个简易的 Web 服务。

目前支持的类型有:

做这个项目的目的有两个:

后端使用的是 Flask,前端使用的是 Ant Design。

看一个例子:

# example.py
from datetime import datetime, date, time
from enum import Enum
import io
import typing


class Languages(Enum):
  Python = 'Python'
  PHP = 'PHP'
  Java = 'Java'


def demo(int_: int, str_: str, float_: float, bool_: bool,
         enum_: Languages,
         datetime_: datetime = datetime.now(),
         date_: date = date.today(),
         time_: time = time(1, 2, 3),
         bytes_io: io.BytesIO = None,
         binary_io: typing.BinaryIO = None):
  pass

会生成下面的界面:

4288 次点击
所在节点    分享创造
29 条回复
cydian
2019-12-02 01:37:59 +08:00
我赞成易用的 web
支持楼主。
rubycedar
2019-12-02 09:11:00 +08:00
@BingoXuan 有道理🤔 不过还是这些非专业人士不小心写点漏洞 再不小心放在公网上 就成安全隐患了哈哈哈
pengwkgood
2019-12-02 20:14:38 +08:00
@rubycedar 安全确实蛮重要的,我建一个 issue 跟进。😝
pengwkgood
2019-12-02 20:15:28 +08:00
@cydian 谢谢!你目前有使用这种工具的需求吗?
pengwkgood
2019-12-02 20:18:33 +08:00
@ClericPy 我觉得是这些工具都不是足够好用,所以大家没用起来。等输入输出支持的丰富些,做几个例子,大家能很直观感受到这种工具的价值,可能就会用起来了。
pengwkgood
2019-12-02 20:19:03 +08:00
@BingoXuan 能具体说说他们的需求吗?
pengwkgood
2019-12-02 20:22:50 +08:00
@ClericPy 嗯,我应该把这几个工具的异同都列出来放在 Readme 里。
BingoXuan
2019-12-02 21:11:41 +08:00
@pengwkgood
现阶段来说完成度已经非常高了,如果做成 jupyter notebook 类似就最好。分割成不同的块,允许用户根据需求执行不同的块。不过 jupyter 是承载代码,我觉得你可以加一个 table 控件用于承载函数的信息。最好能调用一些内置函数,如 sleep。
ClericPy
2019-12-02 21:13:41 +08:00
@pengwkgood #27 Just do "IT". 反正闲着也是闲着, 我也是为了避免长时间不敲代码手生, 才搞那么个玩意, 当时问 V2 有没有现成的轮子, 没问到, 就自己撸了试试, 看你的项目和我的时间还挺接近哈哈, 不过做到 web UI 的时候, 实在感觉无聊, 就丢那了, 实际上做到函数自省成一个 kwargs, 然后做好类型自动转换, 剩下的直接转命令行的 argparse 兼容格式, 就能直接套进 Gooey 和 Wooey

这东西自己搞感觉搞不太起来, 搞起来也就自己在用, 不像 google 的 fire 和 linkedin 的 shiv, 那是他们内部确实大范围解决过问题的

溜了溜了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624762

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX