xzhao
(xzhao)
1
zengxs
(zengxs)
3
这个应该是 Python 库更新了 attrib 那个函数,导致了不兼容。
检查一下你的 Python 依赖库的版本
@xzhao
你这个说起来有点复杂。分析过程:
Leap 15.2 的 buildlog 我看了,cascadia-code-fonts 用 fontmake 编译自己,在 vendor 里 bundle 了一份 fontmake,fontmake 依赖 ufoLib2,同样也是 bundle 的。问题出在 ufoLib2 的 objects/misc.py。
所以实际上是编译工具出了问题。
ufoLib2 用 python-attrs 实现面向对象。后者在 19.1->19.2 的 changelog 里 deprecated 了 cmp,用 eq 替代。也就是说:
attrs.ib (eq=False)
这个用法在 python-attrs 19.2 以上版本才有,以下版本是
attrs.ib (cmp=False)
知道这点,我们去 ufoLib2 的 objects/misc.py 的 history 里看 commits:
这条。反着改就是对 Leap 15.2 的修复。
看到你的修复和你的提交了。但是我觉得一个只支持 Factory 的更新不算一个 “好” 的更新,尤其是在修复 Leap 15.2 如此简单的情况下…
说到底就是对 python 的 err output 不熟,把 python-attrs 提供的函数看成 python3 的 builtin funcs 了,所以才会觉得没法修…
xzhao
(xzhao)
6
我确实对 python 不太熟悉。不过明白了,我会修改支持 15.2 之后再重新提交,感谢!
我也是杂而不精…打包能让你接触好多种编程语言,重点号,的错误。不断的 google 错误就会一点一点摸到这个编程语言正确的样子,再看看语法就会写一点了。
xzhao
(xzhao)
8
看起来没那么简单,除了 cmp 和 eq 之外,旧版本的 python-attrs 还不支持 kw_only 参数,看来只能取消新版本的提交了。
同样方法去 ufoLib2 里找…python-attrs 从 19.1->19.2 一共也没改啥
xzhao
(xzhao)
10
python-attrs 在 Leap 15.2 里面的版本是 17.4.0。 @marguerite
但是 ufoLib2 不是这所有的 change 它都有用啊,好比 python 2.7 到 python 3.7 可能有成千上万的 changes,但是我就写个 hello world 又能遇到多少变化呢?ufoLib2 一共才 241 个 commits…集中到应对 python-attrs 版本变化的 commit 可能也就几条…
xzhao
(xzhao)
12
可能改了 ufoLib2 更多部分的话,其他依赖 ufoLib2 的部分也需要改,我有空的时候仔细看一下。@marguerite
存在这种可能性。不过库的定义就是接口独立于实现,可能性比较小。