diff --git a/.github/workflows/installation-tips-test.yml b/.github/workflows/installation-tips-test.yml index e83399cf7c..11d2de2c9e 100644 --- a/.github/workflows/installation-tips-test.yml +++ b/.github/workflows/installation-tips-test.yml @@ -1,40 +1,40 @@ -name: Creates Conda Install for Installation Tips +name: Checks uv installation from Installation Tips on: workflow_dispatch: schedule: - cron: "0 12 * * 0" # Weekly at noon UTC on Sundays +env: + UV_SYSTEM_PYTHON: 1 + jobs: installation-tips-testing: - name: Build Conda Env on ${{ matrix.os }} OS + name: Test uv installation on ${{ matrix.os }} OS runs-on: ${{ matrix.os }} - defaults: - run: - shell: bash -el {0} strategy: fail-fast: false matrix: include: - os: ubuntu-latest - label: linux_dandi - os: macos-latest - label: mac - os: windows-latest - label: windows steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: '3.10' - - name: Test Conda Environment Creation - uses: conda-incubator/setup-miniconda@v3 - with: - miniconda-version: "latest" - environment-file: ./installation_tips/full_spikeinterface_environment_${{ matrix.label }}.yml - activate-environment: si_env - - name: Check Installation Tips - run: python ./installation_tips/check_your_install.py --ci # ci flag turns off gui + python-version: '3.12' + - name: Install uv + uses: astral-sh/setup-uv@v6 + + - name: Install requirements + run: uv pip install -r ./installation_tips/beginner_requirements_stable.txt + - name: Check Installation Tips (mac) + if: ${{ matrix.os == 'macos-latest' }} + run: python ./installation_tips/check_your_install.py --ci --short --skip-kilosort4 # ci flag turns off gui + - name: Check Installation Tips (linux/windows) + if: ${{ matrix.os != 'macos-latest' }} + run: python ./installation_tips/check_your_install.py --ci --short # ci flag turns off gui - name: Windows cleanup - if: ${{ matrix.label == 'windows' }} + if: ${{ matrix.os == 'windows-latest' }} run: python ./installation_tips/cleanup_for_windows.py diff --git a/installation_tips/check_your_install.py b/installation_tips/check_your_install.py index e8437743b8..caafe09e24 100644 --- a/installation_tips/check_your_install.py +++ b/installation_tips/check_your_install.py @@ -18,11 +18,16 @@ def check_import_si_full(): import spikeinterface.full as si -def _create_recording(): +def _create_recording(short=False): import spikeinterface.full as si + if short: + durations = [30.0] + else: + durations = [200.0] + rec, _ = si.generate_ground_truth_recording( - durations=[200.0], sampling_frequency=30_000.0, num_channels=16, num_units=10, seed=2205 + durations=durations, sampling_frequency=30_000.0, num_channels=16, num_units=10, seed=2205 ) rec.save(folder="./toy_example_recording", verbose=False, **job_kwargs) @@ -85,20 +90,24 @@ def _clean(): # add ci flag so that gui will not be used in ci # end user can ignore parser.add_argument("--ci", action="store_false") +parser.add_argument("--short", action="store_false") +parser.add_argument("--skip-kilosort4", action="store_true") + if __name__ == "__main__": args = parser.parse_args() _clean() - _create_recording() + _create_recording(short=args.short) steps = [ ("Import spikeinterface", check_import_si), ("Import spikeinterface.full", check_import_si_full), ("Run tridesclous2", run_tridesclous2), - ("Run kilosort4", run_kilosort4), ] + if not args.skip_kilosort4: + steps.append(("Run kilosort4", run_kilosort4)) # backwards logic because default is True for end-user if args.ci: