diff --git a/doc/auto-release-notes.sh b/doc/auto-release-notes.sh new file mode 100644 index 00000000..1a814460 --- /dev/null +++ b/doc/auto-release-notes.sh @@ -0,0 +1,38 @@ +#!/bin/bash +if [ $# -eq 0 ]; then + echo "Usage: $0 START_DATE (format: YEAR-MM-DD) END_DATE [LABEL] [BRANCH1,BRANCH2] [LIMIT]" + exit 1 +fi + +START_DATE="$1" +END_DATE="$2" + +if [ -n "$4" ]; then + IFS=',' read -ra BRANCHES <<< "$4" +else + BRANCHES=("main") +fi + +if [ -n "$5" ]; then + LIMIT=$5 +else + LIMIT=300 +fi + +OUTPUT="" +for BRANCH in "${BRANCHES[@]}"; do + OUTPUT+=$(gh pr list --repo SpikeInterface/probeinterface --limit $LIMIT --base "$BRANCH" --state merged --json number,title,mergedAt \ + | jq -r --arg start_date "${START_DATE}T00:00:00Z" --arg end_date "${END_DATE}T00:00:00Z" \ + '.[] | select(.mergedAt >= $start_date and .mergedAt <= $end_date) | "* \(.title) (#\(.number))"') +done +if [ -n "$OUTPUT" ]; then + echo "" + echo "$OUTPUT" + echo "" +fi + +echo "Contributors:" +echo "" +gh pr list --repo SpikeInterface/probeinterface --limit 1000 --base main --state merged --json number,title,author,mergedAt \ + | jq -r --arg start_date "${START_DATE}T00:00:00Z" --arg end_date "${END_DATE}T00:00:00Z" \ + '[.[] | select(.mergedAt >= $start_date and .mergedAt <= $end_date and .author.login != "app/pre-commit-ci") | .author.login] | unique | .[] | "* @" + .' diff --git a/doc/release_notes.rst b/doc/release_notes.rst index f93343d1..01be54e9 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -6,6 +6,7 @@ Release notes .. toctree:: :maxdepth: 1 + releases/0.4.0.rst releases/0.3.2.rst releases/0.3.1.rst releases/0.3.0.rst diff --git a/doc/releases/0.4.0.rst b/doc/releases/0.4.0.rst new file mode 100644 index 00000000..9c95ef18 --- /dev/null +++ b/doc/releases/0.4.0.rst @@ -0,0 +1,59 @@ +probeinterface 0.4.0 +-------------------- + +Jul, 6th 2026 + + +Features +^^^^^^^^ + +* Add regex validation pattern in schema version propert (#450) +* Enhance `ProbeGroup` API and add `ProbeGroup._global_contact_order` for interleaved contacts (#446) +* Add Neuropixels 2.0 support to `read_spikegadgets_neuropixels` (#441) +* Add Neuropixels saturation levels estimation from probe table/metadata (#434) +* Auto-generate `contact_ids` when not explicitly set (#429) +* Migrate `read_spikegadgets` to the catalogue pattern (#418) +* Make `_parse_imro_string` self-contained by deriving IMRO field schemas from the catalogue (#417) +* Implement copy/get_slice/get_global_contact_positions for probegroup (#416) +* Remove legacy probe construction path for `read_imro` and support NP1110 (#410) + +Bug fixes +^^^^^^^^^ + +* Preserve planar contour on ProbeGroup slicing and clarify ambiguous `select_contacts` errors (#453) +* Discard 'apps' folder when listing manufacturers (#451) +* Raise on wrong-sized `device_channel_indices` instead of silently accepting (#430) +* Preserve identity on `Probe.copy()` (#428) +* Add contact_sides to JSON schema (#419) +* Fix quad-base with custom names (#413) + + +Deprecations +^^^^^^^^^^^^ + +* Rename `read_spikegadgets` to `read_spikegadgets_neuropixels` and add `has_spikegadgets_neuropixels_probes` (#440) +* Rename `read_openephys` to `read_openephys_neuropixels` and add `has_neuropixels_probes` (#427) + + +Testing +^^^^^^^ + +* Update CI actions (#438) +* Add NP2020 probe to test suite (#435) + +Docs +^^^ + +* Document the Neuropixels catalogue pattern (#443) + +Packaging +^^^^^^^^^ + +* Fix typing, deprecations, and update to Python3.10 (#414) + +Contributors: + +* @alejoe91 +* @chrishalcrow +* @h-mayorquin +* @samuelgarcia diff --git a/pyproject.toml b/pyproject.toml index 51231d83..6f148c66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "probeinterface" -version = "0.3.2" +version = "0.4.0" authors = [ { name="Samuel Garcia", email="sam.garcia.die@gmail.com" }, { name="Alessio Buccino", email="alessiop.buccino@gmail.com" },