Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

typing hit #19

Closed
rexzhang opened this issue Jun 17, 2022 · 8 comments
Closed

typing hit #19

rexzhang opened this issue Jun 17, 2022 · 8 comments

Comments

@rexzhang
Copy link
Owner

发现个问题,这种typing是cpython3.10才有的新功能,这样写的话3.10以下的都没法用,会出现TypeError: unsupported operand type(s) for |: 'type' and 'NoneType',可以改成Union和从typing模块import的老样式。这次不兼容是在这次提交引入的

Originally posted by @synodriver in #8 (comment)

@rexzhang
Copy link
Owner Author

当前要求的最低版本为 Python3.10. 这个项目属于应用级别而非库;同时,我看到的大部分用户都是通过 docker 来使用.另外我也提供了使用 pyinstaller 打包的带运行单文件发布.所以,其实版本是否要求最新对使用者来说无所谓.
我对类型标注方面的语法变动比较在意,之前定下来的策略就是:一直跟随更新 Python 最低要求版本,直至类型标注在语法层面没有大的变化为止

@rexzhang
Copy link
Owner Author

要改的话,一些asgi相关的typing可以从asgiref里面找,不过这应该是另一个pr了(

这个提议倒是不错,毕竟这个项目是深度绑定 ASGI 这个协议的

@rexzhang
Copy link
Owner Author

关于 ASGIRef, 可以关注下 这个 讨论, 当前已经分离出一个独立的库, 只是代码仓库还没有进 Django 组织

@synodriver
Copy link

我其实希望把这个webdav功能集成进别的框架……当初我是这么想的。ASGI接口协议设计之初就是为了解决各个异步web框架之间接口互不兼容的问题,他是wsgi协议的精神继承。既然它在asgi协议上运行,那显然,如果让他可以被集成进入别的web框架是一件大好事。比如我可以:

from fastapi import FastAPI
from asgi_webdav.constants import AppEntryParameters
from asgi_webdav.server import get_asgi_app

app = Fastapi()
webdav_app = get_asgi_app(AppEntryParameters(bind_host="0.0.0.0",
        bind_port=8000,
        config_file="/data/webdav.json",
        logging_display_datetime=False,
        logging_use_colors=False))
app.mount('/dav',webdav_app)

这样fastapi框架将获得额外的webdav功能。像这种插件式的设计应该是很容易实现的,比如上面那个应该是可以跑得起来的,因为他们符合asgi规范

@synodriver
Copy link

很多别的语言也有这样webdav和web框架共存的例子,典型的,go写的cloudreve

@rexzhang
Copy link
Owner Author

这个思路不错,我都是将需要再多个项目使用的写成中间件,有点思维定式了.
不过把 asgi-webdav 这个项目再回滚回去就算了;极度不喜欢 Optional/Union. 对 Python 版本的依赖就锁定在 3.10 好了

@synodriver
Copy link

我已经fork了一个老版本可以跑的分支,他将自动跟随上游并且3.8应该可以跑

@rexzhang
Copy link
Owner Author

这个话题应该没有讨论的了,关闭

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants