TileDB-CF-Py icon indicating copy to clipboard operation
TileDB-CF-Py copied to clipboard

Cannot import tiledb.cf (tiledb.libtiledb.Metadata)

Open alfianisnan26 opened this issue 1 year ago • 2 comments

I'm running the netcdf-to-tiledb-basic.ipynb and I got this issue on running the import cell. Runs on Apple MacBook Pro M3 Pro using Python 3.13.1. Haven't test on another python version.

Please help to check this issue that is raised by the error of AttributeError: module 'tiledb.libtiledb' has no attribute 'Metadata'

import netCDF4
import numpy as np
import tiledb
import tiledb.cf
import matplotlib.pyplot as plt
AttributeError                            Traceback (most recent call last)
Cell In[1], [line 4](vscode-notebook-cell:?execution_count=1&line=4)
      [2](vscode-notebook-cell:?execution_count=1&line=2) import numpy as np
      [3](vscode-notebook-cell:?execution_count=1&line=3) import tiledb
----> [4](vscode-notebook-cell:?execution_count=1&line=4) import tiledb.cf
      [5](vscode-notebook-cell:?execution_count=1&line=5) import matplotlib.pyplot as plt

File ~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:[1](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:1)2
      1 """``tiledb.cf`` is the core module for the TileDB-CF-Py library.
      [2](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:2) 
      [3](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:3) This module contains core classes and functions for supporting the NetCDF data model in
   (...)
      [9](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:9)     import tiledb.cf
     [10](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:10) """
---> [12](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:12) from .cli import cli
     [13](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:13) from .core import (
     [14](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:14)     ATTR_METADATA_FLAG,
     [15](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:15)     DIM_METADATA_FLAG,
   (...)
     [21](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:21)     open_group_array,
     [22](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:22) )
     [23](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/__init__.py:23) from .netcdf_engine import from_netcdf, has_netCDF4

File ~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/cli.py:6
...
---> [20](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/netcdf_engine/_utils.py:20) def copy_group_metadata(netcdf_group: netCDF4.Group, meta: tiledb.libtiledb.Metadata):
     [21](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/netcdf_engine/_utils.py:21)     """Copy all NetCDF group attributs to a the metadata in a TileDB array."""
     [22](https://file+.vscode-resource.vscode-cdn.net/Users/alfian/Documents/programming/TileDB-CF-Py/examples/netcdf_engine/~/Documents/programming/TileDB-CF-Py/.venv/lib/python3.13/site-packages/tiledb/cf/netcdf_engine/_utils.py:22)     for key in netcdf_group.ncattrs():

AttributeError: module 'tiledb.libtiledb' has no attribute 'Metadata'

Here's the pip list

Package           Version
----------------- -----------
appnope           0.1.4
asttokens         3.0.0
certifi           2024.12.14
cftime            1.6.4.post1
click             8.1.8
comm              0.2.2
contourpy         1.3.1
cycler            0.12.1
debugpy           1.8.12
decorator         5.1.1
executing         2.1.0
fonttools         4.55.3
ipykernel         6.29.5
ipython           8.31.0
jedi              0.19.2
jupyter_client    8.6.3
jupyter_core      5.7.2
kiwisolver        1.4.8
matplotlib        3.10.0
matplotlib-inline 0.1.7
nest-asyncio      1.6.0
netCDF4           1.7.2
numpy             2.2.2
packaging         24.2
parso             0.8.4
pexpect           4.9.0
pillow            11.1.0
pip               24.3.1
platformdirs      4.3.6
prompt_toolkit    3.0.48
psutil            6.1.1
ptyprocess        0.7.0
pure_eval         0.2.3
Pygments          2.19.1
pyparsing         3.2.1
python-dateutil   2.9.0.post0
pyzmq             26.2.0
setuptools        75.8.0
six               1.17.0
stack-data        0.6.3
tiledb            0.33.2
tiledb-cf         0.9.1
tornado           6.4.2
traitlets         5.14.3
typing_extensions 4.12.2
wcwidth           0.2.13

Let me know if you need another information. Thank you, Sincerely.

alfianisnan26 avatar Jan 19 '25 01:01 alfianisnan26

I also tried to remove static typing on the tiledb.cf.netcdf_engine.__utils.copy_group_metadata method of parameter meta, and it seems to work without error on importing the tiledb.cf.

def copy_group_metadata(netcdf_group: netCDF4.Group, meta): # <-- I remove the tiledb.libtiledb.Metadata type
    # ...

It seems the issue is with resolving the import path of tiledb.libtiledb.Metadata

alfianisnan26 avatar Jan 19 '25 01:01 alfianisnan26

Hi @alfianisnan26, I would suggest to pin the tiledb package version (tiledb on PyPI / pip, tiledb-py on conda-forge) to <0.33 for now.

ihnorton avatar Jan 23 '25 15:01 ihnorton