{"id":26704,"library":"airflow-metaplane","title":"Metaplane Airflow Provider","description":"Metaplane Airflow Provider integrates Metaplane monitoring into Apache Airflow, enabling automatic data observability checks (field health, volume, freshness) as part of DAG runs. Current version 0.0.6 (alpha), with an unstable API and sparse documentation. Release cadence is irregular.","status":"active","version":"0.0.6","language":"python","source_language":"en","source_url":"https://github.com/metaplane/airflow-metaplane","tags":["airflow","metaplane","provider","observability","data-quality"],"install":[{"cmd":"pip install airflow-metaplane","lang":"bash","label":"Standard install"}],"dependencies":[],"imports":[{"note":"Not an official Airflow provider; package uses its own namespace.","wrong":"from airflow.providers.metaplane import MetaplaneOperator","symbol":"MetaplaneOperator","correct":"from airflow_metaplane.operators.metaplane import MetaplaneOperator"}],"quickstart":{"code":"import os\nfrom datetime import datetime, timedelta\nfrom airflow import DAG\nfrom airflow_metaplane.operators.metaplane import MetaplaneOperator\n\ndefault_args = {\n    'owner': 'airflow',\n    'depends_on_past': False,\n    'email_on_failure': False,\n    'email_on_retry': False,\n    'retries': 1,\n    'retry_delay': timedelta(minutes=5),\n}\n\nwith DAG(\n    'metaplane_dag',\n    default_args=default_args,\n    description='A simple Metaplane DAG',\n    schedule_interval=timedelta(days=1),\n    start_date=datetime(2021, 1, 1),\n    catchup=False,\n    tags=['example'],\n) as dag:\n\n    check = MetaplaneOperator(\n        task_id='metaplane_check',\n        metaplane_api_key=os.environ.get('METAPLANE_API_KEY', ''),\n        metaplane_api_secret=os.environ.get('METAPLANE_API_SECRET', ''),\n        connection_id=123,\n        checks='[\"field_health\", \"row_count\"]',\n    )\n","lang":"python","description":"Minimal DAG that runs Metaplane checks using the operator. Replace connection_id and checks as needed. Set METAPLANE_API_KEY and METAPLANE_API_SECRET environment variables."},"warnings":[{"fix":"Pin to exact version and test after upgrades.","message":"Operator parameters may change without notice. The operator currently accepts `metaplane_api_key`, `metaplane_api_secret`, `connection_id`, `checks`, `timeout`, and `retry`. No stable release yet.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Always pass a JSON string, e.g., `checks='[\"field_health\", \"row_count\"]'`.","message":"The `checks` parameter expects a JSON string (list) but some users pass a Python list. This is not backward compatible.","severity":"deprecated","affected_versions":"0.0.x"},{"fix":"Install `pip install airflow-metaplane`, import `from airflow_metaplane`.","message":"Package name is `airflow-metaplane` but imports use `airflow_metaplane` (underscore). Confusion with underscore/hyphen is common.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install package: `pip install airflow-metaplane`. Then import: `from airflow_metaplane.operators.metaplane import MetaplaneOperator`.","cause":"Attempted to import with incorrect module name (hyphen instead of underscore) or package not installed.","error":"ModuleNotFoundError: No module named 'airflow_metaplane'"},{"fix":"Wrap the list in json.dumps or use a string literal: `checks='[\"field_health\"]'`.","cause":"Passed a Python list to the `checks` parameter instead of a JSON string.","error":"TypeError: the JSON object must be str, bytes or bytearray, not list"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}