{"library":"openmetadata-ingestion","title":"OpenMetadata Ingestion Framework","description":"OpenMetadata Ingestion is a Python framework designed to build connectors and ingest metadata from various external systems into an OpenMetadata instance via its APIs. It is commonly used within orchestration frameworks like Apache Airflow to automate metadata extraction and is actively maintained with frequent releases, often tied to OpenMetadata server versions. The current version is 1.12.5.1.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install \"openmetadata-ingestion==1.12.5.1\"","pip install \"openmetadata-ingestion[all]==1.12.5.1\"","pip install \"openmetadata-ingestion[postgres,snowflake]==1.12.5.1\""],"cli":{"name":"metadata","version":"Traceback (most recent call last):"}},"imports":["from metadata.workflow.metadata import MetadataWorkflow","from metadata.ingestion.ometa.ometa_api import OpenMetadata"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport yaml\nfrom metadata.workflow.metadata import MetadataWorkflow\n\n# Define your OpenMetadata server connection and authentication\n# It's recommended to use environment variables for sensitive data like JWT tokens\nopenmetadata_server_config = {\n    \"hostPort\": \"http://localhost:8585/api\",\n    \"authProvider\": \"openmetadata\",\n    \"securityConfig\": {\n        \"jwtToken\": os.environ.get('OPENMETADATA_JWT_TOKEN', 'YOUR_OM_JWT_TOKEN_HERE')\n    }\n}\n\n# Example: A minimal YAML configuration for ingesting metadata from a dummy source\n# In a real scenario, this would be a full connector config (e.g., MySQL, Snowflake)\nworkflow_config_yaml = f\"\"\"\nsource:\n  type: \"sample-data\"\n  serviceName: \"sample_metadata\"\nsink:\n  type: \"metadata-rest\"\n  config: {}\nworkflowConfig:\n  openMetadataServerConfig:\n    hostPort: {openmetadata_server_config['hostPort']}\n    authProvider: {openmetadata_server_config['authProvider']}\n    securityConfig:\n      jwtToken: {openmetadata_server_config['securityConfig']['jwtToken']}\n\"\"\"\n\n# Load the YAML configuration\nworkflow_config = yaml.safe_load(workflow_config_yaml)\n\n# Create and execute the workflow\nprint(\"Starting Metadata Ingestion Workflow...\")\nworkflow = MetadataWorkflow.create(workflow_config)\ntry:\n    workflow.execute()\n    print(\"Metadata Ingestion Workflow completed successfully.\")\nexcept Exception as err:\n    print(f\"Error during metadata ingestion: {err}\")\nfinally:\n    workflow.print_status()\n    workflow.stop()\n","lang":"python","description":"This quickstart demonstrates a basic metadata ingestion workflow using the `MetadataWorkflow` class. It shows how to define a minimal workflow configuration in YAML, including the OpenMetadata server connection details and using an environment variable for the JWT token for authentication. Replace `sample-data` with your actual connector configuration (e.g., `mysql`, `snowflake`). Ensure your OpenMetadata server is running and accessible.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"1.12.5.1","pypi_latest":"1.12.8.4","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":27,"avg_install_s":36.8,"avg_import_s":null,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"postgres,snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":41.3,"import_time_s":null,"mem_mb":null,"disk_size":"532M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":52.2,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"postgres,snowflake","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":41.2,"import_time_s":null,"mem_mb":null,"disk_size":"544M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"postgres,snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":37,"import_time_s":null,"mem_mb":null,"disk_size":"573M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":22.8,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"postgres,snowflake","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":38.1,"import_time_s":null,"mem_mb":null,"disk_size":"586M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"postgres,snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":33.2,"import_time_s":null,"mem_mb":null,"disk_size":"562M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":25.5,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"postgres,snowflake","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":34.1,"import_time_s":null,"mem_mb":null,"disk_size":"575M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"postgres,snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":34.3,"import_time_s":null,"mem_mb":null,"disk_size":"560M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":10.6,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"postgres,snowflake","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":35,"import_time_s":null,"mem_mb":null,"disk_size":"573M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"postgres,snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"\"openmetadata-ingestion==1.12.5.1\"","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":5,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"all","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":5.1,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"postgres,snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":6.5,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}