Instalação
ContractForge é publicado como pacotes Python independentes. Instale o núcleo neutro em plataforma mais o adaptador para o tempo de execução que você deseja planejar, renderizar ou executar.
O limite do pacote é intencional:
contractforge-corepossui modelos de contrato, validação semântica, planejamento e conceitos de evidência neutra.- cada pacote de adaptador possui APIs de plataforma, artefatos nativos, auxiliares de implantação e preenchimento de evidências específicas do tempo de execução.
contractforge-aié opcional e usa o mesmo núcleo determinístico e planejadores de adaptadores.
Instalar por runtime
# Databricks
pip install contractforge-core contractforge-databricks
# AWS Glue / Iceberg
pip install contractforge-core contractforge-aws
# Snowflake
pip install contractforge-core contractforge-snowflake
# Microsoft Fabric
pip install contractforge-core contractforge-fabric
# GCP BigQuery / BigLake
pip install contractforge-core contractforge-gcp
# ContractForge AI companion
pip install contractforge-core contractforge-ai
Para uma máquina local que valida e compara projetos em cada adaptador:
pip install \
contractforge-core \
contractforge-databricks \
contractforge-aws \
contractforge-snowflake \
contractforge-fabric \
contractforge-gcp \
contractforge-ai
Instalação não é entrega em runtime
pip install disponibiliza o pacote para o processo Python que executa a CLI ou
o código da biblioteca. Cada plataforma tem suas próprias regras de entrega de
pacotes. Use PyPI primeiro quando o runtime puder resolver pacotes com segurança;
use wheels quando o runtime exigir artefatos explícitos; use ZIP somente onde a
plataforma exigir imports Python preparados em stage.
| Plataforma | Pacote publicado | Entrega preferencial no runtime | Fallback com wheel ou ZIP | Onde o código ContractForge roda |
|---|---|---|---|---|
| Databricks | contractforge-core + contractforge-databricks pelo PyPI. | Instale os pacotes pelo PyPI no job, cluster, ambiente de notebook ou caminho de pacote do workspace. | Anexe wheels enviados ao workspace quando ele não puder acessar o PyPI ou quando o release precisar vir de artefatos de CI. ZIP não é o caminho normal no Databricks. | Dentro de jobs/notebooks Databricks, com Spark e Delta fornecidos pelo Databricks Runtime. |
| AWS Glue / Iceberg | contractforge-core + contractforge-aws pelo PyPI para ferramentas locais ou de CI. | Publique artefatos gerados e wheels no S3, depois configure os jobs Glue com essas dependências de wheel. | PyPI público só deve ser usado quando o job Glue tiver acesso externo a pacotes. Jobs em VPC privada devem usar wheelhouse no S3. ZIP não é o caminho estável no Glue. | Dentro de jobs AWS Glue Spark; DDL de evidência Athena/Iceberg também pode ser aplicado pelos auxiliares de deploy do adaptador. |
| Snowflake | contractforge-core + contractforge-snowflake pelo PyPI para ferramentas locais ou de CI. | Artefatos SQL/task graph rodam nativamente no Snowflake. A execução por procedure Snowpark hospedada usa imports ZIP preparados em stage para as bibliotecas core e adapter. | Construa wheels do release e prepare ZIPs compatíveis com Snowflake para execução por procedure. Não dependa de resolução PyPI em runtime para módulos ContractForge customizados dentro do Snowflake. | Em SQL warehouses Snowflake e, no caminho de procedure hospedada, dentro de procedures Python Snowpark. |
| Fabric | contractforge-core + contractforge-fabric pelo PyPI. | Instale pelo PyPI no ambiente de notebook/runtime Fabric usado pelo notebook Lakehouse implantado. | Anexe ou instale wheels quando o PyPI não estiver disponível ou quando o workspace precisar usar artefatos produzidos pelo CI. ZIP não é o caminho normal no Fabric. | Dentro de notebooks Fabric Lakehouse, usando o Lakehouse e o workspace configurados. |
| GCP BigQuery / BigLake | contractforge-core + contractforge-gcp pelo PyPI para ferramentas locais, CI ou runners. | BigQuery SQL, load jobs e Workflows são artefatos nativos gerados; instale o adaptador onde comandos Python de deploy/smoke rodam. | Use wheels em runners privados ou para artefatos de CI fixados. Dataflow/runners Python customizados podem exigir uma decisão própria de empacotamento. ZIP não faz parte do caminho estável BigQuery/Workflows. | Normalmente fora do BigQuery, na CLI/CI que renderiza e submete jobs; BigQuery e Workflows executam artefatos nativos. |
| ContractForge AI | contractforge-core + contractforge-ai pelo PyPI, mais os adaptadores que serão validados. | Ambiente Python local ou de CI. | Wheels são úteis para validar builds ainda não publicados. ZIP não é usado. | No processo de planejamento/revisão com IA; o core determinístico e os planners dos adaptadores continuam validando cada projeto gerado. |
Comandos dos adaptadores após instalar
Cada adaptador expõe seu próprio CLI, mas os nomes dos comandos seguem o mesmo vocabulário:
| Plataforma | CLI |
|---|---|
| Databricks | contractforge-databricks |
| AWS | contractforge-aws |
| Snowflake | contractforge-snowflake |
| Fabric | contractforge-fabric |
| GCP | contractforge-gcp |
Exemplos:
contractforge validate contracts/bronze/b_orders.ingestion.yaml
contractforge-databricks render-project-bundle examples/real-world/usgs-earthquake-rest-medallion/project.yaml
contractforge-aws deploy-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --run --wait
contractforge-snowflake deploy-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --dry-run --summary-only
contractforge-fabric run-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --environment-key fabric
contractforge-gcp deploy-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --deploy-orchestration --run-orchestration --wait-orchestration --readback-orchestration
Desenvolvimento neste repositório
Para desenvolvimento local, construa cada pacote de forma independente:
uv build --wheel
cd adapters/databricks
uv build --wheel
cd ../aws
uv build --wheel
cd ../snowflake
uv build --wheel
cd ../fabric
uv build --wheel
cd ../gcp
uv build --wheel
cd ../../ai
uv build --wheel
O Core não deve depender dos SDKs do adaptador. As rodas adaptadoras dependem
contractforge-core e possuem suas dependências específicas da plataforma.