如何在方面之间传播
How to propagate between aspects
我正在应用方面,但不知何故似乎做错了什么。
成像著名的参考图片。
在我的例子中 A 是:
deps_aspect = aspect(
implementation = _deps_aspect_impl,
attr_aspects = ["resource_deps"],
attrs = {
},
)
对于A(W), _deps_aspect_impl
returns:
return struct(
dep_files = set(),
)
现在,如果我正确理解文档,我应该能够通过 中的 resource_deps
访问 A(W) dep_files
]A(Y).
如果 A(Y),_deps_aspect_impl
我会:
print("DIR: %s" % dir(ctx.rule.attr))
没有 resource_deps
打印(我无法访问它)。
我是不是理解错了或者这应该如何工作?
所以问题是我没有抓住各种细微差别。
attr_aspects
是递归的。这意味着一旦您应用,它们就会向下传播到图表中。因此,对于那个应用来说,属性是全局的。也许能够用 kind
-> attr
映射指定字典会更好。
由于1.你真的需要看看kind
,所以你有不同的代码路径(我做对的一件事)。
数据可以不能通过阴影图传播。我以前是这样想象的。您只能在 "solid" 规则 attrs
.
上传播
我正在应用方面,但不知何故似乎做错了什么。 成像著名的参考图片。
在我的例子中 A 是:
deps_aspect = aspect(
implementation = _deps_aspect_impl,
attr_aspects = ["resource_deps"],
attrs = {
},
)
对于A(W), _deps_aspect_impl
returns:
return struct(
dep_files = set(),
)
现在,如果我正确理解文档,我应该能够通过 中的 resource_deps
访问 A(W) dep_files
]A(Y).
如果 A(Y),_deps_aspect_impl
我会:
print("DIR: %s" % dir(ctx.rule.attr))
没有 resource_deps
打印(我无法访问它)。
我是不是理解错了或者这应该如何工作?
所以问题是我没有抓住各种细微差别。
attr_aspects
是递归的。这意味着一旦您应用,它们就会向下传播到图表中。因此,对于那个应用来说,属性是全局的。也许能够用kind
->attr
映射指定字典会更好。由于1.你真的需要看看
kind
,所以你有不同的代码路径(我做对的一件事)。数据可以不能通过阴影图传播。我以前是这样想象的。您只能在 "solid" 规则
attrs
. 上传播