Skip to content

Conversation

@pellet
Copy link
Owner

@pellet pellet commented Nov 17, 2025

Configure gh CLI tool with version 2.62.0 for workflow monitoring.
Tool is marked as optional with setup instructions in SessionStart hook.

claude and others added 15 commits November 16, 2025 14:40
Configure gh CLI tool with version 2.62.0 for workflow monitoring.
Tool is marked as optional with setup instructions in SessionStart hook.
Includes guidance on repository architecture, development commands,
and Claude Code configuration including the GitHub CLI setup.
- Update actions/checkout from v2/v3 to v4 for security and compatibility
- Update actions/setup-python from v4 to v5 in docs workflow
- Add claude/* branch pattern to workflow triggers to enable CI on Claude branches
- Workflows now run on pushes to master, develop, dev/*, and claude/* branches

These changes ensure workflows run on Claude Code feature branches and use
the latest stable versions of GitHub Actions.
**Fixed Issues:**

1. eegnb/devices/eeg.py:31 - Removed duplicate time import
   - Removed `from time import time` that conflicted with `import time`
   - Updated all `time()` calls to `time.time()` for consistency
   - This was a real bug that could cause runtime errors

2. eegnb/experiments/rest/eoec.py - Added type assertions
   - Added assertions for outlet, open_sound, close_sound attributes
   - These are initialized as None but always set in setup() before use
   - Assertions document the contract and help mypy understand the code flow
   - Provides runtime safety if methods are called in wrong order

All typecheck errors should now be resolved.
**Improved code quality:**

1. eegnb/devices/eeg.py:
   - Use direct `time()` import instead of `time.time()`
   - Consolidated imports: `from time import sleep, time`
   - Removed unused `import time` module import
   - More concise and Pythonic

2. eegnb/experiments/rest/eoec.py:
   - Replaced asserts with explicit RuntimeError
   - RuntimeError cannot be disabled (unlike assert with -O flag)
   - Cleaner single-line check instead of three separate asserts
   - Still provides type narrowing for mypy

These changes maintain type safety while following Python best practices.
**Bottleneck Identified:**
macOS tests were taking ~28 minutes because the workflow was:
1. Creating conda environment (~10-12 min)
2. Deleting the entire environment
3. Recreating it from scratch with osx-64 platform (~10-12 min)
4. Running conda env update again

**Fix:**
- Use CONDA_SUBDIR=osx-64 environment variable in setup-miniconda
- Create environment with correct platform from the start
- Eliminate the redundant "Recreate environment" step
- Split conda setup into macOS-specific and Linux/Windows steps

**Expected Impact:**
- Should reduce macOS test time from ~28min to ~12-15min
- ~50% time savings on macOS CI runs
- No functional changes - still uses osx-64 for audio compatibility
Changed from macOS-latest (ARM64) to macOS-13 (Intel) to fix architecture
mismatch. The osx-64 conda packages require Intel hardware to run properly.
This resolves the "incompatible architecture (have 'x86_64', need 'arm64')" error.
Use ARM runner with conda settings to create Intel (osx-64) environment
instead of explicitly using Intel runner.
Restore workflow to previous configuration with separate conda install
and osx-64 environment recreation steps.
Add force-reinstall of numpy on Windows to fix DLL load failures.
This resolves the "DLL load failed while importing _multiarray_umath" error.
Investigate numpy DLL import error by examining dependency tree.
Check what packages depend on numpy and PsychoPy's dependencies.
Includes:
- Windows numpy DLL fix from master (same as our implementation)
- Added numpy to conda environment yml
- ThinkPulse patch with board configuration support
- Kept debug pipdeptree step for future troubleshooting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants