Skip to content

Commit a7e060b

Browse files
committed
Remove Cython Dependency (#2118)
* Move version method to pybind11 * Delete libtiledb.pyx, libtiledb.pxd, and common.pxi * Add __iter__ for FragmentsInfoIterator
1 parent b794111 commit a7e060b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+88
-1393
lines changed

.gitignore

-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ __pycache__/
77
*.so
88
*.dylib
99

10-
# Cython extensions
11-
*.cpp
12-
1310
# Distribution / packaging
1411
.Python
1512
env/

pyproject.toml

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
requires = [
33
"scikit-build-core",
44
"pybind11",
5-
"Cython>=3",
65
"numpy>=2.0.1"
76
]
87
build-backend = "scikit_build_core.build"

tiledb/CMakeLists.txt

+2-35
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,3 @@
1-
# Cython
2-
3-
add_custom_command(
4-
OUTPUT libtiledb.cc
5-
COMMAND Python::Interpreter -m cython
6-
"${CMAKE_CURRENT_SOURCE_DIR}/libtiledb.pyx" --output-file libtiledb.cc
7-
DEPENDS libtiledb.pyx
8-
VERBATIM
9-
)
10-
11-
python_add_library(
12-
libtiledb
13-
MODULE
14-
libtiledb.cc
15-
WITH_SOABI
16-
)
17-
18-
target_link_libraries(
19-
libtiledb
20-
PUBLIC
21-
Python::NumPy
22-
TileDB::tiledb_shared
23-
)
24-
25-
target_compile_features(
26-
libtiledb
27-
PUBLIC
28-
cxx_std_20
29-
)
30-
311
# Pybind11
322

333
pybind11_add_module(
@@ -64,7 +34,7 @@ if (TILEDB_SERIALIZATION)
6434
)
6535
endif()
6636

67-
install(TARGETS main libtiledb DESTINATION tiledb)
37+
install(TARGETS main DESTINATION tiledb)
6838

6939
if(TILEDB_DOWNLOADED)
7040
message(STATUS "Adding \"libtiledb\" into install group")
@@ -73,18 +43,15 @@ if(TILEDB_DOWNLOADED)
7343

7444
if (APPLE)
7545
set_target_properties(main PROPERTIES INSTALL_RPATH "@loader_path")
76-
set_target_properties(libtiledb PROPERTIES INSTALL_RPATH "@loader_path")
7746
elseif(UNIX)
7847
set_target_properties(main PROPERTIES INSTALL_RPATH "\$ORIGIN")
79-
set_target_properties(libtiledb PROPERTIES INSTALL_RPATH "\$ORIGIN")
8048
endif()
8149
else()
8250
# If using external TileDB core library force it to be linked at runtime using RPATH
8351
get_property(TILEDB_LOCATION TARGET TileDB::tiledb_shared PROPERTY LOCATION)
8452
get_filename_component(TILEDB_LOCATION ${TILEDB_LOCATION} DIRECTORY)
8553
message(STATUS "Setting RPATH for targets \"main\" and \"libtiledb\" to ${TILEDB_LOCATION}")
8654
set_target_properties(main PROPERTIES INSTALL_RPATH ${TILEDB_LOCATION})
87-
set_target_properties(libtiledb PROPERTIES INSTALL_RPATH ${TILEDB_LOCATION})
8855
endif()
8956

90-
add_subdirectory(cc)
57+
add_subdirectory(libtiledb)

tiledb/__init__.py

+9-11
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@
22
import os
33
import sys
44

5-
# un-comment this section to fix Cython backtrace line-numbers in
6-
# IPython/Jupyter. see https://bugs.python.org/issue32797#msg323167
7-
# ---
8-
# try:
9-
# from importlib.machinery import ExtensionFileLoader
10-
# else:
11-
# del ExtensionFileLoader.get_source
12-
# ---
13-
145
if os.name == "posix":
156
if sys.platform == "darwin":
167
lib_name = "libtiledb.dylib"
@@ -19,6 +10,14 @@
1910
else:
2011
lib_name = "tiledb"
2112

13+
import numpy as np
14+
15+
# TODO: get rid of this - It is currently used for unified numpy printing accross numpy versions
16+
np.set_printoptions(
17+
legacy="1.21" if np.lib.NumpyVersion(np.__version__) >= "1.22.0" else False
18+
)
19+
del np
20+
2221
from tiledb.libtiledb import version as libtiledb_version
2322

2423
if libtiledb_version()[0] == 2 and libtiledb_version()[1] >= 26:
@@ -30,7 +29,6 @@
3029
from .array import Array
3130
from .array_schema import ArraySchema
3231
from .attribute import Attr
33-
from .cc import TileDBError
3432
from .consolidation_plan import ConsolidationPlan
3533
from .ctx import Config, Ctx, default_ctx, scope_ctx
3634
from .dataframe_ import from_csv, from_pandas, open_dataframe
@@ -88,7 +86,7 @@
8886
vacuum,
8987
walk,
9088
)
91-
from .libtiledb import Ctx
89+
from .libtiledb import TileDBError
9290
from .multirange_indexing import EmptyRange
9391
from .object import Object
9492
from .parquet_ import from_parquet

tiledb/aggregation.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import tiledb.cc as lt
1+
import tiledb.libtiledb as lt
22

33

44
class Aggregation:

tiledb/array.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55

