Cannot import tiledb.cf (tiledb.libtiledb.Metadata)
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.
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
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.