sungwy opened a new issue, #3932:
URL: https://github.com/apache/iceberg-python/issues/3932

   Three properties name a class that PyIceberg imports and calls:
   
   | Property | Resolved by | Called as |
   |---|---|---|
   | `py-io-impl` | `_import_file_io` (`pyiceberg/io/__init__.py`) | 
`class_(properties)` |
   | `write.py-location-provider.impl` | `_import_location_provider` 
(`pyiceberg/table/locations.py`) | `class_(table_location, table_properties)` |
   | `s3.retry-strategy-impl` | `_import_retry_strategy` 
(`pyiceberg/io/pyarrow.py`) | `class_()` |
   
   Each follows the same pattern:
   
   ```python
   module = importlib.import_module(module_name)
   class_ = getattr(module, class_name)
   return class_(...)
   ```
   
   None of the three checks that the resolved object is the type it is about to 
be used as — there is no `issubclass` against `FileIO`, `LocationProvider`, or 
`S3RetryStrategy`. Any importable dotted name resolves and is called, with the 
property map passed as an argument in two of the three cases.
   
   All three properties are read from the merged table property map, so their 
values can originate in a table's metadata rather than in the operator's 
catalog configuration.
   
   ---
   Issue investigation generated via claude, reviewed by Sung, Kevin, Fokko.
   


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to