HonahX commented on issue #938:
URL: https://github.com/apache/iceberg-python/issues/938#issuecomment-2235570532

   > But maybe there is value allowing load_catalog to parse properties for 
custom catalogs for ease of use.
   
   +1. I think it is beneficial for `load_catalog` to support additional 
methods for fetching catalog implementations and initializing them with 
properties parsed from ~/.pyiceberg.yaml, PYICEBERG__* environment variables, 
and parameters would be highly beneficial.
   
   For example, it would allow users to define custom catalogs in the following 
way:
   ```yaml
   custom:
       py-catalog-impl: example.catalog.ExampleCatalog
       custom.property-a: a
       custom.property-b: b
   ```
   Then, they can load the catalog in their code with:
   ```python
   catalog = load_catalog("custom")
   ```
   
   IMO, `load_catalog` should serve as the primary entry point for users to 
initialize catalog instances. Extending its capabilities to support loading 
custom implementations could make non-rest private catalog implementations also 
benefit from the util.
   
   
   Inspired by the discussions of custom implementation of `Catalog` interface, 
I think we can also consider to make `_commit_table` public
   
https://github.com/apache/iceberg-python/blob/301e336926d950f1d3424b8f87423504150368e0/pyiceberg/catalog/__init__.py#L459-L473
   
   `_commit_table` is crucial if user wants to use the custom catalog 
implementation to update table. Although in python there is no real "private" 
method, making this one public could make it clear that custom catalog need to 
implement this one to enable the usage of transaction and other places where 
table updates take place. On the doc side, it will be good if `_commit_table` 
could show up in the [Catalog Code 
Reference](https://py.iceberg.apache.org/reference/pyiceberg/catalog/#pyiceberg.catalog.Catalog).
 
   
   We may also add some guide like [Java Custom 
Catalog](https://iceberg.apache.org/docs/nightly/custom-catalog/), especially 
for `_commit_table` which is very different from [Java Catalog's 
commit](https://github.com/apache/iceberg/blob/36ecab4601b34114224e10b579eaee9018e57344/core/src/main/java/org/apache/iceberg/TableOperations.java#L64)
   
   Would love to hear more thoughts on these! Thanks for all the valuable 
discussions above.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to