Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/native-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ env:
PYTHONUTF8: "1" # Windows defaults to cp1252; the notices contain non-ASCII author names
# The platforms (matrix keys) whose parity run must pass before a tag publishes. Others publish too when they passed, and are only
# informational otherwise. Promote a platform here once it is green.
REQUIRED_PLATFORMS: "linux-x86_64 linux-aarch64 macos-arm64"
REQUIRED_PLATFORMS: "linux-x86_64 linux-aarch64 macos-arm64 windows-x64"

jobs:
version:
Expand Down Expand Up @@ -495,6 +495,8 @@ jobs:

# The tests of this checkout run with `arcadedb_embedded` aliased to the installed `arcadedb_native` (parity/alias), in a clean
# environment that contains the wheel and the test dependencies, not the source tree. The same dependency set as the preview chain.
# setuptools is one of them: tests/test_wheel_packages.py runs `setup.py build_py`, and a Python 3.12 environment has no setuptools
# (the Ubuntu runners' system Python happens to have one; the macOS and Windows runners' Python does not, so both failed on it).
- name: Run the parity suite
run: |
set -euo pipefail
Expand All @@ -503,7 +505,7 @@ jobs:
cores="$(nproc 2>/dev/null || sysctl -n hw.ncpu)"
uv run --no-project --python 3.12 --with "$w" --with pytest --with numpy --with requests --with jpype1 --with pyarrow \
--with polars --with pandas --with duckdb --with networkx --with "psycopg[binary]" --with adbc-driver-postgresql \
--with redis --with neo4j --with ladybug \
--with redis --with neo4j --with ladybug --with setuptools \
python bindings/python/native-wheel/parity/parity_wheel.py --repo "$GITHUB_WORKSPACE" \
--alias "$GITHUB_WORKSPACE/bindings/python/native-wheel/parity/alias" --backend native \
--out "$T/parity/parity-wheel.tsv" --cores "0-$((cores - 1))" | tee "$T/parity/parity-wheel.run.log"
Expand Down
2 changes: 1 addition & 1 deletion bindings/python/docs/development/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ The native preview is a second package built from the `native-preview` branch: d
| `macos-arm64` | `macos-15` (7 GB: `-J-Xmx5g`, `-H:NumberOfThreads=2`) | on the runner | `macosx_<minos>_arm64` (minos read from the load commands) | `libarcadedb.dylib` |
| `windows-x64` | `windows-latest` (MSVC environment from `vcvars64.bat`) | on the runner | `win_amd64` | `libarcadedb.dll` |

- **Which platforms gate a release**: the single list `REQUIRED_PLATFORMS` at the top of the workflow (now `linux-x86_64 linux-aarch64 macos-arm64`, each green in runs 10 and 11; `windows-x64` is not yet in it). The publish job fails without a passed parity run for each listed platform, and then uploads every wheel that passed, required or not. Add a platform to the list when it is green.
- **Which platforms gate a release**: the single list `REQUIRED_PLATFORMS` at the top of the workflow (now `linux-x86_64 linux-aarch64 macos-arm64 windows-x64`; the first three were green in runs 10 and 11, and `windows-x64` joined once its parity run passed all 969 tests on the installed wheel after the `setuptools` fix). The publish job fails without a passed parity run for each listed platform, and then uploads every wheel that passed, required or not. Add a platform to the list when it is green.
- **Why its own PyPI name**: PyPI keeps one file per name, version and platform tag, so a native build cannot sit beside the JVM wheel under `arcadedb-embedded`. The name goes away when the bindings move to `arcadedb` on PyPI.

## Python Versioning Strategy
Expand Down
3 changes: 3 additions & 0 deletions bindings/python/tests/test_wheel_packages.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ def test_backend_selection_imports_without_native_library(tmp_path):
"""A fresh interpreter, as the wheel's ``test_install.py`` runs: the JVM backend is the default."""
root = _built_root(tmp_path)
env = {"PATH": os.environ["PATH"]}
if "SYSTEMROOT" in os.environ:
# Windows: a child process without SYSTEMROOT cannot import socket (winsock does not initialise), and any dependency may.
env["SYSTEMROOT"] = os.environ["SYSTEMROOT"]
if root is not None:
env["PYTHONPATH"] = str(root)
code = (
Expand Down
Loading