An open API service providing repository metadata for many open source software ecosystems.

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: 16 days ago
Pushed at: 4 days ago
Last synced at: 3 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

Releases
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_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 🎉
9 months ago
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

9 months ago
Download
2025.2.0a0

2025.2.0a0 Pre-release

This is a pre-release; see 2025.2.0

9 months ago
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, 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

  • 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)
over 1 year ago
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)

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

  • 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)
almost 2 years ago
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; 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:
    • 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 🎉
about 2 years ago
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_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)
over 2 years ago
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-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
over 2 years ago
Download
2023.3.0

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

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 🎉

over 2 years ago
Download
2023.2.0

2023.2.0

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)
    • 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)
over 2 years ago
Download