Skip to content

feat(dag-selector): implementar seleção de DAGs via arquivo dag_selector - #2

Open
luizatrigueiro wants to merge 1 commit into
mainfrom
feat/dag-selector
Open

feat(dag-selector): implementar seleção de DAGs via arquivo dag_selector#2
luizatrigueiro wants to merge 1 commit into
mainfrom
feat/dag-selector

Conversation

@luizatrigueiro

Copy link
Copy Markdown

Descrição

Implementa o mecanismo de seleção de DAGs por deployment definido na
ADR-0005: um arquivo dag_selector na raiz de airflow/dags/ funciona
como allowlist por caminho (lógica invertida a um .airflowignore),
lido pelo módulo dag_discovery.py e plugado no parser do Airflow via
AIRFLOW__CORE__MIGHT_CONTAIN_DAG_CALLABLE.

Cada deployment de órgão poderá declarar, nesse arquivo, quais pastas/
arquivos de DAG devem ser carregados — o resto é ignorado antes mesmo
de o Airflow importar o conteúdo Python, sem custo de parsing.

O dag_selector inicial está com * (inclui tudo), fica
pronto para ser preenchido conforme órgãos forem configurados.

Também corrige um efeito colateral encontrado em tests/unit/conftest.py:
o módulo airflow estava sendo totalmente substituído por um mock para
toda a suíte de testes, o que impedia importar submódulos reais
necessários aqui (airflow.configuration, airflow.utils.file).

Antes de abrir este PR, consulte o Protocolo de Aprovação de Pull Requests.

Tipo de mudança

  • Nova funcionalidade / pipeline
  • Correção de bug ou inconsistência de dados
  • Refatoração de modelo DBT
  • Documentação
  • Infraestrutura / CI
  • Outro: ___

Domínio de revisão

  • GCES / OSS
  • IPEA
  • MIR
  • MCid
  • MinC
  • OSS
  • Múltiplos domínios: infraestrutura do framework, não específico de um órgão

Como testar / validar

uv run pytest tests/unit/test_dag_discovery.py -v
make test
make lint

Evidências

Testes unitários passando, cobrindo: arquivo ausente, marcador *,
comentários/linhas vazias, pasta incluída não propaga pra subpasta,
subpasta declarada explicitamente, arquivo fora de dags_folder, e
recarregamento automático após mudança no arquivo.

Checklist

  • Título do PR segue Conventional Commits
  • Issue relacionada foi referenciada
  • Testes/lint foram executados ou a ausência foi justificada
  • Testes DBT adicionados/atualizados, se aplicável
  • Documentação atualizada, se aplicável
  • Sem dados sensíveis ou credenciais no código
  • Branch atualizada com upstream/main ou origin/main
  • Revisores automáticos por domínio foram solicitados pelo GitHub ou justificados no PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant