fix: show helpful error when hive catalog config is missing uri (#3077)
Closes #3069
# Rationale for this change
When a catalog is explicitly configured with `type: hive` but `uri` is
missing in `.pyiceberg.yaml`,
the CLI currently fails with a raw `KeyError('uri')`, which is surfaced
as just:
`'uri'`
```bash
❯ cat .pyiceberg.yaml
catalog:
my_hive_catalog:
type: hive
warehouse: warehouse_loc
❯ uv run pyiceberg --catalog my_hive_catalog list
'uri'
```
It's confusing for users because the command appears to return an
identifier-like value instead of
a configuration error.
This change adds explicit validation for required catalog properties
when the catalog type is already
specified (e.g. `hive`, `rest`, `sql`), so users get a clear actionable
error message instead.
## Are these changes tested?
Yes.
- Added a CLI regression test for `--catalog <name> list` with `type:
hive` and missing `uri`
- Verified the error output contains a helpful `URI missing...` message
and no longer prints `'uri'`
## Are there any user-facing changes?
Yes.
Users now see a clear error message (for example):
`URI missing, please provide using --uri, the config or environment
variable PYICEBERG_CATALOG__<CATALOG_NAME>__URI`
instead of a raw `'uri'` error when `type: hive` is configured without
`uri`.PyIceberg is a Python library for programmatic access to Iceberg table metadata as well as to table data in Iceberg format. It is a Python implementation of the Iceberg table spec.
The documentation is available at https://py.iceberg.apache.org/.