Skip to content

Commit 4bd73f9

Browse files
authored
Merge pull request #200 from static-frame/199/314
3.14 Wheels
2 parents d5aece1 + 425d233 commit 4bd73f9

15 files changed

+194
-149
lines changed

.github/workflows/ci.yml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ jobs:
1717
- uses: actions/checkout@master
1818
- uses: actions/setup-python@master
1919
with:
20-
python-version: 3.13
21-
- run: pip install -r requirements-build-3_13.txt
22-
- run: python setup.py sdist
20+
python-version: 3.14
21+
- run: python -m pip install build
22+
- run: python -m build --sdist
2323
- uses: actions/upload-artifact@v4
2424
with:
2525
name: dist-sdist
@@ -48,11 +48,12 @@ jobs:
4848
matrix:
4949
os: ${{ fromJson(needs.matrix_config.outputs.matrix_os) }}
5050
python:
51-
- {minor: 10, req_build: 'requirements-build-3_11.txt', req_test: 'requirements-dev-3_11.txt', ft: '0'}
52-
- {minor: 11, req_build: 'requirements-build-3_11.txt', req_test: 'requirements-dev-3_11.txt', ft: '0'}
53-
- {minor: 12, req_build: 'requirements-build-3_12.txt', req_test: 'requirements-dev-3_12.txt', ft: '0'}
54-
- {minor: 13, req_build: 'requirements-build-3_13.txt', req_test: 'requirements-dev-3_13.txt', ft: '0'}
55-
- {minor: 13t, req_build: 'requirements-build-3_13.txt', req_test: 'requirements-dev-3_13.txt', ft: '1'}
51+
- {minor: 10, req_test: 'requirements-dev-3_11.txt', ft: '0'}
52+
- {minor: 11, req_test: 'requirements-dev-3_11.txt', ft: '0'}
53+
- {minor: 12, req_test: 'requirements-dev-3_12.txt', ft: '0'}
54+
- {minor: 13, req_test: 'requirements-dev-3_13.txt', ft: '0'}
55+
- {minor: 14, req_test: 'requirements-dev-3_14.txt', ft: '0'}
56+
- {minor: 14t, req_test: 'requirements-dev-3_14.txt', ft: '1'}
5657

5758
runs-on: ${{ matrix.os }}
5859
outputs:
@@ -65,28 +66,26 @@ jobs:
6566
- run: echo '::add-matcher::.github/problem-matchers/msvc.json'
6667
if: startsWith(matrix.os, 'windows-')
6768

68-
- uses: pypa/cibuildwheel@v2.23.3
69+
- uses: pypa/cibuildwheel@v3.2.0
6970
if: matrix.os != 'macos-13-xlarge'
7071
with:
7172
output-dir: dist
7273
env:
7374
CIBW_BUILD: cp3${{ matrix.python.minor }}-*
7475
CIBW_ARCHS_WINDOWS: x86 AMD64
7576
CIBW_ARCHS_MACOS: x86_64
76-
CIBW_BEFORE_BUILD: pip install -r {project}/${{ matrix.python.req_build }}
7777
CIBW_BEFORE_TEST: pip install -r {project}/${{ matrix.python.req_test }}
7878
CIBW_TEST_COMMAND: pytest {project}/test
7979
CIBW_ENABLE: ${{ matrix.python.ft == '1' && 'cpython-freethreading' || '' }}
8080

