Extender formatos¶
Si agregas un nuevo formato, el cambio debe respetar la separacion actual entre dominio, casos de uso y adaptadores.
Donde tocar¶
| Area | Rol |
|---|---|
src/pytabify/application/ports |
contratos de lectura y escritura |
src/pytabify/application/use_cases |
flujos de carga y persistencia |
src/pytabify/adapters/files/readers |
readers concretos por formato |
src/pytabify/adapters/files/writers |
writers concretos por formato |
src/pytabify/adapters/files/resolvers.py |
resolucion por extension |
Flujo recomendado¶
- Implementa un reader o writer concreto en
adapters/files. - Registra el formato en el resolver correspondiente.
- Mantén intacto el contrato del dominio.
- Agrega pruebas unitarias del adaptador y al menos un flujo end-to-end.
- resuelve archivo por extension;
- convierte origen externo a
list[dict[str, Any]]; - deja al dominio validar el contrato tabular.
- debe seguir el mismo contrato de salida;
- no debe inyectar reglas de negocio en la infraestructura;
- debe fallar con errores de infraestructura coherentes.
No rompas el contrato del dominio
Si tu adaptador produce filas no rectangulares o nombres de columnas inconsistentes, el problema no se arregla en la capa de dominio. El adaptador debe entregar una estructura razonable para que la validacion haga su trabajo.
Pruebas minimas recomendadas
- lectura o escritura exitosa del nuevo formato;
- error consistente cuando el archivo no existe;
- error consistente cuando el contenido es invalido;
- compatibilidad con
DataTableCreatoroDataTableSavera traves de los resolvers.