Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
ff08eee
updated to uv
Jun 11, 2025
a7c3f95
Update .gitignore
Jun 12, 2025
b377b7d
numpy2.0 compatability
Jun 11, 2025
e9c0eb5
update formating and dependencies
Jun 12, 2025
582e5ba
Refactor [UV-RUFF]
Jun 12, 2025
8f8f610
Ruff
rossant Mar 10, 2026
3c4756a
Fix failing util test by fixing NumPy compat issue
rossant Mar 10, 2026
8641fa4
Update pyproject to fallback to Qt5 for now
rossant Mar 10, 2026
eb49fc2
WIP: fixes
rossant Mar 10, 2026
9a51b10
Fixes in phy.plot
rossant Mar 10, 2026
7f36f19
WIP: fixes in cluster, gui, plot subpackages
rossant Mar 10, 2026
f1f8ea7
Trying to hide some deprecation warnings in dependencies
rossant Mar 10, 2026
fa76107
Fix supervisor test
rossant Mar 10, 2026
c777f84
Headless Qt tests by default
rossant Mar 10, 2026
a34a64b
Fixing warnings with qtbot
rossant Mar 10, 2026
d7ddd21
Fix hanging probe view by forcing positions to float64 (work-around b…
rossant Mar 10, 2026
48ef6a9
Warning fixes in apps
rossant Mar 10, 2026
0d7b1a4
Fix template GUI tests
rossant Mar 10, 2026
dbd63b4
Fixing IPython warnings by ugprading the IPython packages dependencies
rossant Mar 10, 2026
e80b14a
WIP: klusta dependency
rossant Mar 10, 2026
abca357
WIP: IPython fixes
rossant Mar 10, 2026
9fa464c
Work-around phylib hang bug in geometry util
rossant Mar 10, 2026
48f20e4
Fixes in Kwik GUI
rossant Mar 10, 2026
a18a72c
Fixing segfault with offscreen plot tests on Linux
rossant Mar 10, 2026
257c473
Run apps integration tests after the unit tests
rossant Mar 11, 2026
05da8b3
WIP: fixing IPython-related tests
rossant Mar 11, 2026
97c1ec1
Disable CI for now
rossant Mar 11, 2026
a3d2222
WIP: upgrading dependencies
rossant Mar 11, 2026
b372558
WIP: upgrading dependencies
rossant Mar 11, 2026
91460fb
Remove unused dask dependency
rossant Mar 11, 2026
604e4ec
Fixing headless tests in gui and plot packages
rossant Mar 11, 2026
42cb4b5
Fixing bug in plot.interact
rossant Mar 11, 2026
c4accd4
WIP: updating dependencies
rossant Mar 11, 2026
96af094
Upgrading scikit-learn dependency
rossant Mar 11, 2026
3b9d022
WIP: updating numpy and scipy dependencies
rossant Mar 11, 2026
08b7eef
Removing unused dependencies
rossant Mar 11, 2026
32ee96f
Updating matplotlib dependency
rossant Mar 11, 2026
6981115
Raise Python floor dependency
rossant Mar 11, 2026
99e7d0a
Upgrade pyopengl dependency
rossant Mar 11, 2026
af9e5f3
Upgrade pip
rossant Mar 11, 2026
3dada13
Update README
rossant Mar 11, 2026
e9f2453
Add more table filter tests
rossant Mar 11, 2026
3336a0c
WIP: table filter tests
rossant Mar 11, 2026
c13d552
More table filter tests
rossant Mar 11, 2026
b5dcea1
WIP: Qt-based version of the table, underlying the cluster and simila…
rossant Mar 11, 2026
43e781a
WIP: Qt table fixes
rossant Mar 11, 2026
e3e7fee
WIP: removing legacy web view
rossant Mar 11, 2026
e664f85
Update lock file
rossant Mar 11, 2026
2c6446c
Fixes in Qt table
rossant Mar 11, 2026
56c92b5
Preparing v2.1rc1 release
rossant Mar 11, 2026
42de14d
WIP: test fixes
rossant Mar 11, 2026
53e9565
Preparing for RC
rossant Mar 11, 2026
e1bf895
WIP: macOS test fixes
rossant Mar 11, 2026
b9b1047
Add docs
rossant Mar 12, 2026
423a53d
Release make commands
rossant Mar 18, 2026
c3e446f
PyQt5 is now a mandatory dependency
rossant Mar 18, 2026
f532cea
WIP: updating README and docs
rossant Mar 18, 2026
07a09ae
Add release smoke test script
rossant Mar 19, 2026
b0bfb67
WIP: releasing commands
rossant Mar 19, 2026
d40791d
WIP: macOS fixes
rossant Mar 19, 2026
df15a83
Fixing releasing commands
rossant Mar 19, 2026
131a798
WIP: simplification of releasing commands
rossant Mar 19, 2026
4a714d2
Remove announcement file
rossant Mar 21, 2026
bb1bbcb
Add RC install instructions in release.md
rossant Mar 22, 2026
6ea6188
Fixes #1375
rossant May 9, 2026
ca38bd1
Fix blank numpy-typed columns in native Qt ClusterView
Jun 14, 2026
c4bec97
Merge pull request #1378 from stottbot/fix/clusterview-numpy-blank-co…
rossant Jun 15, 2026
fde0c1b
docs: add code of conduct
rossant Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: CI

on:
workflow_dispatch:

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
qt-version: ["qt5"]

steps:
- uses: actions/checkout@v4

# Set up display for GUI testing on Linux
- name: Set up display (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y xvfb herbstluftwm
export DISPLAY=:99.0
Xvfb :99 -screen 0 1400x900x24 -ac +extension GLX +render &
sleep 3
herbstluftwm &
sleep 1
env:
DISPLAY: :99.0

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}

- name: Install dependencies
run: uv sync --dev --extra ${{ matrix.qt-version }}

- name: Install phylib from branch
run: |
if [ "${{ github.ref_name }}" = "master" ]; then
uv add "git+https://github.com/cortex-lab/phylib.git@master"
elif [ "${{ github.ref_name }}" = "dev" ]; then
uv add "git+https://github.com/cortex-lab/phylib.git@dev"
else
uv add "git+https://github.com/cortex-lab/phylib.git@${{ github.ref_name }}"
fi
shell: bash

- name: Install additional test dependencies
run: |
uv add "git+https://github.com/kwikteam/klusta.git"
uv add "git+https://github.com/kwikteam/klustakwik2.git"

- name: Lint with ruff
run: uv run ruff check phy

- name: Check formatting with ruff
run: uv run ruff format --check phy

- name: Test with pytest (Linux)
if: runner.os == 'Linux'
run: uv run make test-full
env:
DISPLAY: :99.0
QT_QPA_PLATFORM: offscreen

- name: Test with pytest (Windows/macOS)
if: runner.os != 'Linux'
run: uv run pytest --cov=phy --cov-report=xml phy
env:
QT_QPA_PLATFORM: offscreen

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

build:
runs-on: ubuntu-latest
needs: test

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Set up Python
run: uv python install 3.9

- name: Build package
run: uv build

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
5 changes: 1 addition & 4 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
name: Codespell

on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:

permissions:
contents: read
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/python-test.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
name: Install and Test with Pip

on:
pull_request:
push:
branches: [ "main", "master" ]
workflow_dispatch:


Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
local_tests
contrib
data
doc
Expand Down
1 change: 1 addition & 0 deletions .release-smoke/latest-testpypi-version.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.1.0rc1.dev3
116 changes: 116 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances
of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Project maintainers are responsible for clarifying and enforcing our standards
of acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all project spaces, and also applies when an
individual is officially representing the project in public spaces. Examples of
representing the project include using an official email address, posting via an
official social media account, or acting as an appointed representative at an
online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the project maintainers responsible for enforcement at
cyrille.rossant@gmail.com. All complaints will be reviewed and investigated
promptly and fairly.

All project maintainers are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Project maintainers will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

Community Impact: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

Consequence: A private, written warning from project maintainers, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

Community Impact: A violation through a single incident or series of actions.

Consequence: A warning with consequences for continued behavior. No interaction
with the people involved, including unsolicited interaction with those enforcing
the Code of Conduct, for a specified period of time. Violating these terms may
lead to a temporary or permanent ban.

### 3. Temporary Ban

Community Impact: A serious violation of community standards, including
sustained inappropriate behavior.

Consequence: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. Violating
these terms may lead to a permanent ban.

### 4. Permanent Ban

Community Impact: Demonstrating a pattern of violation of community standards,
including sustained inappropriate behavior, harassment of an individual, or
aggression toward or disparagement of classes of individuals.

Consequence: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.1,
available at <https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.

Community Impact Guidelines were inspired by Mozilla's code of conduct
enforcement ladder.
2 changes: 2 additions & 0 deletions CONTRIBUTE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
## Contribute

Participation in phy is governed by the project [Code of Conduct](CODE_OF_CONDUCT.md).

### Setup

On your development computer:
Expand Down
10 changes: 2 additions & 8 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
include LICENSE
include LICENSE.md
include README.md
include requirements.txt
include requirements-dev.txt

recursive-include tests *
recursive-include phy/electrode/probes *.prb
recursive-include phy/plot/glsl *.vert *.frag *.glsl
recursive-include phy/plot/static *.npy *.gz *.txt
recursive-include phy/cluster/static *.html *.css
recursive-include phy/plot/static *.gz
recursive-include phy/gui/static *.html *.css *.js *.ttf *.png
recursive-include phy/gui/static/icons *.html *.css *.js *.ttf *.png
recursive-include phy/apps/*/static *.json
recursive-exclude * __pycache__
recursive-exclude * *.py[co]
Loading