-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpyproject.toml
More file actions
106 lines (89 loc) · 3.82 KB
/
pyproject.toml
File metadata and controls
106 lines (89 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
[build-system]
requires = [
"scikit-build-core>=0.8.0",
"pybind11>=2.12.0",
"setuptools-scm>=8.0",
"pytest>=8.0.0"
]
build-backend = "scikit_build_core.build"
[project]
name = "fastmm"
dynamic = ["version"]
description = "Fast Map Matching - High-performance map matching library"
readme = "README.md"
requires-python = ">=3.8"
license = "MIT"
authors = [
{name = "kodonnell"},
]
keywords = ["map-matching", "gps", "trajectory", "routing", "GIS"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: C++",
"Topic :: Scientific/Engineering :: GIS",
]
[project.optional-dependencies]
matcher = []
dev = ["pytest", "ruff"]
[project.urls]
Homepage = "https://github.com/kodonnell/fastmm"
Documentation = "https://github.com/kodonnell/fastmm"
Repository = "https://github.com/kodonnell/fastmm"
[tool.scikit-build]
# Scikit-build-core configuration for CMake integration
build.verbose = false
build-dir = "build" # Use persistent build directory for incremental builds
cmake.build-type = "Release"
install.components = ["python"]
wheel.install-dir = "fastmm"
wheel.packages = ["python/fastmm"]
[tool.scikit-build.metadata.version]
provider = "scikit_build_core.metadata.setuptools_scm"
[tool.setuptools_scm]
write_to = "python/fastmm/_version.py"
version_scheme = "guess-next-dev"
local_scheme = "no-local-version"
[tool.cibuildwheel]
# Build for Python 3.8-3.12
build = "cp310-* cp311-* cp312-*"
skip = "*-win32 *-musllinux_* *-manylinux_i686"
# Build verbosity
build-verbosity = 1
# Install test dependencies into the test venv
test-requires = "pytest>=8.0"
# Run tests against the installed wheel
test-command = "python -m pytest {package} -v --import-mode=append"
[tool.cibuildwheel.windows]
# Install Boost and build dependencies before building
before-build = "(if not exist \"C:\\vcpkg\\archives\" mkdir \"C:\\vcpkg\\archives\") && vcpkg install boost-geometry:x64-windows boost-serialization:x64-windows boost-format:x64-windows boost-uuid:x64-windows && pip install scikit-build-core setuptools-scm pybind11 delvewheel"
# Set Boost paths and vcpkg toolchain for CMake
environment = { BOOST_ROOT = "C:/vcpkg/installed/x64-windows", CMAKE_ARGS = "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake", VCPKG_FEATURE_FLAGS = "binarycaching", VCPKG_DEFAULT_BINARY_CACHE = "C:/vcpkg/archives" }
# Repair Windows wheels to bundle DLL dependencies
# --no-dll fastmmlib.dll: Skip fastmmlib.dll (already in wheel)
# --analyze-existing: Analyze DLLs already in wheel to find their external dependencies
repair-wheel-command = "delvewheel repair -w {dest_dir} {wheel} --add-path C:/vcpkg/installed/x64-windows/bin --no-dll fastmmlib.dll --analyze-existing"
# Let cibuildwheel auto-detect the best generator for the VS version
# (VS 2022 on GitHub Actions, VS 2026 on local machine)
[tool.cibuildwheel.linux]
# Use manylinux_2_28 (AlmaLinux 8) instead of manylinux2014 (CentOS 7 EOL)
before-build = "yum install -y boost-devel cmake"
# Repair wheel to bundle external dependencies, exclude libfastmmlib.so which is already in the wheel
repair-wheel-command = "auditwheel repair -w {dest_dir} {wheel} --exclude libfastmmlib.so"
# Use newer manylinux image
manylinux-x86_64-image = "manylinux_2_28"
[tool.cibuildwheel.macos]
before-build = "brew install boost cmake libomp"
environment = { OpenMP_ROOT = "$(brew --prefix libomp)" }
[tool.ruff]
line-length = 120
target-version = "py312"