Skip to content

Releases: python-graphblas/python-graphblas

2025.2.0

17 Feb 23:08
2a4891f
Compare
Choose a tag to compare

Highlights

  • Add support for: (#546)
    • SuiteSparse:GraphBLAS 9.3.1
    • Python 3.13
    • NumPy 2
  • Adopt SPEC 0 for minimum supported versions (#537)

Enhancements

  • Fix install instructions in README.md (#548)
  • Changes from SuiteSparse:GraphBLAS 9.3.1:
    • A.ss.unpack_hyperhash may return None
    • When serializing objects, there is no longer a character limit when saving info for UDTs
  • Add A._networkx_backend__ so matrices can be recognized as graphs by NetworkX >=3.3 (#546)

Maintenance

  • Drop support for:
    • Python 3.9
    • numpy 1.22
    • pandas 1.2 - 1.4
    • sparse 0.13
    • awkward 1.9
  • Add support for: (#546)
    • Python 3.13
    • numpy 2.0 - 2.2.3
    • scipy 1.13 - 1.51.2
    • numba 0.60 - 0.61
    • awkward 2.6 - 2.7
  • Add new pre-commit hooks: (#546)
    • prettier
    • taplo
    • actionlint
    • check-jsonschema
    • yamllint
    • zizmor
    • meta
  • Remove yesqa pre-commit hook; rely on ruff (#546)

New contributors

  • We welcomed @slockton24 as a new code contributor this release 🎉

2025.2.0a1

17 Feb 20:23
a1e1904
Compare
Choose a tag to compare
2025.2.0a1 Pre-release
Pre-release

Updated pypa/gh-action-pypi-publish to v1.12.4

This is a pre-release; see 2025.2.0

2025.2.0a0

17 Feb 16:14
9bf2ae2
Compare
Choose a tag to compare
2025.2.0a0 Pre-release
Pre-release

This is a pre-release; see 2025.2.0

2024.2.0

07 Feb 15:58
8f36d46
Compare
Choose a tag to compare

Highlights

  • Add support for numba 0.59, which supports Python 3.12 (#536)
    • Python-graphblas and its dependencies now fully support Python 3.12

Expired deprecations

  • Remove deprecated Matrix.from_values, Vector.from_values, matrix.to_values, and vector_to_values (#529)
    • Use Matrix.from_coo, Vector.from_coo, matrix.to_coo, and vector.to_coo instead
  • Remove deprecated gb.io.from_numpy and gb.io.to_numpy (#528)
    • Use Matrix.from_dense, Vector.from_dense, matrix.to_dense, and vector.to_dense instead
  • Remove deprecated gb.core.agg (#527)
    • Use gb.core.operator.agg instead

Maintenance

2023.12.0

13 Dec 19:31
e673d60
Compare
Choose a tag to compare

Highlights

  • Support semiring(A @ B @ C) that applies semiring to both matmuls (#501)
    • Also, do the same for ewise infix such as monoid(A & B & C)
    • but don't allow mixing ewise-add and ewise-multiply such as monoid(A | B & C)

Enhancements

  • Support Matrix power to the 0th power, A.power(0) (#518)
    • This results in a dense diagonal Matrix where the diagonal value is gotten from the identity of the semiring's binary operator (if it has an identity)
  • Add gb.MAX_SIZE, which is GrB_INDEX_MAX + 1 (#519)
    • This can be more convenient to use e.g. Matrix(int, MAX_SIZE, MAX_SIZE)
  • Better handle dtypes (especially UDTs) in ewise_union (#517)

Bug fixes

  • Fix the default return type of some aggregators such as agg.count (#524)
  • Fix test status badge in README (#526)

Maintenance

2023.10.0

18 Oct 17:22
228faa1
Compare
Choose a tag to compare

Highlights

  • First release to officially support SuiteSparse:GraphBLAS 8 (#456, #488, #504, #511, #512)
  • Newly affiliated with NumFOCUS and pyOpenSci (#482, #510)
  • We have a new logo, check it out! (#506)

Expired deprecations

  • Removed gb.io.draw; use gb.viz.draw instead (#485)
  • Removed A.ss.scan_rowwise, A.ss.selectk_rowwise, A.ss.compactify_rowwise, and A.ss.*_columnwise variants (#486)
    • Use e.g. A.ss.scan(order="row") instead

Enhancements

  • Support SuiteSparse:GraphBLAS 8 (#456)
    • Document and improve using the JIT for user-defined operators defined in C (#512)
    • Document gb.ss.config options (#504)
    • Document gb.ss.context (#488)
    • Test against python-suitesparse-graphblas 8.0.2.1, 8.2.0.1, 8.2.1.0 (#511)
  • Add matrix.power(k) to compute e.g. A @ A @ A @ ... using repeated squaring with arbitrary semiring (#483)
  • Add matrix.setdiag(x, k=0) to set a diagonal of a matrix; supports mask and accum (#493)
  • Add gb.ss.burble to enable SuiteSparse:GraphBLAS diagnostics; may be used as a context (#514)
  • Add CSS to better stylize matrices in online docs (#502)
  • Add .thunk_type attribute to SelectOp and IndexUnaryOp (#512)
  • Add badge for pyOpenSci affiliation; we were peer reviewed! (#482)
  • Add badge for NumFOCUS affiliation; we were added as an affiliated project! (#510)
  • Created logo and color palette for python-graphblas! Notebook added that creates it (#506)

Bug fixes

  • Allow scalar.__index__ for integral dtypes only (#481)
  • Fix broken link to graphblas.org (#503)

Maintenance

  • Drop support for:
  • Add support for:
  • Drop usage of coveralls (use codecov instead) (#509)

New contributors

2023.7.0

07 Jul 21:04
f14cbac
Compare
Choose a tag to compare

Enhancements

  • Prepare for SuiteSparse:GraphBLAS 8 (#478, #456)
    • Version 8 added SuiteSparse-specific context objects and JIT
    • Support coming in the next release of python-graphblas
  • Documentation improvements:
    • Add section about relationships to other Python libraries to README (#442)
    • Fix images to show up in README on PyPI (#450)
    • Fix to use double backticks instead of single backticks in docs (#454)
    • Blacken docs (#455)
    • Add conversions to/from awkward-array to API reference docs (#457)
    • Fix command to create conda environment in contributor guide docs (#462)
    • Clarify meaning and usage of monoids in GraphBLAS (#469)
    • Update copyright to include "and contributors" (#470)
  • Add support for the following versions of dependencies (#464, #478, others):
    • fast_matrix_market 1.6, 1.7, and 1.8
    • awkward 2.2 and 2.3
    • numpy 1.25
    • scipy 1.11

Maintenance

  • Include conftest.py in MANIFEST.in so sdist can run tests propertly (#451)
  • Disable linting github action and rely on pre-commit.ci instead (#451)

2023.5.0

03 May 15:16
096c5ed
Compare
Choose a tag to compare

Highlights

  • Add support for Python 3.11 (#423)
  • Allow Numba to be optional (#423)
    • User-defined functions (UDFs) still require numba
  • Update how to install python-graphblas and dependencies via pip.
    • The recommended way to install python-graphblas via pip is now:
      • pip install python-graphblas[suitesparse] (also installs suitesparse-graphblas)
      • pip install python-graphblas[suitespars-udf] (also installs numba)
      • pip install python-graphblas[default] (also installs pandas and scipy)
      • pip install python-graphblas[all] (installs every optional dependency including for testing and viz)
    • pip install python-graphblas will keep its current behavior for about a year
      • This currently installs suitesparse-graphblas and numba, which may be dropped as required dependencies in 2024.3.0
      • Release 2024.3.0 or later will probably only depend on numpy, donfig and pyyaml

Enhancements

  • Document parameters to operator methods register_new and register_anonymous (#446)
  • Update userguide/operations.rst to be copy/paste-able (added outputs) (#440)
  • Specify which versions of the GraphBLAS C API we support, and add version policy to FAQ (#441)
  • Add link to FAQ to README (#439)
  • Add logo, matrix, and graph SVGs to README (#432)
  • Convert logo SVGs to use path instead of font for better consistency (#447)
  • Minfied all PNGs and SVGs in documentation (#423, #447)

Maintenance

  • Split io.py into multiple files (#448)
  • Begin using https://pre-commit-ci for running git pre-commit (#432)
  • .github/workflows/imports.yml now randomizes Python version and OS (#423)
  • Marked poorly covered code with comments # NOT COVERED, # BRANCH NOT COVERED, and # FLAKY COVERAGE
  • Dropped support for sparse 0.12
  • Support networkx 3.1, numpy 1.24, numba 0.57, pandas 2.0, fast_matrix_market 1.5

2023.3.0

31 Mar 19:56
abb1c78
Compare
Choose a tag to compare

Deprecations

  • Deprecate graphblas.core.agg namespace (#420)
    • Use graphblas.core.operator.agg namespace instead
    • Will be removed in version 2023.11.0 or later

Enhancements

  • Read Matrix Market files much faster with fast_matrix_market (new optional dependency) (#391)
  • Add Python version badges and description of optional dependencies in README.md (#404)
  • Split API references into separate pages for better navigation experience (#413)

Bug fixes

  • Improve import times (which regressed in version 2023.2.0) (#419)
  • Fix html repr of infix expressions (#418)
  • Fix broken link in documentation (fundamentals.rst) (#397)
  • Fix logo in our docs and pin documentation dependency versions (#400)
  • Fix documentation website rendering issue with right panel (#413)

Maintenance

PSA: suitesparse-graphblas v7.4.3.2 now has wheels for Windows, MacOS, and Linux 🎉

2023.2.0

27 Feb 12:13
7be68cf
Compare
Choose a tag to compare

Expired deprecations

  • Remove deprecated Matrix.new, Vector.new, and Scalar.new constructors (#380)
    • Use e.g Matrix(...) and Vector(...) instead
  • Remove deprecated require_monoid= argument in ewise_add (#377)
  • Remove deprecated io.from_scipy_sparse_matrix and io.to_scipy_sparse_matrix (#393)
    • Use e.g. io.from_scipy_sparse instead

Deprecations

  • Deprecate io.from_numpy and io.to_numpy (#382)
    • Use e.g. the new methods Vector.from_dense and Matrix.to_dense instead
    • Wil be removed in version 2023.10.0 or later

Enhancements

  • Add from_dense and to_dense methods to Vector and Matrix to convert between NumPy arrays (#382)
  • Add from_scalar to Vector and Matrix to create fully dense objects from a scalar (#382)
  • Improve inferring sub-array dtypes when constructing objects (#381)
  • .wait now returns self so it can be used with method-chaining (#379)
  • Add op.is_idempotent property to Monoids that means op(x, x) == x (#388)
  • Support complex dtypes on Windows (#394, #395)
  • io.to_pydata_sparse(v) now returns 1d sparse array for Vector inputs (#395)