/
Providers
Providers
[ 1 Using a Custom Provider ]
Using a Custom Provider
# Using a provider from a custom rule
#
# TODO:
# How to introspect the available providers from the target (you just have to know...)?
def _foo_impl(ctx):
if SemanticVersionInfo in ctx.attr.version:
print("Version: ", ctx.attr.version[SemanticVersionInfo].version) # <-- fetching the provider structure
print("Dir: ", dir(ctx.attr.version)) # <-- this only shows 'target' fields (mostly useless)
if platform_common.TemplateVariableInfo in ctx.attr.version:
for varname, varsub in ctx.attr.version[platform_common.TemplateVariableInfo].variables.items():
print("Varname: ", varname)
print("Varsub:", varsub)
foo = rule(
implementation = _foo_impl,
attrs = {
"version": attr.label(
default = "@rules_python_extras//python:current_py_version", # <-- provider
),
},
) |
, multiple selections available,
Related content
VirtualEnv
VirtualEnv
More like this
Launch
Launch
More like this
Bazel
Bazel
More like this
Rclpy
Rclpy
More like this
Targets
Targets
More like this
QOS Profiles
QOS Profiles
More like this