-
Notifications
You must be signed in to change notification settings - Fork 568
Expand file tree
/
Copy pathpyproject.toml
More file actions
204 lines (185 loc) · 6.21 KB
/
Copy pathpyproject.toml
File metadata and controls
204 lines (185 loc) · 6.21 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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
[build-system]
# REMEMBER TO KEEP THE VERSIONS IN THIS FILE THE SAME AS IN ci/triage_build.sh
requires = [
"Cython >=3.0.0, <4",
"numpy >=1.25.0, <3",
"packaging >=23.0",
"pkgconfig >=1.5.5",
"setuptools >=77.0.1",
]
# use an in-tree build backend, extending setuptools.build_meta
build-backend = "backend"
backend-path = ["_custom_build"]
[project]
name = "h5py"
version = '3.17.0dev0' # keep in sync with h5py.version.version_tuple
description = "Read and write HDF5 files from Python"
authors = [
{name = "Andrew Collette", email = "[email protected]"},
]
maintainers = [
{name = "Thomas Kluyver", email = "[email protected]"},
{name = "Thomas A Caswell", email = "[email protected]"},
]
license = "BSD-3-Clause"
license-files = ["LICENSE", "lzf/LICENSE.txt", "licenses/*"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: Science/Research",
"Operating System :: Unix",
"Operating System :: POSIX :: Linux",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Cython",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Free Threading :: 1 - Unstable",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Scientific/Engineering",
"Topic :: Database",
"Topic :: Software Development :: Libraries :: Python Modules",
]
requires-python = ">=3.11"
dynamic = ["dependencies"]
[project.readme]
text = """\
The h5py package provides both a high- and low-level interface to the HDF5
library from Python. The low-level interface is intended to be a complete
wrapping of the HDF5 API, while the high-level component supports access to
HDF5 files, datasets and groups using established Python and NumPy concepts.
A strong emphasis on automatic conversion between Python (Numpy) datatypes and
data structures and their HDF5 equivalents vastly simplifies the process of
reading and writing data from Python.
Wheels are provided for several popular platforms, with an included copy of
the HDF5 library (usually the latest version when h5py is released).
You can also `build h5py from source
<https://docs.h5py.org/en/stable/build.html#source-installation>`_
with any HDF5 stable release from version 1.10.4 onwards, although naturally new
HDF5 versions released after this version of h5py may not work.
Odd-numbered minor versions of HDF5 (e.g. 1.13) are experimental, and may not
be supported.
"""
content-type = "text/x-rst"
[project.urls]
Homepage = "https://www.h5py.org/"
Source = "https://github.com/h5py/h5py"
Documentation = "https://docs.h5py.org/en/stable/"
"Release notes" = "https://docs.h5py.org/en/stable/whatsnew/index.html"
"Discussion forum" = "https://forum.hdfgroup.org/c/hdf5/h5py"
[tool.setuptools]
# to ignore .pxd and .pyx files in wheels
include-package-data = false
packages = [
"h5py",
"h5py._hl",
"h5py.tests",
"h5py.tests.data_files",
"h5py.tests.test_vds",
]
[dependency-groups]
check-manifest = [
"check-manifest>=0.50",
]
check-readme = [
"build>=1.2.2",
"twine>=6.1.0",
]
docs = [
"sphinx>=7.4.7,<9",
"sphinx-rtd-theme>=1.3.0",
]
lint = [
"pre-commit>=4.2.0",
]
mpi = [
"mpi4py>=3.1.2",
]
tables = [
"tables>=3.7.0",
]
test = [
"pytest>=8.2.2",
"pytest-cov>=5.0.0",
"pytest-mpi>=0.6",
]
concurrency = [
"pytest-run-parallel >=0.8.0",
]
wheels = [
"codecov>=2.1.13",
"coverage>=7.9.1",
"tox>=4.26.0",
"tox-uv>=1.27.0",
]
[tool.cibuildwheel]
skip = [
"*-win32",
]
# See https://github.com/h5py/h5py/issues/2816
test-skip = [
# Skipped due to UV package picks x86_64 Python Interpreter
# See https://github.com/astral-sh/uv/issues/12906
# Skip the test suite for Python builds that are not preinstalled on the Win-ARM64 runner.
"cp311-win_arm64",
"cp315-win_arm64",
"cp314t-win_arm64",
"cp315t-win_arm64",
]
build-verbosity = 1
build-frontend = { name = "pip", args = ["--only-binary", "numpy"] }
manylinux-x86_64-image = "ghcr.io/h5py/manylinux_2_28_x86_64-hdf5"
manylinux-aarch64-image = "ghcr.io/h5py/manylinux_2_28_aarch64-hdf5"
musllinux-x86_64-image = "ghcr.io/h5py/musllinux_1_2_x86_64-hdf5"
musllinux-aarch64-image = "ghcr.io/h5py/musllinux_1_2_aarch64-hdf5"
test-groups = ["wheels"]
test-command = "bash {project}/ci/cibw_test_command.sh {project} {wheel}"
environment-pass = [
"GITHUB_ACTIONS",
"ONLY_MINDEPS_TESTS",
"H5PY_LIMITED_API",
"PIP_EXTRA_INDEX_URL",
"PIP_PRE",
]
[tool.cibuildwheel.linux.environment]
CFLAGS = "-g1"
[tool.cibuildwheel.macos]
# https://cibuildwheel.pypa.io/en/stable/faq/#macos-passing-dyld_library_path-to-delocate
repair-wheel-command = """\
DYLD_FALLBACK_LIBRARY_PATH=$HDF5_DIR/lib \
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} \
"""
[tool.cibuildwheel.macos.environment]
H5PY_ROS3 = "0"
H5PY_DIRECT_VFD = "0"
[[tool.cibuildwheel.overrides]]
# do not audit cp315 wheels for abi3 violations yet
# because abi3audit isn't caught up with cp315-abi3 (at the time of writing)
# https://github.com/cython/cython/issues/7955
select = "cp315-*"
audit-command = ""
[tool.uv]
# never build numpy from source
no-build-package = ["numpy"]
index-strategy = "unsafe-best-match"
[[tool.uv.index]]
# explicitly configure PyPI as the first index to look up instead of the default
# fallback. This ensures that, if:
# 1. pre-releases are not allowed and
# 2. a package with a non-dev version is found on sp-nightlies,
# then it still won't be preferred over its PyPI counterpart.
name = "pypi"
url = "https://pypi.org/simple"
# exclude packages published less than a week ago (ISO 8601)
exclude-newer = "P7D"
[[tool.uv.index]]
name = "sp-nightlies"
url = "https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
exclude-newer = false
# cache metadata for up to 10min (600s), and packages for 12h (43200s)
cache-control = { api = "max-age=600", files = "max-age=43200, immutable" }