Skip to content

[ISSUE] w.functions.get returns error #1077

@akilthms

Description

@akilthms

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'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions