Releases: python-graphblas/python-graphblas
Releases · python-graphblas/python-graphblas
2025.2.0
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 onruff
(#546)
New contributors
- We welcomed @slockton24 as a new code contributor this release 🎉
2025.2.0a1
Updated pypa/gh-action-pypi-publish to v1.12.4
This is a pre-release; see 2025.2.0
2025.2.0a0
This is a pre-release; see 2025.2.0
2024.2.0
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
, andvector_to_values
(#529)- Use
Matrix.from_coo
,Vector.from_coo
,matrix.to_coo
, andvector.to_coo
instead
- Use
- Remove deprecated
gb.io.from_numpy
andgb.io.to_numpy
(#528)- Use
Matrix.from_dense
,Vector.from_dense
,matrix.to_dense
, andvector.to_dense
instead
- Use
- Remove deprecated
gb.core.agg
(#527)- Use
gb.core.operator.agg
instead
- Use
Maintenance
2023.12.0
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)
- Also, do the same for ewise infix such as
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 isGrB_INDEX_MAX + 1
(#519)- This can be more convenient to use e.g.
Matrix(int, MAX_SIZE, MAX_SIZE)
- This can be more convenient to use e.g.
- 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
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
; usegb.viz.draw
instead (#485) - Removed
A.ss.scan_rowwise
,A.ss.selectk_rowwise
,A.ss.compactify_rowwise
, andA.ss.*_columnwise
variants (#486)- Use e.g.
A.ss.scan(order="row")
instead
- Use e.g.
Enhancements
- Support SuiteSparse:GraphBLAS 8 (#456)
- 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
Maintenance
- Drop support for:
- Add support for:
- Drop usage of coveralls (use codecov instead) (#509)
New contributors
- We welcomed @alugowski, @paul-tqh-nguyen, and @Transurgeon as new code contributors this release 🎉
2023.7.0
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.8awkward
2.2 and 2.3numpy
1.25scipy
1.11
Maintenance
2023.5.0
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 installssuitesparse-graphblas
)pip install python-graphblas[suitespars-udf]
(also installsnumba
)pip install python-graphblas[default]
(also installspandas
andscipy
)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
andnumba
, which may be dropped as required dependencies in 2024.3.0 - Release 2024.3.0 or later will probably only depend on
numpy
,donfig
andpyyaml
- This currently installs
- The recommended way to install
Enhancements
- Document parameters to operator methods
register_new
andregister_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
Deprecations
- Deprecate
graphblas.core.agg
namespace (#420)- Use
graphblas.core.operator.agg
namespace instead - Will be removed in version 2023.11.0 or later
- Use
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
- Split operator.py into multiple files (#420)
- Test with
python-suitesparse-graphblas
wheels on all OSes in CI (#385) - Add @SultanOrazbayev as a maintainer (#404)
- Misc. maintenance (#399, #405, #417)
PSA: suitesparse-graphblas
v7.4.3.2 now has wheels for Windows, MacOS, and Linux 🎉
2023.2.0
Expired deprecations
- Remove deprecated
Matrix.new
,Vector.new
, andScalar.new
constructors (#380)- Use e.g
Matrix(...)
andVector(...)
instead
- Use e.g
- Remove deprecated
require_monoid=
argument inewise_add
(#377) - Remove deprecated
io.from_scipy_sparse_matrix
andio.to_scipy_sparse_matrix
(#393)- Use e.g.
io.from_scipy_sparse
instead
- Use e.g.
Deprecations
- Deprecate
io.from_numpy
andio.to_numpy
(#382)- Use e.g. the new methods
Vector.from_dense
andMatrix.to_dense
instead - Wil be removed in version 2023.10.0 or later
- Use e.g. the new methods
Enhancements
- Add
from_dense
andto_dense
methods toVector
andMatrix
to convert between NumPy arrays (#382) - Add
from_scalar
toVector
andMatrix
to create fully dense objects from a scalar (#382) - Improve inferring sub-array dtypes when constructing objects (#381)
.wait
now returnsself
so it can be used with method-chaining (#379)- Add
op.is_idempotent
property to Monoids that meansop(x, x) == x
(#388) - Support complex dtypes on Windows (#394, #395)
python-suitesparse-graphblas
v7.4.3.1 added support for complex on Windows (GraphBLAS/python-suitesparse-graphblas#68)
io.to_pydata_sparse(v)
now returns 1d sparse array for Vector inputs (#395)