Releases: python-graphblas/python-graphblas
Releases · python-graphblas/python-graphblas
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)
2023.1.0
Deprecations
- Move operators specific to SuiteSparse:GraphBLAS to
.ss
namespaces (and deprecate previous locations)- Unary:
erf
,erfc
,frexpe
,frexpx
,lgamma
,tgamma
,positioni
,positioni1
,positionj
,positionj1
- Binary:
firsti
,firsti1
,firstj
,firstj1
,secondi
,secondi1
,secondj
,secondj1
- Semirings that use deprecated binary operators such as
any_firsti
- Aggregators:
argmin
,argmax
,first
,last
,first_index
,last_index
- Use e.g.
gb.unary.ss.erf
orgb.agg.ss.argmin
instead - Will be removed in version 2023.9.0 or later
- Unary:
Enhancements
- Support computation on scalars (#358)
gb.unary.exp(1)
s.ewise_add(t)
- Add conversions to and from
pydata/sparse
objects (#347) - Add
Matrix.from_edgelist
andmatrix.to_edgelist
to handle(row, col)
pairs or(row, col, val)
triples (#374) - Add
Vector.from_pairs
to handle(index, value)
pairs (#374) - Add default of
1.0
forvalues
inVector.from_*
andMatrix.from_*
methods (#375) - Add contributor guidelines and
dev-requirements.txt
(#345) - Add more to FAQ documentation (#367)
- Give informative errors for bad descriptor options (#353)
Maintenance
- Use
setuptools-git-versioning
for versions; remove use ofversioneer.py
(#362) - Determine supported dependency versions (#368)
- Add script
scripts/check_versions.sh
to easily see if there are new versions of dependencies (#366)
- Add script
- Move package metadata and build info from
setup.py
topyproject.toml
(#366) - Add config for PyLint (not enabled by default) (#354, #369)
- Add
ruff
linter to git pre-commit (#354, #373) - Add
black-jupyter
to git pre-commit (#366) - New GitHub Action just for testing imports (#357)
- New GitHub Action for linting (#354, #359)
- Make readthedocs fail if there's a warning building the docs (#361)
- Add
--no-mapnumpy
topytest
options and other CI improvements (#365) - Randomize versions of dependencies to test against (#368, #371)
2023.1.0a0
This is a pre-release; see 2023.1.0
2022.12.0
Highlights
- Add implementation-specific descriptors! (#343)
- Descriptor customization is now fully exposed for all methods via
**opts
keyword arguments - Example:
C(axb_method="gustavson", nthreads=8) << A @ B
- Example:
A.reduce_scalar().new(nthreads=4)
- See
graphblas/core/ss/descriptor.py:get_descriptor
for SuiteSparse:GraphBLAS descriptors - Other GraphBLAS implementations can have their own custom descriptors
- Descriptor customization is now fully exposed for all methods via
Expired deprecations
mask.mask
has been removed; usemask.parent
instead (#344)matrix.ss.diag
has been removed; usevector.diag
orMatrix.ss.build_diag
instead (#342)vector.ss.diag
has been removed; usematrix.diag
orVector.ss.build_diag
instead (#342)
Enhancements
- Update to require SuiteSparse:GraphBLAS 7.4.0 (#351)
- Remove use of GxB variadic functions (and
vararg
function) for increased compatibility (#351)- For example, we now use typed versions such as
GxB_Matrix_option_get_INT32
- For example, we now use typed versions such as
- Remove
pygraphblas
conversions (such asmatrix.to_pygraphblas
) (#348)- These have not been tested or working for a long time due to
pygraphblas
being defunct and unsupported
- These have not been tested or working for a long time due to
- Update
environment.yml
for developers
Bug fixes
- Handle deprecations from NumPy 1.24, such as using
np.bool_
instead ofnp.bool8
(#349) - Support different architectures such as ARM by removing use of variadic functions (#351)
New contributors
- We welcomed @SultanOrazbayev as a new code contributor this release 🎉