From 47d09f5ecc751df38b08bc8806396d1b964887bd Mon Sep 17 00:00:00 2001 From: Erik Welch Date: Fri, 5 May 2023 11:12:05 -0500 Subject: [PATCH 1/4] include conftest.py in MANIFEST.in --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index bdba30a31..27cd3f0c4 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,6 +2,7 @@ recursive-include graphblas *.py prune docs prune scripts include setup.py +include conftest.py include README.md include LICENSE include MANIFEST.in From 9bb8cb24ee622ee951c2549ad30197c0f45d9f2a Mon Sep 17 00:00:00 2001 From: Erik Welch Date: Fri, 5 May 2023 17:47:15 -0500 Subject: [PATCH 2/4] Run slow tests when running via `pytest --pyargs graphblas` --- graphblas/tests/conftest.py | 17 +++++++++++------ graphblas/tests/test_core.py | 5 ++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/graphblas/tests/conftest.py b/graphblas/tests/conftest.py index a4df5d336..0d1f4008a 100644 --- a/graphblas/tests/conftest.py +++ b/graphblas/tests/conftest.py @@ -18,26 +18,31 @@ def pytest_configure(config): rng = np.random.default_rng() - randomly = config.getoption("--randomly", False) + randomly = config.getoption("--randomly", None) + if randomly is None: # pragma: no cover + options_unavailable = True + randomly = True + config.addinivalue_line("markers", "slow: Skipped unless --runslow passed") + else: + options_unavailable = False backend = config.getoption("--backend", None) if backend is None: if randomly: backend = "suitesparse" if rng.random() < 0.5 else "suitesparse-vanilla" else: backend = "suitesparse" - blocking = config.getoption("--blocking", True) + blocking = config.getoption("--blocking", None) if blocking is None: # pragma: no branch blocking = rng.random() < 0.5 if randomly else True record = config.getoption("--record", False) if record is None: # pragma: no branch record = rng.random() < 0.5 if randomly else False - mapnumpy = config.getoption("--mapnumpy", False) + mapnumpy = config.getoption("--mapnumpy", None) if mapnumpy is None: mapnumpy = rng.random() < 0.5 if randomly else False - runslow = config.getoption("--runslow", False) + runslow = config.getoption("--runslow", None) if runslow is None: - # Add a small amount of randomization to be safer - runslow = rng.random() < 0.05 if randomly else False + runslow = options_unavailable config.runslow = runslow gb.config.set(autocompute=False, mapnumpy=mapnumpy) diff --git a/graphblas/tests/test_core.py b/graphblas/tests/test_core.py index ae2051145..003affc6c 100644 --- a/graphblas/tests/test_core.py +++ b/graphblas/tests/test_core.py @@ -83,7 +83,10 @@ def test_packages(): if not pyproject.exists(): # pragma: no cover (safety) pytest.skip("Did not find pyproject.toml") with pyproject.open("rb") as f: - pkgs2 = sorted(tomli.load(f)["tool"]["setuptools"]["packages"]) + cfg = tomli.load(f) + if cfg.get("project", {}).get("name") != "python-graphblas": # pragma: no cover (safety) + pytest.skip("Did not find correct pyproject.toml") + pkgs2 = sorted(cfg["tool"]["setuptools"]["packages"]) assert ( pkgs == pkgs2 ), "If there are extra items on the left, add them to pyproject.toml:tool.setuptools.packages" From 5a2ad3ca42ebdb972954e35a0955746f1c872ee2 Mon Sep 17 00:00:00 2001 From: Erik Welch Date: Sat, 6 May 2023 07:51:10 -0500 Subject: [PATCH 3/4] bump ruff (also, test pre-commit.ci) --- .github/workflows/lint.yml | 10 ++++++---- .pre-commit-config.yaml | 4 ++-- graphblas/tests/test_op.py | 2 +- graphblas/tests/test_vector.py | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 5ef2b1033..81d9415ad 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,10 +1,12 @@ +# Rely on pre-commit.ci instead name: Lint via pre-commit on: - pull_request: - push: - branches-ignore: - - main + workflow_dispatch: + # pull_request: + # push: + # branches-ignore: + # - main permissions: contents: read diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8f4fac317..d995f4253 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -58,7 +58,7 @@ repos: - id: black - id: black-jupyter - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.264 + rev: v0.0.265 hooks: - id: ruff args: [--fix-only, --show-fixes] @@ -86,7 +86,7 @@ repos: additional_dependencies: [tomli] files: ^(graphblas|docs)/ - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.264 + rev: v0.0.265 hooks: - id: ruff - repo: https://github.com/sphinx-contrib/sphinx-lint diff --git a/graphblas/tests/test_op.py b/graphblas/tests/test_op.py index c9a176afd..a80012ab7 100644 --- a/graphblas/tests/test_op.py +++ b/graphblas/tests/test_op.py @@ -225,7 +225,7 @@ def plus_one(x): UnaryOp.register_new("bad", object()) assert not hasattr(unary, "bad") with pytest.raises(UdfParseError, match="Unable to parse function using Numba"): - UnaryOp.register_new("bad", lambda x: v) + UnaryOp.register_new("bad", lambda x: v) # pragma: no branch (numba) @pytest.mark.skipif("not supports_udfs") diff --git a/graphblas/tests/test_vector.py b/graphblas/tests/test_vector.py index ab019b734..bc0ae71e8 100644 --- a/graphblas/tests/test_vector.py +++ b/graphblas/tests/test_vector.py @@ -858,7 +858,7 @@ def inner(x, idx, _, thunk): # pragma: no cover (numba) delattr(indexunary, "iin") delattr(select, "iin") with pytest.raises(UdfParseError, match="Unable to parse function using Numba"): - indexunary.register_new("bad", lambda x, row, col, thunk: result) + indexunary.register_new("bad", lambda x, row, col, thunk: result) # pragma: no branch def test_reduce(v): @@ -2425,7 +2425,7 @@ def test_lambda_udfs(v): # with pytest.raises(TypeError): v.ewise_add(v, lambda x, y: x + y) # pragma: no branch (numba) with pytest.raises(TypeError): - v.inner(v, lambda x, y: x + y) + v.inner(v, lambda x, y: x + y) # pragma: no branch (numba) def test_get(v): From 756dc68cacbdd99b96d5064c4812e3732d4bedac Mon Sep 17 00:00:00 2001 From: Erik Welch Date: Sat, 6 May 2023 08:09:50 -0500 Subject: [PATCH 4/4] pre-commit.ci works fine, let's only use it for linting --- graphblas/tests/test_vector.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphblas/tests/test_vector.py b/graphblas/tests/test_vector.py index bc0ae71e8..bd2083fd1 100644 --- a/graphblas/tests/test_vector.py +++ b/graphblas/tests/test_vector.py @@ -858,7 +858,7 @@ def inner(x, idx, _, thunk): # pragma: no cover (numba) delattr(indexunary, "iin") delattr(select, "iin") with pytest.raises(UdfParseError, match="Unable to parse function using Numba"): - indexunary.register_new("bad", lambda x, row, col, thunk: result) # pragma: no branch + indexunary.register_new("bad", lambda x, row, col, thunk: result) # pragma: no branch def test_reduce(v):