@@ -3,14 +3,18 @@ name = "khisto"
33version = " 0.1.0"
44description = " Optimal histogram visualization using the Khiops algorithm"
55readme = " README.md"
6- requires-python = " >=3.11"
6+ license = " BSD-3-Clause-Clear"
7+ license-files = [" LICENSE" ]
8+ requires-python = " >=3.10"
79dependencies = [" numpy>=2.0" ]
810
11+ [tool .khiops ]
12+ khiops-version = " 11.0.1-a.2"
13+
914[project .optional-dependencies ]
1015matplotlib = [" matplotlib>=3.8" ]
1116all = [" matplotlib>=3.8" ]
1217
13-
1418[dependency-groups ]
1519dev = [
1620 " pytest>=8.3" ,
@@ -25,8 +29,8 @@ dev = [
2529]
2630
2731[build-system ]
28- requires = [" hatchling>=1.25 " ]
29- build-backend = " hatchling .build"
32+ requires = [" scikit-build-core>=0.11.6 " , " ninja " ]
33+ build-backend = " scikit_build_core .build"
3034
3135[tool .pytest .ini_options ]
3236addopts = " -n 4 --cov --cov-report term-missing --durations=10"
@@ -42,7 +46,6 @@ ignore-regex = 'https://([\w/\.])+'
4246quiet-level = 3
4347
4448[tool .ruff ]
45-
4649# Group violations by containing file.
4750output-format = " grouped"
4851line-length = 88
@@ -52,7 +55,7 @@ indent-width = 4
5255fix = true
5356
5457# Exclude a variety of commonly ignored directories.
55- extend-exclude = [" src/khiops " ]
58+ extend-exclude = [" scripts " , " docs " , " sandbox " , " .github " ]
5659
5760[tool .ruff .format ]
5861# Like Black, use double quotes for strings.
@@ -70,5 +73,33 @@ ignore = [
7073 " E402" , # module level import not at top of file
7174]
7275
73- [tool .pyrefly ]
74- project-excludes = [" src/khiops" ]
76+ [tool .scikit-build ]
77+ wheel.py-api = " py3" # We specify full compatibility with all Python 3 releases
78+ cmake.version = " CMakeLists.txt" # Read CMake minimal version from file
79+ cmake.args = [" -G" , " Ninja" ] # Generator specification and build configuration
80+
81+ # CMake variables
82+ # Build khisto binary in Release mode for better performance, as it is not intended for debugging
83+ cmake.define.CMAKE_BUILD_TYPE = " Release"
84+ # Options
85+ cmake.define.MPI = false
86+ cmake.define.TESTING = false
87+ cmake.define.BUILD_LEX_YACC = false
88+ cmake.define.BUILD_JARS = false
89+ cmake.define.GENERATE_VIEWS = false
90+ cmake.define.C11 = true
91+ ninja.make-fallback = false
92+ build.targets = [" khisto" ] # Build only khisto
93+ install.components = [" KHISTO" ] # Only install KHISTO component in wheel
94+
95+ [tool .cibuildwheel ]
96+ build = " cp310-*"
97+ skip = " *musllinux*" # Khiops does not compile when using musl as the C standard library
98+ archs = " auto64" # Do not build 32-bit wheels
99+
100+ # Install build-time dependencies in containers created by cibuildwheel
101+ # This is compatible with Debian-like and Fedora-like distributions
102+ [tool .cibuildwheel .linux ]
103+ before-all = [
104+ " apt-get install -y ninja-build || dnf install -y ninja-build"
105+ ]
0 commit comments