From dbdb0f2df0157da747b18d8d5c31f0b446715832 Mon Sep 17 00:00:00 2001 From: Tip ten Brink <75669206+tiptenbrink@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:40:10 +0100 Subject: [PATCH] fix: make pumpkin-py build without any additional installs --- pumpkin-py/Cargo.toml | 2 +- pumpkin-py/README.md | 21 ++++++++++++++++++++- pumpkin-py/examples/nqueens.py | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/pumpkin-py/Cargo.toml b/pumpkin-py/Cargo.toml index 4c82e2d9..9f71aa7a 100644 --- a/pumpkin-py/Cargo.toml +++ b/pumpkin-py/Cargo.toml @@ -12,5 +12,5 @@ name = "pumpkin_py" crate-type = ["cdylib"] [dependencies] -pyo3 = "0.22.0" +pyo3 = { version = "0.22.0", features= ["extension-module"] } pumpkin-solver = { path = "../pumpkin-solver" } diff --git a/pumpkin-py/README.md b/pumpkin-py/README.md index 131ba63a..2a9ce865 100644 --- a/pumpkin-py/README.md +++ b/pumpkin-py/README.md @@ -22,5 +22,24 @@ again. Then, the examples (for example `nqueens`) can be run with ``` -python python/examples/nqueens.py 5 +python examples/nqueens.py 5 ``` + +### PyO3 rebuilds + +When developing in an IDE that runs `cargo check` on save, the PyO3 build +cache can get invalidated unnecessarily. See https://github.com/PyO3/pyo3/issues/1708 +for more details. One way to fix this is by making `rust-analyzer` use a +different directory. In VSCode, you could fix this by adding the following +to your `.vscode/settings.json` (in the main project directory): + +```json +{ + "rust-analyzer.server.extraEnv": { + "CARGO_TARGET_DIR": "target/analyzer" + }, + "rust-analyzer.check.extraArgs": [ + "--target-dir=target/analyzer" + ] +} +``` \ No newline at end of file diff --git a/pumpkin-py/examples/nqueens.py b/pumpkin-py/examples/nqueens.py index c90f5ea0..fc7bbe34 100644 --- a/pumpkin-py/examples/nqueens.py +++ b/pumpkin-py/examples/nqueens.py @@ -26,7 +26,7 @@ def main(n: int, proof: Path | None): for row in range(n): print(f"{row_separator}"); - queen_col = solution.value(variables[row]) + queen_col = solution.int_value(variables[row]) for col in range(n): string = "| * " if queen_col == col else "| "