GitHub / python-graphblas / python-graphblas
Python library for GraphBLAS: high-performance sparse linear algebra for scalable graph analytics
    JSON API: http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-graphblas%2Fpython-graphblas
    PURL: pkg:github/python-graphblas/python-graphblas
  
        Stars: 138
        Forks: 15
        Open issues: 68
      
        License: apache-2.0
        Language: Jupyter Notebook
          Size: 3.74 MB
       Dependencies parsed at:           Pending
      
        Created at: almost 6 years ago
        Updated at: 19 days ago
          Pushed at: 7 days ago
          Last synced at: 6 days ago
      
Commit Stats
      
        Commits: 768
        Authors: 11
        Mean commits per author: 69.82
        Development Distribution Score: 0.163
        More commit stats: https://commits.ecosyste.ms/hosts/GitHub/repositories/python-graphblas/python-graphblas
      
    
Topics: complex-networks, graph-algorithms, graph-analysis, graph-datastructures, graph-theory, graphblas, linear-algebra, numba, pydata, python, python-wrapper, sparse, sparse-data, sparse-matrix, suitesparse
2025.2.0
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_hyperhashmay 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 
yesqapre-commit hook; rely onruff(#546) 
New contributors
- We welcomed @slockton24 as a new code contributor this release 🎉
 
Download
2025.2.0a1
2025.2.0a1 Pre-release
Updated pypa/gh-action-pypi-publish to v1.12.4
This is a pre-release; see 2025.2.0
Download
Download
2024.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_cooinstead 
 - Use 
 - Remove deprecated 
gb.io.from_numpyandgb.io.to_numpy(#528)- Use 
Matrix.from_dense,Vector.from_dense,matrix.to_dense, andvector.to_denseinstead 
 - Use 
 - Remove deprecated 
gb.core.agg(#527)- Use 
gb.core.operator.agginstead 
 - Use 
 
Maintenance
- Drop support for:
- numpy 1.21 (#536)
 
 - Add support for:
- numba 0.59 (#536)
 - scipy 1.12 (#536)
 - pandas 2.2 (#536)
 - sparse 0.15 (#536)
 
 - Misc. (#530, #531, #533)
 
Download
2023.12.0
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
- Add support for:
- networkx 3.2 (#516)
 - numba 0.58 (#525)
 - awkward 2.5 (#525)
 
 - Misc. (update dependency versions, etc.) (#516, #521, #522, #523, #525)
 
Download
2023.10.0
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.drawinstead (#485) - Removed 
A.ss.scan_rowwise,A.ss.selectk_rowwise,A.ss.compactify_rowwise, andA.ss.*_columnwisevariants (#486)- Use e.g. 
A.ss.scan(order="row")instead 
 - Use e.g. 
 
Enhancements
- Support SuiteSparse:GraphBLAS 8 (#456)
- Document and improve using the JIT for user-defined operators defined in C (#512)
 - Document 
gb.ss.configoptions (#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.burbleto enable SuiteSparse:GraphBLAS diagnostics; may be used as a context (#514) - Add CSS to better stylize matrices in online docs (#502)
 - Add 
.thunk_typeattribute 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:
- Python 3.8 (#489)
 - scipy 1.8 (#489)
 
 - Add support for:
- Python 3.12 (#508)
 - numpy 1.26 (#493, #505)
 - pandas 2.1 (#500)
 - awkward 2.4 (#500)
 
 - Drop usage of coveralls (use codecov instead) (#509)
 
New contributors
- We welcomed @alugowski, @paul-tqh-nguyen, and @Transurgeon as new code contributors this release 🎉
 
Download
2023.7.0
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_market1.6, 1.7, and 1.8awkward2.2 and 2.3numpy1.25scipy1.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)
 
Download
2023.5.0
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-graphblasand dependencies via pip.- The recommended way to install 
python-graphblasvia 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 installspandasandscipy)pip install python-graphblas[all](installs every optional dependency including for testing and viz)
 pip install python-graphblaswill keep its current behavior for about a year- This currently installs 
suitesparse-graphblasandnumba, which may be dropped as required dependencies in 2024.3.0 - Release 2024.3.0 or later will probably only depend on 
numpy,donfigandpyyaml 
- This currently installs 
 
 - The recommended way to install 
 
Enhancements
- Document parameters to operator methods 
register_newandregister_anonymous(#446) - Update 
userguide/operations.rstto 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.pyinto multiple files (#448) - Begin using https://pre-commit-ci for running git pre-commit (#432)
 .github/workflows/imports.ymlnow randomizes Python version and OS (#423)- Marked poorly covered code with comments 
# NOT COVERED,# BRANCH NOT COVERED, and# FLAKY COVERAGE - Dropped support for 
sparse0.12 - Support 
networkx3.1,numpy1.24,numba0.57,pandas2.0,fast_matrix_market1.5 
Download
2023.3.0
2023.3.0
Deprecations
- Deprecate 
graphblas.core.aggnamespace (#420)- Use 
graphblas.core.operator.aggnamespace 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-graphblaswheels 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 🎉
Download
2023.2.0
2023.2.0
Expired deprecations
- Remove deprecated 
Matrix.new,Vector.new, andScalar.newconstructors (#380)- Use e.g 
Matrix(...)andVector(...)instead 
 - Use e.g 
 - Remove deprecated 
require_monoid=argument inewise_add(#377) - Remove deprecated 
io.from_scipy_sparse_matrixandio.to_scipy_sparse_matrix(#393)- Use e.g. 
io.from_scipy_sparseinstead 
 - Use e.g. 
 
Deprecations
- Deprecate 
io.from_numpyandio.to_numpy(#382)- Use e.g. the new methods 
Vector.from_denseandMatrix.to_denseinstead - Wil be removed in version 2023.10.0 or later
 
 - Use e.g. the new methods 
 
Enhancements
- Add 
from_denseandto_densemethods toVectorandMatrixto convert between NumPy arrays (#382) - Add 
from_scalartoVectorandMatrixto create fully dense objects from a scalar (#382) - Improve inferring sub-array dtypes when constructing objects (#381)
 .waitnow returnsselfso it can be used with method-chaining (#379)- Add 
op.is_idempotentproperty to Monoids that meansop(x, x) == x(#388) - Support complex dtypes on Windows (#394, #395)
python-suitesparse-graphblasv7.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)
Download