Repository navigation
First stable release. The public API is now committed to semantic versioning. Headline items: stabilized core (reprs, view returns, exceptions, copy / deepcopy / pickle, equality), new I/O (compressed HIF, AHORN, Hypergraphx-Data), nested generators, consistent generator naming, embedded nodes in multilayer plots, local RNG state, discoverable stats, and a shipped xgi.skill package for AI pair programming.
- Consistent naming across generators. #780 (@nwlandry)
- Trimming README and docs landing page. #778 (@maximelucas)
- New iterative generators. #661 (@maximelucas)
- chore: cap supported Python at <3.15. #777 (@leotrs)
- New integrations with AHORN and Hypergraphx-Data. #759 (@nwlandry)
- Embedded nodes in draw_multilayer. #753 (@thomasrobiglio)
- docs: complete available-stats lists and reference from filterby. #776 (@leotrs)
- docs: add AI-coding-assistant pointer to AGENTS.md. #775 (@leotrs)
- test, fix: harden against transient xgi-data outages. #772 (@leotrs)
- fix: raise on empty input in add_weighted_edges_from and add_weighted_simplices_from. #771 (@raashish1601)
- fix: keep non-integer weights in incidence_matrix. #770 (@raashish1601)
- Drop support for Python 3.10 and update benchmark workflow. #769 (@nwlandry)
- feat!:
__repr__matches the dict shape ofmembers(). #768 (@leotrs) - feat!: deprecate
DiEdgeView.sources/targets. #767 (@leotrs) - Finish to-do list for stable DiHypergraph. #763 (@nwlandry)
- Add nodes from dict. #762 (@nwlandry)
- feat!: standardize view-method return shapes. #766 (@leotrs)
- feat!: remove
xgi.dynamicsmodule. #750 (@leotrs) - BREAKING: remove support for bespoke XGI json format. #757 (@nwlandry)
- Remove unused Claude files. #758 (@nwlandry)
- feat: add
IDView.duplicate_groups(). #755 (@leotrs) - docs: release how-to. #723 (@kaiser-dan)
- refactor: mark
read_json/write_jsonas internal helpers. #738 (@leotrs) - feat: add
H.nodes.posstat accessor for node positions. #728 (@leotrs) - feat: add
with_positionsoption toring_lattice. #729 (@leotrs) - Update pubs. #754 (@nwlandry)
- docs: add Randomness page explaining seed semantics. #737 (@leotrs)
- refactor: standardize exception types across public API. #739 (@leotrs)
- fix: correct docstring parameters that do not match the signature. #751 (@karpovantonme)
- Make networks copyable and picklable on Python 3.14. #747 (@DMZ22)
- Integrate optional plotting capabilities into
ashist(). #636 (@willcollins10) - docs: document dev-vs-main PR workflow in CLAUDE.md. #734 (@leotrs)
- fix: only proxy actual stats through
Hypergraph.__getattr__. #736 (@leotrs) - feat: ship an agent skill alongside the xgi package. #741 (@leotrs)
- Docs: fix match between accepted formats and docs. #733 (@maximelucas)
- Optimize
node_swap. #735 (@maximelucas) - feat: add nested hypergraph generators (Kim et al. 2023, Barrett et al. 2025). #683 (@jg-you)
- Fix kwarg validation bugs in
draw()reported in #730 and #731. #732 (@maximelucas) - fix: accept
np.random.Generatoras seed in spring layouts. #724 (@leotrs) - Add algorithms to Gallery. #714 (@maximelucas)
- docs: clarify that
H.edges[idx]returns attributes, not members. #727 (@leotrs) - docs: deduplicate stats docstrings and link to algorithms. #726 (@leotrs)
- feat: add
emptiesoption to cleanup methods. #725 (@leotrs) - Update issue templates. #722 (@kaiser-dan)
- fix: issue #718. #719 (@maximelucas)
- fix: account for
idx=0when adding edges. #721 (@maximelucas)
First-time contributors
Welcome and thank you to the new contributors who shipped code in this release:
- @raashish1601 (#770, #771)
- @karpovantonme (#751)
- @DMZ22 (#747)
- @jg-you (#683)