HonahX commented on code in PR #490:
URL: https://github.com/apache/iceberg-python/pull/490#discussion_r1510041483


##########
pyiceberg/catalog/glue.py:
##########
@@ -252,6 +259,22 @@ def _construct_database_input(database_name: str, 
properties: Properties) -> Dat
     return database_input
 
 
+def _register_glue_catalog_id_with_glue_client(glue: GlueClient, 
glue_catalog_id: str) -> None:
+    """
+    Register the Glue Catalog ID (AWS Account ID) as a parameter on all Glue 
client methods.
+
+    It's more ergonomic to do this than to pass the CatalogId as a parameter 
to every client call since it's an optional
+    parameter and boto3 does not support 'None' values for missing parameters.
+    """
+    event_system = glue.meta.events
+
+    def add_glue_catalog_id(params, **kwargs) -> None:  # type: 
ignore[no-untyped-def]

Review Comment:
   ```suggestion
       def add_glue_catalog_id(params: Dict[str, str], **kwargs: Any) -> None:
   ```
   I think it is better to write the type explicitly when possible. WDYT?



##########
pyiceberg/catalog/glue.py:
##########
@@ -266,6 +289,10 @@ def __init__(self, name: str, **properties: Any):
         )
         self.glue: GlueClient = session.client("glue")
 
+        self.glue_catalog_id: Optional[str] = properties.get("glue.id")
+        if self.glue_catalog_id is not None:
+            _register_glue_catalog_id_with_glue_client(self.glue, 
self.glue_catalog_id)

Review Comment:
   ```suggestion
           if glue_catalog_id := properties.get(GLUE_ID):
               _register_glue_catalog_id_with_glue_client(self.glue, 
glue_catalog_id)
   ```
   Since a valid glue ID cannot be an empty string, I think we could use walrus 
operator here. Also, seems we do not need to store glue_catalog_id in the 
class. The information can be retrieved from `self.properties`. WDYT?



##########
pyiceberg/catalog/glue.py:
##########
@@ -252,6 +259,22 @@ def _construct_database_input(database_name: str, 
properties: Properties) -> Dat
     return database_input
 
 
+def _register_glue_catalog_id_with_glue_client(glue: GlueClient, 
glue_catalog_id: str) -> None:
+    """
+    Register the Glue Catalog ID (AWS Account ID) as a parameter on all Glue 
client methods.
+
+    It's more ergonomic to do this than to pass the CatalogId as a parameter 
to every client call since it's an optional
+    parameter and boto3 does not support 'None' values for missing parameters.

Review Comment:
   Thanks for providing all these possibilities. I like the current approach 
since it make things simple and clear



##########
pyiceberg/catalog/glue.py:
##########
@@ -93,6 +93,13 @@
 if TYPE_CHECKING:
     import pyarrow as pa
 
+
+# There is a unique Glue metastore in each AWS account and each AWS region. By 
default, GlueCatalog chooses the Glue
+# metastore to use based on the user's default AWS client credential and 
region setup. You can specify the Glue catalog
+# ID through glue.id catalog property to point to a Glue catalog in a 
different AWS account. The Glue catalog ID is your
+# numeric AWS account ID.
+GLUE_ID = "glue.id"

Review Comment:
   Shall we call it `GLUE_CATALOG_ID` since we use `glue_catalog_id` below?



-- 
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