77import importlib
88import os
99import warnings
10- from importlib .metadata import distributions
10+ from importlib .metadata import PackageNotFoundError , distribution
1111from logging import getLogger
1212from types import ModuleType
1313from typing import Union
@@ -85,13 +85,13 @@ def _import_or_missing_pandas_option() -> (
8585 os .environ ["ARROW_DEFAULT_MEMORY_POOL" ] = "system"
8686
8787 # Check whether we have the currently supported pyarrow installed
88- installed_packages = {
89- package . metadata [ "Name" ]: package for package in distributions ( )
90- }
91- if { "pyarrow" , "snowflake-connector-python" } <= installed_packages . keys ():
92- dependencies = installed_packages [
93- "snowflake-connector-python"
94- ]. metadata . get_all ( "Requires-Dist" , [] )
88+ try :
89+ pyarrow_dist = distribution ( "pyarrow" )
90+ snowflake_connector_dist = distribution ( "snowflake-connector-python" )
91+
92+ dependencies = snowflake_connector_dist . metadata . get_all (
93+ "Requires-Dist" , []
94+ )
9595 pandas_pyarrow_extra = None
9696 for dependency in dependencies :
9797 dep = Requirement (dependency )
@@ -103,16 +103,15 @@ def _import_or_missing_pandas_option() -> (
103103 pandas_pyarrow_extra = dep
104104 break
105105
106- installed_pyarrow_version = installed_packages [ "pyarrow" ] .version
106+ installed_pyarrow_version = pyarrow_dist .version
107107 if not pandas_pyarrow_extra .specifier .contains (installed_pyarrow_version ):
108108 warn_incompatible_dep (
109109 "pyarrow" , installed_pyarrow_version , pandas_pyarrow_extra
110110 )
111111
112- else :
112+ except PackageNotFoundError as e :
113113 logger .info (
114- "Cannot determine if compatible pyarrow is installed because of missing package(s) from "
115- "{}" .format (list (installed_packages .keys ()))
114+ f"Cannot determine if compatible pyarrow is installed because of missing package(s): { e } "
116115 )
117116 return pandas , pyarrow , True
118117 except ImportError :
0 commit comments