-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathpyproject.toml
More file actions
149 lines (135 loc) · 4.83 KB
/
Copy pathpyproject.toml
File metadata and controls
149 lines (135 loc) · 4.83 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
[project]
name = "moleculekit"
description = "A molecule reading/writing and manipulation package."
authors = [{ name = "Stefan Doerr", email = "s.doerr@acellera.com" }]
readme = "README.md"
# Floor is 3.11 because the extensions are built against the CPython Stable ABI and
# Py_buffer, which our memoryviews need, only entered the limited API in 3.11.
requires-python = ">=3.11"
dynamic = ["version"]
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: POSIX :: Linux",
]
dependencies = [
"numpy>=1.23.5",
"pandas>=1.1.2",
"networkx",
"tqdm",
"msgpack",
"requests",
"matplotlib",
"rdkit>=2020.09.5",
"mdtraj",
"acellera-propka", # Remove once they make a new release
# "openbabel>=3.1.1",
# post2 is the floor because earlier releases depend on upstream propka, which
# installs over acellera-propka's files. Whichever lands last wins, and when
# upstream wins the Python 3.14 annotations fix is silently lost.
"acellera-pdb2pqr>=3.7.1.post2",
"biopython",
]
[project.urls]
"Homepage" = "https://github.com/Acellera/moleculekit"
"Bug Tracker" = "https://github.com/Acellera/moleculekit/issues"
[tool.setuptools.packages.find]
include = ["moleculekit*"]
[tool.setuptools.package-data]
"moleculekit.share" = ["**/*"]
"moleculekit.viewer.molstar" = ["static/**/*"]
[tool.setuptools.exclude-package-data]
"*" = ["*.c", "*.cpp", "*.cxx", "*.h", "*.pyx", "*.pxd", ".gitignore"]
[tool.setuptools_scm]
[build-system]
requires = [
"setuptools",
"numpy>=2.0.0rc1",
"Cython>=0.29.21",
"setuptools-scm>=8",
]
build-backend = "setuptools.build_meta"
[project.optional-dependencies]
openmm = [
"nvidia-cuda-cupti-cu12<12.7",
"nvidia-cuda-nvcc-cu12<12.7",
"nvidia-cuda-nvrtc-cu12<12.7",
"nvidia-cuda-runtime-cu12<12.7",
"nvidia-nvjitlink-cu12<12.7",
"openmm[cuda12]>=8.5.0",
]
notebook = ["molviewspec"]
[dependency-groups]
test = [
"pytest>=8.4.2",
"pytest-xdist",
"jupytext",
"nbclient",
"ipykernel",
"acellera-docs-theme @ git+https://github.com/Acellera/acellera-docs-theme.git",
]
docs = [
"acellera-docs-theme @ git+https://github.com/Acellera/acellera-docs-theme.git",
"sphinx",
"myst-nb",
"sphinx-design",
"sphinx-copybutton",
"sphinxcontrib-mermaid",
"sphinx-autodoc-typehints",
"sphinx-argparse",
"sphinx-notfound-page",
"sphinx-sitemap",
"openmm>=8.5.0",
]
dev = [{ include-group = "test" }, "ipython>=8.18.1"]
[tool.uv]
# pdb2pqr 3.6.x pins docutils<0.18 but Sphinx needs newer; pdb2pqr works fine at runtime
# with current docutils, so override the constraint.
override-dependencies = ["docutils>=0.20"]
[tool.pytest.ini_options]
testpaths = ["tests"]
[tool.cibuildwheel]
# The extensions target the Stable ABI, so cibuildwheel compiles cp311 once and
# then reuses that cp311-abi3 wheel for every later version rather than rebuilding
# ("Found previously built wheel ... Skipping build step"), leaving a single wheel
# per platform in the output. It still runs test-command against the reused wheel
# on each version, and abi3audit over the result. requires-python already sets the
# floor, so no explicit build selector is needed here.
# Disable PyPy builds due to our Cython code not being compatible with it yet
# Disable Windows 32 builds, Musllinux builds due to rdkit not building on it
# Disable i686, ppc64le, s390x, universal2, armv7l due to numpy not building on them
skip = [
# rdkit ships no cp315 wheel yet, so the test install fails. Remove when it does.
"cp315-*",
# Free-threaded builds cannot use the Stable ABI: setuptools rejects
# py_limited_api when Py_GIL_DISABLED is set, so these fail outright.
# See https://github.com/python/cpython/issues/111506
"cp3*t-*",
"pp*",
"*win32",
"*armv7l",
"*_i686",
"*_ppc64le",
"*_s390x",
"*_universal2",
"*musllinux_x86_64",
"*musllinux_aarch64",
]
test-requires = ["pytest", "pytest-xdist"]
test-command = "pytest -n auto {project}/tests"
# Only one binary is produced, so testing the ends of the range is what matters:
# 3.11 is the version actually compiled and 3.14 the newest, and a failure confined
# to an interior version while both ends pass is not a Stable ABI failure mode.
# Interior versions are covered by test.yml, which builds from source on 3.11 to
# 3.14 across all three OSes on every non-tag push. Each version tested here costs
# four more full suite runs on every release.
test-skip = "cp312-* cp313-*"
manylinux-x86_64-image = "manylinux_2_28"
manylinux-aarch64-image = "manylinux_2_28"
# build-frontend = "build[uv]"
[tool.cibuildwheel.linux]
# The manylinux CPython compiles extensions with -g, so the .so files ship with
# DWARF debug symbols that inflate the wheel ~2.5x (e.g. _ckdtree.so 8.8MB -> 0.8MB).
# Strip them during the repair step.
repair-wheel-command = "auditwheel repair --strip -w {dest_dir} {wheel}"
# [tool.uv.sources]
# acellera-pdb2pqr = { path = "../pdb2pqr", editable = true }