更新时间:2026-08-05 GMT+08:00
注册自定义Transformer(作为开发者)
实现 IValueTransformer
from typing import Any, Mapping
from r2c_sdk.core.interfaces import IValueTransformer
class MyScaleTransformer(IValueTransformer):
"""将输入值乘以配置中的缩放因子。"""
def transform(self, value: Any, config: Any = None, context: Any = None) -> Any:
if isinstance(config, Mapping):
factor = float(config.get("factor", 1.0))
elif isinstance(config, (int, float)):
factor = float(config)
else:
factor = 1.0
return float(value) * factor
@staticmethod
def validate_config(config: Any) -> None:
if config is not None and not isinstance(config, (int, float, dict)):
raise ValueError("config must be a number or {factor: N}") 声明entry_point
[project.entry-points."r2c_sdk.transformers"] my_scale = "my_package.transforms:MyScaleTransformer"
在YAML中使用
transforms:
- name: my_scale
config:
factor: 0.001 注意事项
- 注册的是类,不是实例,TransformerRegistry会在首次查找时实例化。
- 内置优先:如果注册的name与内置同名,内置保留,第三方被忽略并日志warning。
- 可通过TransformerRegistry.available_transformers()查看当前可用的transformer。