8181
- run: pip install pipx
8282
if: matrix.os == 'macos-13-xlarge'
83-
- uses: pypa/cibuildwheel@v2.23.3
83+
- uses: pypa/cibuildwheel@v3.2.0
8484
if: matrix.os == 'macos-13-xlarge'
8585
with:
8686
output-dir: dist
8787
env:
8888
CIBW_BUILD: cp3${{ matrix.python.minor }}-macosx_arm64
89-
CIBW_BEFORE_BUILD: pip install -r {project}/${{ matrix.python.req_build }}
9089
CIBW_BEFORE_TEST: pip install -r {project}/${{ matrix.python.req_test }}
9190
CIBW_TEST_COMMAND: pytest {project}/test
9291
CIBW_ENABLE: ${{ matrix.python.ft == '1' && 'cpython-freethreading' || '' }}

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
include src/__init__.pyi src/py.typed
22
include src/*.h
3+
include VERSION

VERSION

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
1.2.0
2+

noxfile.py

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import nox
2+
import sys
3+
4+
ARTIFACTS = (
5+
"*.egg-info",
6+
".hypothesis",
7+
"build",
8+
"dist",
9+
"src/*.so",
10+
)
11+
12+
# Make `nox` default to running tests if you just do `nox`
13+
nox.options.sessions = ["test"]
14+
15+
16+
def do_clean(session: nox.Session) -> None:
17+
# uninstall arraykit
18+
session.run(
19+
sys.executable, "-m", "pip",
20+
"--disable-pip-version-check", "uninstall", "--yes", "arraykit",
21+
external=True
22+
)
23+
# remove artifacts
24+
for artifact in sorted(ARTIFACTS):
25+
session.run("rm", "-rf", artifact, external=True)
26+
27+
def do_build(session: nox.Session) -> None:
28+
# keep -v to see warnings; no build isolation to match your invoke cmd
29+
session.run(
30+
sys.executable, "-m", "pip",
31+
"--disable-pip-version-check",
32+
"install", "-v", "--no-build-isolation", ".",
33+
external=True
34+
)
35+
36+
def do_test(session: nox.Session) -> None:
37+
session.run(
38+
"pytest",
39+
"-s",
40+
"--disable-pytest-warnings",
41+
"--tb=native",
42+
external=True,
43+
)
44+
45+
def do_performance(session: nox.Session) -> None:
46+
"""Run performance benchmarks."""
47+
args = [sys.executable, "-m", "performance"]
48+
49+
if session.posargs:
50+
args.extend(["--names"] + session.posargs)
51+
52+
session.run(*args, external=True)
53+
54+
def do_lint(session: nox.Session) -> None:
55+
session.run(
56+
"pylint",
57+
"-f", "colorized",
58+
"*.py", "performance", "src", "test",
59+
external=True,
60+
)
61+
62+
63+
# NOTE: use `nox -s build` to launch a session
64+
65+
@nox.session(python=False) # use current environment
66+
def clean(session):
67+
"""Clean build artifacts and uninstall arraykit."""
68+
do_clean(session)
69+
70+
@nox.session(python=False)
71+
def build(session):
72+
"""Clean then build/install locally (like invoke: build depends on clean)."""
73+
do_clean(session)
74+
do_build(session)
75+
76+
@nox.session(python=False)
77+
def test(session):
78+
"""Build then run pytest (like invoke: test depends on build)."""
79+
do_clean(session)
80+
do_build(session)
81+
do_test(session)
82+
83+
@nox.session(python=False)
84+
def performance(session):
85+
"""Build then run performance benches (like invoke: performance depends on build)."""
86+
do_clean(session)
87+
do_build(session)
88+
do_performance(session)
89+
90+
@nox.session(python=False)
91+
def lint(session):
92+
"""Run pylint static analysis."""
93+
do_lint(session)

pyproject.toml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
[build-system]
2+
requires = [
3+
"setuptools>=64",
4+
"wheel",
5+
"numpy>=2.2"
6+
]
7+
build-backend = "setuptools.build_meta"
8+
9+
[project]
10+
name = "arraykit"
11+
description = "Array utilities for StaticFrame"
12+
readme = { file = "README.rst", content-type = "text/x-rst" }
13+
requires-python = ">=3.10"
14+
15+
dynamic = ["version"]
16+
17+
authors = [
18+
{ name = "Christopher Ariza" },
19+
{ name = "Brandt Bucher" },
20+
{ name = "Charles Burkland" },
21+
]
22+
license = "MIT"
23+
keywords = ["numpy", "array"]
24+
dependencies = [
25+
"numpy>=1.24.3",
26+
]
27+
classifiers = [
28+
"Development Status :: 5 - Production/Stable",
29+
"Intended Audience :: Developers",
30+
"Topic :: Software Development",
31+
"Programming Language :: C",
32+
"Programming Language :: Python :: Implementation :: CPython",
33+
"Operating System :: MacOS :: MacOS X",
34+
"Operating System :: Microsoft :: Windows",
35+
"Operating System :: POSIX",
36+
"Programming Language :: Python :: 3.10",
37+
"Programming Language :: Python :: 3.11",
38+
"Programming Language :: Python :: 3.12",
39+
"Programming Language :: Python :: 3.13",
40+
"Programming Language :: Python :: 3.14",
41+
"Programming Language :: Python :: Free Threading",
42+
"Typing :: Typed",
43+
]
44+
45+
[project.urls]
46+
Homepage = "https://github.com/static-frame/arraykit"
47+
48+
[tool.setuptools]
49+
package-dir = { "arraykit" = "src" }
50+
51+
[tool.setuptools.package-data]
52+
arraykit = ["__init__.pyi", "py.typed"]
53+
54+
[tool.setuptools.dynamic]
55+
version = { file = "VERSION" }
56+

requirements-build-3_11.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.

requirements-build-3_12.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.

requirements-build-3_13.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.

requirements-dev-3_11.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
numpy==2.0.2
22
pytest==7.1.2
3-
invoke==2.2.0
3+
nox==2025.5.1
44
hypothesis==6.10.1

requirements-dev-3_12.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
numpy==2.2.6
22
pytest==7.1.2
3-
invoke==2.2.0
3+
nox==2025.5.1
44
hypothesis==6.10.1

0 commit comments

Comments
 (0)