Files
sicabe-core/deploy/docker/airflow/requirements.in
T

72 lines
3.8 KiB
Plaintext
Raw Normal View History

2026-10-09 02:35:14 +07:00
# =============================================================================
# eBdesk SiCABE — dependensi top-level image Airflow (strategi S1: satu env)
# =============================================================================
# File ini adalah SUMBER (input) untuk `uv pip compile`. Jangan tambahkan pin
# hasil ke sini — hasilnya ada di requirements.lock.
#
# Regenerasi lock (lihat juga header deploy/docker/airflow/Dockerfile):
# docker run --rm -v "$PWD/deploy/docker/airflow:/w" apache/airflow:3.3.1-python3.11 \
# bash -lc 'pip -q install uv && uv pip compile /w/requirements.in --output-file /w/requirements.lock'
#
# ✅ Extra `[airflow]` WAJIB dipakai sejak OpenMetadata 2.0.2.
# Di OM 1.13.x extra itu mem-pin `apache-airflow==3.2.1` sehingga menurunkan
# Airflow; di OM 2.0.2 extra yang sama mem-pin `apache-airflow==3.3.1` — sama
# persis dengan versi terbaru dan base image kita. Diuji di experiments/om20x.
# =============================================================================
apache-airflow==3.3.1
# Provider Airflow yang dipakai DAG / konektor
apache-airflow-providers-trino
apache-airflow-providers-amazon
apache-airflow-providers-http
# WAJIB: Postgres adalah metadata DB Airflow (postgresql+psycopg2://) — tanpa
# driver-nya container gagal start. Base `slim` TIDAK membawanya.
apache-airflow-providers-postgres
# ─── PIN WAJIB: melindungi plugin OpenMetadata dari kerusakan SENYAP ─────────
# SQLAlchemy 2.1 mematahkan rantai:
# flask_appbuilder -> sqlalchemy_utils -> sqlalchemy.orm.attributes
# AttributeError: module 'sqlalchemy.orm.attributes' has no attribute
# 'ScalarAttributeImpl'
# Akibatnya plugin `openmetadata-managed-apis` GAGAL DIMUAT saat Airflow start
# (log hanya berbunyi "Failed to import plugin openmetadata_managed_apis"),
# sehingga tombol "Test Connection" dan jalur pipeline service client
# (docs/sicabe-install-phases-detail.md §8.11) mati — dengan pesan yang TIDAK
# menyebut SQLAlchemy sama sekali.
# Lock saat ini memakai 2.0.54 HANYA karena di-resolve ketika 2.1 belum ada;
# tanpa pin ini, regenerasi lock berikutnya akan menarik 2.1.x dan mematahkannya.
# ⚠️ Berkas constraints RESMI Airflow pun TIDAK mem-pin sqlalchemy — jadi hanya
# pin eksplisit inilah yang melindungi.
# Ditemukan & dibuktikan di experiments/airflow332 — lihat reviews/sicabe-18.
sqlalchemy<2.1
# Transformasi & data quality
# dbt-core<1.12: 1.12.x menarik `dbt-core-experimental-parser` yang sdist-only
# (tanpa wheel) sehingga memaksa build dari source. 1.11.x tidak.
dbt-core<1.12
dbt-trino>=1.8,<2.0
great_expectations>=1.0,<2.0
# Metadata ingestion
# WAJIB sama dengan versi server OpenMetadata (deploy/ = 2.0.2).
# Extra `[airflow]` membawa plugin-side deps + provider elasticsearch/opensearch.
# Extra `[pii-processor]` (presidio + spacy) dibutuhkan agar DAG yang DIBANGKITKAN
# plugin OpenMetadata untuk pipeline TestSuite bisa diimpor Airflow: DAG tsb
# mengimpor workflow ingestion yang menyentuh presidio_analyzer. Tanpa extra ini
# deploy pipeline gagal dengan:
# Failed to import dag_file [.../sicabe_dq_gold_native.py]: No module named 'presidio_analyzer'
openmetadata-ingestion[airflow,pii-processor]==2.0.2.0
# Plugin REST API OpenMetadata yang disajikan Airflow di prefix /pluginsv2/.
# Inilah yang di-probe server OM (GET /pluginsv2/api/v2/openmetadata/health-auth)
# dan yang menghidupkan tombol "Test Connection" di UI — lihat
# docs/sicabe-install-phases-detail.md §8.11.
openmetadata-managed-apis==2.0.2.0
# Lineage dbt (bronze→silver→gold) di OpenMetadata.
# Extra `[dbt]` dari openmetadata-ingestion memerlukan paket ini untuk membaca
# artefak dbt (manifest.json/catalog.json). Tanpa ini, workflow dbt gagal dengan
# "No module named 'collate_dbt_artifacts_parser'" dan lineage tidak terbentuk.
collate-dbt-artifacts-parser==0.1.4