databricks-sdk-py icon indicating copy to clipboard operation
databricks-sdk-py copied to clipboard

[ISSUE] w.functions.get returns error

Open akilthms opened this issue 2 months ago • 0 comments

Description When calling w.functions.get on a qualified unity catalog functions path, the function returns an error

Reproduction w.functions.get(<QUALIFIED_UC_FUNCTION_PATH>)

Expected behavior return FunctionInfo for given function

Is it a regression? Only try one version, the latest version

Debug Logs The SDK logs helpful debugging information when debug logging is enabled. Set the log level to debug by adding logging.basicConfig(level=logging.DEBUG) to your program, and include the logs here.

Other Information

  • OS: [e.g. macOS]
  • Version: [e.g. 0.1.0]

Additional context Returned error

AttributeError                            Traceback (most recent call last)
File <command-6655420862760072>, line 1
----> 1 w.functions.get(name="catalog_westeurope_dpn01_ds_sbx_temp.db_temp_chatcdp.seg_usecase_1_q1")
 
File /databricks/python/lib/python3.10/site-packages/databricks/sdk/service/catalog.py:2909, in FunctionsAPI.get(self, name, **kwargs)
   2906     request = GetFunctionRequest(name=name)
   2908 json = self._api.do('GET', f'/api/2.1/unity-catalog/functions/{request.name}')
-> 2909 return FunctionInfo.from_dict(json)
 
File /databricks/python/lib/python3.10/site-packages/databricks/sdk/service/catalog.py:898, in FunctionInfo.from_dict(cls, d)
    886 @classmethod
    887 def from_dict(cls, d: Dict[str, any]) -> 'FunctionInfo':
    888     return cls(catalog_name=d.get('catalog_name', None),
    889                comment=d.get('comment', None),
    890                created_at=d.get('created_at', None),
    891                created_by=d.get('created_by', None),
    892                data_type=_enum(d, 'data_type', ColumnTypeName),
    893                external_language=d.get('external_language', None),
    894                external_name=d.get('external_name', None),
    895                full_data_type=d.get('full_data_type', None),
    896                full_name=d.get('full_name', None),
    897                function_id=d.get('function_id', None),
--> 898                input_params=_repeated(d, 'input_params', FunctionParameterInfo),
    899                is_deterministic=d.get('is_deterministic', None),
    900                is_null_call=d.get('is_null_call', None),
    901                metastore_id=d.get('metastore_id', None),
    902                name=d.get('name', None),
    903                owner=d.get('owner', None),
    904                parameter_style=_enum(d, 'parameter_style', FunctionInfoParameterStyle),
    905                properties=d.get('properties', None),
    906                return_params=_repeated(d, 'return_params', FunctionParameterInfo),
    907                routine_body=_enum(d, 'routine_body', FunctionInfoRoutineBody),
    908                routine_definition=d.get('routine_definition', None),
    909                routine_dependencies=_repeated(d, 'routine_dependencies', Dependency),
    910                schema_name=d.get('schema_name', None),
    911                security_type=_enum(d, 'security_type', FunctionInfoSecurityType),
    912                specific_name=d.get('specific_name', None),
    913                sql_data_access=_enum(d, 'sql_data_access', FunctionInfoSqlDataAccess),
    914                sql_path=d.get('sql_path', None),
    915                updated_at=d.get('updated_at', None),
    916                updated_by=d.get('updated_by', None))
 
File /databricks/python/lib/python3.10/site-packages/databricks/sdk/service/_internal.py:15, in _repeated(d, field, cls)
     13     return None
     14 from_dict = getattr(cls, 'from_dict')
---> 15 return [from_dict(v) for v in d[field]]
 
File /databricks/python/lib/python3.10/site-packages/databricks/sdk/service/_internal.py:15, in <listcomp>(.0)
     13     return None
     14 from_dict = getattr(cls, 'from_dict')
---> 15 return [from_dict(v) for v in d[field]]
 
File /databricks/python/lib/python3.10/site-packages/databricks/sdk/service/catalog.py:982, in FunctionParameterInfo.from_dict(cls, d)
    980 @classmethod
    981 def from_dict(cls, d: Dict[str, any]) -> 'FunctionParameterInfo':
--> 982     return cls(comment=d.get('comment', None),
    983                name=d.get('name', None),
    984                parameter_default=d.get('parameter_default', None),
    985                parameter_mode=_enum(d, 'parameter_mode', FunctionParameterMode),
    986                parameter_type=_enum(d, 'parameter_type', FunctionParameterType),
    987                position=d.get('position', None),
    988                type_interval_type=d.get('type_interval_type', None),
    989                type_json=d.get('type_json', None),
    990                type_name=_enum(d, 'type_name', ColumnTypeName),
    991                type_precision=d.get('type_precision', None),
    992                type_scale=d.get('type_scale', None),
    993                type_text=d.get('type_text', None))
 
AttributeError: 'str' object has no attribute 'get'

akilthms avatar Oct 16 '25 20:10 akilthms