66
import tiledb
7-
import tiledb.cc as lt
7+
import tiledb.libtiledb as lt
88

99
from .ctx import Config, Ctx, default_ctx
1010
from .datatypes import DataType

tiledb/array_schema.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55

66
import numpy as np
77

8-
import tiledb.cc as lt
9-
from tiledb.libtiledb import version as libtiledb_version
8+
import tiledb.libtiledb as lt
109

1110
from .attribute import Attr
1211
from .ctx import Ctx, CtxMixin, default_ctx
1312
from .dimension_label import DimLabel
1413
from .domain import Domain
1514
from .filter import Filter, FilterList
1615

17-
if libtiledb_version()[0] == 2 and libtiledb_version()[1] >= 26:
16+
if lt.version()[0] == 2 and lt.version()[1] >= 25:
1817
from .current_domain import CurrentDomain
1918

2019
_tiledb_order_to_string = {
@@ -388,7 +387,7 @@ def has_dim_label(self, name: str) -> bool:
388387
"""
389388
return self._has_dim_label(self._ctx, name)
390389

391-
if libtiledb_version()[0] == 2 and libtiledb_version()[1] >= 26:
390+
if lt.version()[0] == 2 and lt.version()[1] >= 25:
392391

393392
@property
394393
def current_domain(self) -> CurrentDomain:

tiledb/attribute.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import numpy as np
66

7-
import tiledb.cc as lt
7+
import tiledb.libtiledb as lt
88

99
from .ctx import Ctx, CtxMixin
1010
from .datatypes import DataType

tiledb/common.pxi

-62
This file was deleted.

tiledb/consolidation_plan.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pprint
22

3-
import tiledb.cc as lt
3+
import tiledb.libtiledb as lt
44

55
from .array import Array
66
from .ctx import Ctx, CtxMixin, default_ctx

tiledb/ctx.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from typing import Union
66

77
import tiledb
8-
import tiledb.cc as lt
8+
import tiledb.libtiledb as lt
99

1010
_ctx_var = ContextVar("ctx")
1111

tiledb/current_domain.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import tiledb.cc as lt
1+
import tiledb.libtiledb as lt
22

33
from .ctx import Ctx, CtxMixin
44
from .domain import Domain

tiledb/data_order.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from enum import Enum
22

3-
import tiledb.cc as lt
3+
import tiledb.libtiledb as lt
44

55

66
class DataOrder(Enum):

tiledb/datatypes.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import numpy as np
88

9-
import tiledb.cc as lt
9+
import tiledb.libtiledb as lt
1010

1111

1212
@dataclass(frozen=True)

tiledb/dense_array.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import numpy as np
44

55
import tiledb
6-
import tiledb.cc as lt
6+
import tiledb.libtiledb as lt
77

88
from .array import (
99
Array,

tiledb/dimension.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import numpy as np
55

6-
import tiledb.cc as lt
6+
import tiledb.libtiledb as lt
77

88
from .ctx import Ctx, CtxMixin
99
from .datatypes import DataType

tiledb/dimension_label.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import numpy as np
44

5-
import tiledb.cc as lt
5+
import tiledb.libtiledb as lt
66

77
from .ctx import CtxMixin
88
from .data_order import DataOrder

tiledb/dimension_label_schema.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import numpy as np
44

5-
import tiledb.cc as lt
5+
import tiledb.libtiledb as lt
66

77
from .ctx import Ctx, default_ctx
88
from .data_order import DataOrder

tiledb/domain.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import numpy as np
55

6-
import tiledb.cc as lt
6+
import tiledb.libtiledb as lt
77

88
from .ctx import Ctx, CtxMixin
99
from .datatypes import DataType

tiledb/domain_indexer.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import numpy as np
44

55
import tiledb
6-
import tiledb.cc as lt
6+
import tiledb.libtiledb as lt
77

88

99
def _index_as_tuple(idx):

tiledb/enumeration.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import numpy as np
77
from numpy.typing import NDArray
88

9-
import tiledb.cc as lt
9+
import tiledb.libtiledb as lt
1010

1111
from .ctx import Ctx, CtxMixin
1212
from .datatypes import DataType

tiledb/filestore.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import warnings
22
from typing import ByteString, Optional
33

4-
import tiledb.cc as lt
4+
import tiledb.libtiledb as lt
55

66
from .ctx import Ctx, default_ctx
77

tiledb/filter.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import numpy as np
55

6-
import tiledb.cc as lt
6+
import tiledb.libtiledb as lt
77

88
from .ctx import Ctx, CtxMixin
99
from .datatypes import DataType

tiledb/fragment.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import tiledb
66
from tiledb.libtiledb import version as libtiledb_version
77

8-
from .main import PyFragmentInfo
9-
108
"""
119
Classes and functions relating to TileDB fragments.
1210
"""
@@ -105,6 +103,8 @@ def __init__(self, array_uri, include_mbrs=False, ctx=None):
105103

106104
self.array_uri = array_uri
107105

106+
from .main import PyFragmentInfo
107+
108108
fi = PyFragmentInfo(self.array_uri, schema, include_mbrs, ctx)
109109

110110
self.__nums = fi.get_num_fragments()

tiledb/group.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Optional, Union
22

3-
import tiledb.cc as lt
3+
import tiledb.libtiledb as lt
44

55
from .ctx import Config, Ctx, CtxMixin, default_ctx
66
from .metadata import Metadata

0 commit comments

Comments
 (0)