Metadata-Version: 2.1
Name: hera-sdk
Version: 1.12.6.10
Summary: Hera SDK - rebranded metadata client and ingestion runtime for Hera/OpenMetadata
Author: TMDC
License: MIT License
        
        Copyright (c) 2026 TMDC
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://dataos.info/
Project-URL: Source, https://github.com/tmdc-io/hera2
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: antlr4-python3-runtime ==4.11.1
Requires-Dist: cryptography >=42.0.0
Requires-Dist: email-validator >=2.0
Requires-Dist: httpx ~=0.28.0
Requires-Dist: importlib-metadata >=4.13.0
Requires-Dist: Jinja2 >=2.11.3
Requires-Dist: jsonpatch <2.0,>=1.24
Requires-Dist: memory-profiler
Requires-Dist: mypy-extensions >=0.4.3
Requires-Dist: packaging
Requires-Dist: pydantic <2.12,>=2.7.0,~=2.0
Requires-Dist: pydantic-settings >=2.7.0,~=2.0
Requires-Dist: python-dateutil >=2.8.1
Requires-Dist: python-dotenv >=0.19.0
Requires-Dist: PyYAML ~=6.0
Requires-Dist: requests >=2.23
Requires-Dist: requests-aws4auth ~=1.1
Requires-Dist: tabulate ==0.9.0
Requires-Dist: typing-inspect
Requires-Dist: setuptools <81,>=78.1.1
Requires-Dist: cached-property ==1.5.2
Requires-Dist: chardet ==4.0.0
Requires-Dist: jaraco.functools <4.2.0
Requires-Dist: jaraco.context ==6.0.1
Requires-Dist: cachetools
Requires-Dist: azure-identity >=1.12
Requires-Dist: azure-keyvault-secrets
Requires-Dist: boto3 ==1.37.1
Requires-Dist: google-cloud-secret-manager ==2.24.0
Requires-Dist: google-crc32c
Requires-Dist: kubernetes >=21.0.0
Requires-Dist: sqlalchemy <2,>=1.4.0
Requires-Dist: pymysql ~=1.0
Requires-Dist: snowflake-connector-python ==3.14.0
Requires-Dist: shapely
Requires-Dist: collate-sqllineage >=2.0.0
Requires-Dist: pandas <3,>=2.0
Requires-Dist: pyarrow >=14.0
Requires-Dist: numpy >=1.21
Requires-Dist: presidio-analyzer ==2.2.358
Requires-Dist: spacy <4,>=3.4
Requires-Dist: pyhive[hive_pure_sasl] >=0.7
Requires-Dist: mysql-connector-python >=8.0.29 ; python_version < "3.9"
Requires-Dist: mysql-connector-python >=9.1 ; python_version >= "3.9"

# hera-sdk

A rebranded distribution of the Hera (OpenMetadata) Python ingestion runtime,
published as `hera-sdk`. Consumers (Vulcan, Nilus, etc.) depend on `hera-sdk`
instead of `hera-ingestion` and import from the `hera_sdk.*` namespace.

## How it is built

This directory is **not** the SDK source. The SDK source lives under
`ingestion/src/metadata/` and is shared with `hera-ingestion`. At build time
[`build.py`](./build.py) stages a copy of the metadata package, rewrites the
top-level package name `metadata` -> `hera_sdk`, drops a slim
[`pyproject.toml.template`](./pyproject.toml.template) into the stage and
runs `python -m build --wheel`.

The standard wrapper:

```sh
cd hera/
make hera-sdk
# wheel ends up in .build/hera-sdk-stage/dist/
```

`make hera-sdk` is a strict superset of `make generate`, so the wheel always
ships freshly regenerated Pydantic models and ANTLR parsers under
`hera_sdk/generated/`. The original ingestion wheel (`hera-ingestion`) is
still available via `make hera-ingestion`.

## Consumer migration

### Dependency change

```diff
- "hera-ingestion==1.12.3.8"
+ "hera-sdk>=1.12.6"
```

### Imports change

A single mechanical pass per repo:

```diff
- from metadata.ingestion.ometa.ometa_api import OpenMetadata
- from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
-     AuthProvider, OpenMetadataConnection,
- )
- from metadata.ingestion.sink.metadata_rest import MetadataRestSink
+ from hera_sdk.ingestion.ometa.ometa_api import OpenMetadata
+ from hera_sdk.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
+     AuthProvider, OpenMetadataConnection,
+ )
+ from hera_sdk.ingestion.sink.metadata_rest import MetadataRestSink
```

Inner directories named `metadata/` (e.g. `generated/.../connections/metadata/`)
are **not** renamed - only the top-level package becomes `hera_sdk`.

For Vulcan: `sqlmesh/core/hera/*.py` (~10 files).
For Nilus: `ingestr/src/hera_ingestion/**/*.py` and `ingestr/src/destinations.py`.

## Why "compatibility-first"

Nilus and Vulcan exercise a wide surface area today (ometa, sink, sql_lineage,
profiler, sampler, pii, secrets manager). The wheel therefore ships the full
metadata package tree and a dependency set aligned with the existing working
`hera-ingestion` 1.12.3.x baseline, plus the families consumers use at
runtime (`pandas`, `pyarrow`, `presidio-analyzer`, `spacy`, `pyhive`,
`collate-sqllineage`, `snowflake-connector-python`, etc.).

Aggressive pruning is intentionally deferred until consumer-backed tests
confirm a smaller surface is safe.

## Files in this directory

| File | Purpose |
| --- | --- |
| `build.py` | Staging + rename + `python -m build --wheel` |
| `MANIFEST.txt` | Paths from `ingestion/src/metadata/` to ship (currently `**`) |
| `pyproject.toml.template` | Template for the staged wheel's `pyproject.toml` |
| `__init__.py` | Dev-time placeholder; not shipped |
| `README.md` | This file |

## Verification

`build.py` runs an automatic smoke test after producing the wheel. It creates
a throwaway venv at `<stage>/.venv-verify`, installs the freshly built wheel,
and imports the modules Nilus and Vulcan depend on (ometa, MetadataRestSink,
sql_lineage, profiler, sampler, pii, generated schema + ANTLR). Build fails
loud if any of these break.
