Skip to main content

Lightweight metadata extraction probes — 191 probes across 47 data sources

Project description

metapod

PyPI version Python Tests Probes Tested Docs License Probes Sources

Lightweight metadata extraction probes. 185 probes across 42 data sources in 9 categories — metadata, governance, quality, profiling, operations, compliance, cost, schema history, and lineage.

Runs inside your network. Extracts only metadata — no raw data leaves the perimeter.

Install

pip install metapod-probes                     # Core (file scanners, BI tools)
pip install 'metapod-probes[oracle]'           # + Oracle
pip install 'metapod-probes[snowflake]'        # + Snowflake
pip install 'metapod-probes[azure]'            # + Azure (ADLS, Blob, ADF)
pip install 'metapod-probes[all]'              # Everything

Quick start

metapod init                                    # Generate config.yaml
metapod list-probes                             # Show all 155 probes
metapod run "oracle.*" --schema RISK_MGMT       # Extract Oracle metadata
metapod push --target https://your-platform.com --project myproject  # Send results
metapod serve --port 9090                       # Pull-mode daemon

Supported sources (40)

Databases (15)

Source Probes Driver
Oracle 18 oracledb
PostgreSQL 10 psycopg2
Snowflake 5 snowflake-connector
BigQuery 5 google-cloud-bigquery
SQL Server / Azure SQL 5 pyodbc
MySQL 4 pymysql
IBM DB2 4 ibm_db
MariaDB 2 pymysql
SAP HANA 2 hdbcli
Teradata 2 teradatasql
DuckDB 3 duckdb
Trino 3 trino
SQLite 2 stdlib
MongoDB 1 pymongo
Elasticsearch 1 elasticsearch

Cloud platforms (7)

Source Probes API
Databricks Unity Catalog 6 REST API
Azure Data Factory 5 Azure Management API
ADLS Gen2 4 azure-storage-file-datalake
Azure Blob Storage 3 azure-storage-blob
Azure File Share 3 azure-storage-file-share
AWS S3 3 boto3
Oracle Cloud (OCI) 3 oci-python-sdk

BI tools (4)

Source Probes Method
Power BI 6 .pbit/.pbix ZIP parsing
Excel 6 .xlsx OOXML (table detector + formula lineage)
Tableau 5 .twb/.twbx XML parsing
Qlik Sense/View 3 .qvf SQLite / .qvw binary

ETL / Orchestration (6)

Source Probes Method
Informatica PowerCenter 5 Repository XML export
Informatica Cloud (IICS) 4 REST API v2/v3
Oracle Data Integrator 3 Smart Export XML
Airflow 3 REST API
Alteryx 2 .yxmd XML parsing
dbt 3 manifest.json parsing

Governance platforms (4)

Source Probes Direction
Collibra 3 Bidirectional
Microsoft Purview 3 Bidirectional
Blindata 3 Bidirectional
Witboost 2 Bidirectional

Files / Other (4)

Source Probes Method
File Scanner 5 Local filesystem (auto-dispatch + CSV/JSON/Parquet schema)
SharePoint / OneDrive 3 Local sync / REST / Graph API
Python Transforms 1 AST-based pandas/PySpark detection
Avro 1 Header-only schema reading

Architecture

Customer network (VPN / Azure / on-prem)
┌─────────────────────────────────────────────┐
│  metapod                                     │
│  ├── 155 probes across 40 sources           │
│  ├── Push mode: metapod push --target URL    │
│  ├── Pull mode: metapod serve --port 9090    │
│  └── File mode: metapod run → ./output/      │
└──────────────────┬──────────────────────────┘
                   │ outbound HTTPS only
                   ▼
         Any metadata consumer
  • Zero inbound access — only outbound HTTPS
  • No raw data — only metadata (schema, statistics, descriptions)
  • Local-first — results written to ./output/ before push
  • Config-driven — YAML with ${ENV_VAR} substitution

Commands

metapod run "oracle.*"                          # Extract
metapod push --target URL --project ID          # Push to platform
metapod serve --port 9090                       # Pull-mode daemon
metapod list-probes                             # Show all probes
metapod diff                                    # Compare extractions
metapod schedule "oracle.*" --cron "0 6 * * *"  # Cron schedule
metapod init                                    # Generate config

Adding a probe

from core.base_probe import BaseProbe
from core.registry import register

@register
class MyProbe(BaseProbe):
    @staticmethod
    def probe_name() -> str:
        return "mydb.metadata.tables"

    @staticmethod
    def description() -> str:
        return "Extract table metadata"

    def execute(self, connection, schema: str, **kwargs) -> list[dict]:
        # Your extraction logic here
        return [{"table_name": "example"}]

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metapod_probes-0.4.0.tar.gz (144.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metapod_probes-0.4.0-py3-none-any.whl (268.0 kB view details)

Uploaded Python 3

File details

Details for the file metapod_probes-0.4.0.tar.gz.

File metadata

  • Download URL: metapod_probes-0.4.0.tar.gz
  • Upload date:
  • Size: 144.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for metapod_probes-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ef0c3f7e0dc18cd30da61998a408f68f29c87da4be2e667a98ebf9a44b35f113
MD5 3ce878dd620ae5381a1ff1ec88a18e28
BLAKE2b-256 14785b2a1ee6b5e3bbd93fe2ea96a0d6bf3d5db3a53da67a3e2def08c776b922

See more details on using hashes here.

Provenance

The following attestation bundles were made for metapod_probes-0.4.0.tar.gz:

Publisher: publish.yml on mario-ambrosino/metapod

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file metapod_probes-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: metapod_probes-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 268.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for metapod_probes-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 da6694df9825d181edd81f4d8e434a3663f169a3f8877a15b11183ffd21f3f51
MD5 b354a81a90e20ce561ec45e1529ba842
BLAKE2b-256 ffa4b6eda74c2b1552888633dcc3c8da887e4f84bfae7710e097f7deaa26ea0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for metapod_probes-0.4.0-py3-none-any.whl:

Publisher: publish.yml on mario-ambrosino/metapod

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page