Estendendo o ContractForge.
Existem APIs de extensão para comportamento reutilizável. Use-os quando um recurso se aplicar a mais de um conjunto de dados ou projeto.
Pontos de extensão
| Extensão | API | Usar quando |
|---|---|---|
| Predefinido | register_preset | Você deseja padrões reutilizáveis para um padrão de contrato. |
| Resolvedor de origem | register_source_resolver | Você precisa ler um novo tipo de fonte. |
| Modo de gravação | register_write_mode | Você precisa de uma nova semântica de gravação de destino. |
| Regra de qualidade | register_quality_rule | Você precisa de uma regra reutilizável além dos integrados. |
| Ganchos | IngestionHooks | Você precisa de uma lógica personalizada controlada em torno da ingestão. |
Exemplo de resolvedor de origem
from contractforge import SourceResolution, register_source_resolver
def resolve_custom_source(spec, spark):
df = spark.read.format("json").load(spec.path)
return SourceResolution(
dataframe=df,
metadata={"source_connector": "custom_json"},
capabilities={"batch": True},
)
register_source_resolver("custom_json", resolve_custom_source)
Regras de projeto
- Não adicione ramificações específicas do conjunto de dados aos módulos principais.
- Retornar metadados operacionais redigidos.
- Mantenha os resolvedores de origem focados na leitura, não na formação do negócio.
- Prefira a configuração declarativa às convenções ocultas.
- Adicione testes na camada mais baixa que comprove o contrato de extensão.