Metadata-Version: 2.5
Name: berg-iceberg
Version: 1.0.1
Summary: A developer and operational management layer for Apache Iceberg.
Requires-Python: <3.15,>=3.13
Requires-Dist: filelock<4,>=3.18
Requires-Dist: psycopg2-binary<3,>=2.9
Requires-Dist: pyarrow<24,>=19
Requires-Dist: pydantic<3,>=2.11
Requires-Dist: pyiceberg[glue,hive,s3fs,sql-postgres]<0.12,>=0.11.1
Requires-Dist: pyyaml<7,>=6.0
Requires-Dist: rich<15,>=14
Requires-Dist: typer<0.28,>=0.27.2
Description-Content-Type: text/markdown

# Berg

Berg is a developer and operational management layer for Apache Iceberg.

The v1 foundation provides discovery, health, desired-state planning, guarded
execution, customer-local Agent execution, and capability-aware Iceberg
maintenance for approved metadata operations. Snapshot expiration is
supported only where the configured backend exposes a complete Iceberg
snapshot history.

## Quick start

Install [uv](https://docs.astral.sh/uv/), then:

```bash
uv sync --group dev
export BERG_MINIO_USER='choose-a-local-user'
export BERG_MINIO_PASSWORD='choose-a-local-password'
export AWS_ACCESS_KEY_ID="$BERG_MINIO_USER"
export AWS_SECRET_ACCESS_KEY="$BERG_MINIO_PASSWORD"
docker compose up -d
uv run berg connect
uv run berg scan
uv run berg inspect analytics.events
uv run berg health analytics.events
```

Use `--output json` for automation. See `docs/local-development.md` for the
local catalog and fixture workflow.

For a complete local acceptance check, run `make local-clean-start`. This
explicitly resets only the project Docker volume, recreates fixtures, and
verifies the full local workflow.

Desired state is expressed as a versioned `berg.dev/v1` Table document. Use
`berg validate-spec table.yaml`, `berg diff table.yaml`, or
`berg plan --spec table.yaml` to inspect and plan declared changes.

Python users can author the same canonical document with
`berg.sdk.TableDefinition`; see `docs/python-api.md`.

For customer-local automation, use the one-shot Agent container. Mount a Berg
configuration, approved plan, state directory, and audit directory, then run
`berg agent apply`; see `docker-compose.agent.yml` for the deployment shape.

Scope boundaries are documented in [V0_SCOPE.md](V0_SCOPE.md) and the proposed
next product contract is in [V1_SCOPE.md](V1_SCOPE.md).

The guarded execution slice supports explicitly approved properties, nullable
schema additions, additive partition fields, snapshot expiration where
certified, and age/reference-guarded orphan cleanup. Compaction and destructive
changes remain intentionally unsupported.
