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]
