Installation ============ Requirements: Python 3.10+ There are three ways to install metapod depending on your environment. From PyPI (released version) ---------------------------- If you have internet access and want the latest stable release: .. code-block:: bash pip install metapod-probes This gives you file scanners (CSV, JSON, Parquet, Avro), Excel, dbt, SQLite, and Python transform probes - no database drivers needed. From source (local development) ------------------------------- If you cloned the repository or want to modify the code locally: .. code-block:: bash # Clone the repository git clone https://github.com/mario-ambrosino/metapod.git cd metapod # Editable install - code changes take effect immediately pip install -e "." # With development tools (pytest, ruff) pip install -e ".[dev]" # With specific extras (e.g. Azure + Soda) pip install -e ".[azure,soda]" # Verify metapod list-probes The ``-e`` (editable) flag means Python uses your local source directory directly. You don't need to reinstall after modifying code. **Running without installing** - if you just want to try it without pip: .. code-block:: bash git clone https://github.com/mario-ambrosino/metapod.git cd metapod python cli.py list-probes python cli.py run "sqlite.*" --config config.yaml This works because ``cli.py`` adds the project root to ``sys.path``. However, the ``metapod`` command won't be available in your PATH. Air-gapped install (no internet) -------------------------------- For environments where outbound traffic is blocked (corporate networks, secure zones, Azure private endpoints): **Step 1** - On a machine WITH internet, build the offline bundle: .. code-block:: bash git clone https://github.com/mario-ambrosino/metapod.git cd metapod bash scripts/build_airgapped.sh # core only bash scripts/build_airgapped.sh --extras azure # with Azure SDKs This creates ``dist/metapod-probes-airgapped-X.Y.Z.tar.gz`` containing the wheel + all dependencies + install scripts. **Step 2** - Transfer the tarball (USB, internal share, whatever works). **Step 3** - On the air-gapped machine: Linux / Mac: .. code-block:: bash tar xzf metapod-probes-airgapped-*.tar.gz cd metapod-probes-airgapped-*/ bash install.sh Windows PowerShell: .. code-block:: powershell Expand-Archive metapod-probes-airgapped-*.tar.gz cd metapod-probes-airgapped-*/ . .\install.ps1 For Presidio PII detection in air-gapped mode, also download the spaCy model on the connected machine: .. code-block:: bash pip download en_core_web_lg -d ./models/ # Transfer models/ to air-gapped machine, then: pip install --no-index --find-links ./models/ en_core_web_lg Database extras --------------- .. code-block:: bash pip install 'metapod-probes[oracle]' # Oracle (oracledb) pip install 'metapod-probes[postgres]' # PostgreSQL (psycopg2) pip install 'metapod-probes[snowflake]' # Snowflake pip install 'metapod-probes[bigquery]' # Google BigQuery pip install 'metapod-probes[mysql]' # MySQL / MariaDB pip install 'metapod-probes[db2]' # IBM DB2 pip install 'metapod-probes[duckdb]' # DuckDB pip install 'metapod-probes[mongodb]' # MongoDB pip install 'metapod-probes[elasticsearch]' # Elasticsearch Cloud extras ------------ .. code-block:: bash pip install 'metapod-probes[azure]' # Azure (ADLS, Blob, ADF, File Share) pip install 'metapod-probes[aws]' # AWS (S3) Quality, profiling, and compliance extras ----------------------------------------- .. code-block:: bash pip install 'metapod-probes[soda]' # Soda Core (data quality checks) pip install 'metapod-probes[ydata]' # YData Profiling (statistics, anomalies) pip install 'metapod-probes[presidio]' # Presidio PII (~75 entity types) Everything ---------- .. code-block:: bash pip install 'metapod-probes[all]' Verify ------ .. code-block:: bash metapod list-probes # Should show 197 probes across 49 sources