Este é um projeto de exemplo que demonstra o uso de Bazel para gerenciar um monorepo com Python.
Important
Requer o uso de uv para Python environment management.
.
├── bazel-bazel-simple # Diretório gerado pelo Bazel
├── bazel-bin # Saída dos builds
├── bazel-out # Cache e artefatos do Bazel
├── bazel-testlogs # Logs de testes
├── packages/ # Módulos Python (libs)
├── api/ # FastApi Workspace
├── apache-airflow/ # Airflow onde cada dag Workspace
├── prefect-core/ # Prefect data pipelines Workspace
├── BUILD.bazel # Configuração do Bazel
├── MODULE.bazel # Definição do módulo Bazel
├── pyproject.toml # Configuração do projeto Python
UV
uv venv
uv sync
Bazel
bazel run //:create_venv
bazel run //:sync_venv
Para gerar o arquivo requirements.txt
a partir do pyproject.toml
, execute:
bazel run //:generate_requirements_txt
Para compilar o projeto, utilize o seguinte comando:
bazel build //...
Para rodar os testes do projeto, utilize:
bazel test //...
Rodando os testes unitarios
bazel run //apache-airflow/dag/simple-dag:dag_test
Rodando a adaptacao para ambiente local
bazel run //apache-airflow/dag/simple-dag:dag_dev
Veja a doc de apache-airflow/dag/docker-operator-dag/
Dependencias usando constraints
uv add "pytest"\
"apache-airflow>=2.10.5"\
"apache-airflow-providers-postgres"\
"apache-airflow-providers-common-sql"\
"apache-airflow-providers-sqlite"\
--constraint .deps/apache-airflow-2.10.5-constraints-python-3.12.txt