更新时间: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。

相关文档