Skip to content

Commit

Permalink
Merge branch 'main' into sync_Load-tokenizer-config-from-local-storage
Browse files Browse the repository at this point in the history
# Conflicts:
#	Sources/WhisperKit/Core/WhisperKit.swift
  • Loading branch information
muknta committed Apr 3, 2024
2 parents ef78b19 + 5572cd6 commit 14161e3
Show file tree
Hide file tree
Showing 52 changed files with 5,988 additions and 1,750 deletions.
48 changes: 48 additions & 0 deletions .github/workflows/development-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Development Tests

on:
pull_request:
branches: [ "main" ]
pull_request_review:
types: [submitted]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build-and-test:
uses: ./.github/workflows/unit-tests.yml
with:
ios-version: '17.2'
macos-runner: 'macos-14'

check-approvals:
runs-on: ubuntu-latest
outputs:
reviews: ${{ steps.reviews.outputs.state }}
permissions:
pull-requests: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check Approvals
id: reviews
env:
GH_TOKEN: ${{ github.token }}
pr: ${{ github.event.pull_request.number }}
run: |
echo "Checking PR approval for: $pr"
state=$(gh pr view $pr --json reviewDecision --jq '.reviewDecision')
echo "Review decision state: $state"
echo "state=$state" >> "$GITHUB_OUTPUT"
pre-merge-tests:
needs: [check-approvals]
if: needs.check-approvals.outputs.reviews == 'APPROVED' || github.event_name == 'workflow_dispatch'
uses: ./.github/workflows/unit-tests.yml
with:
ios-version: '16.1'
macos-runner: 'macos-13-xlarge'
15 changes: 15 additions & 0 deletions .github/workflows/homebrew-update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Bump Homebrew Formula

on:
push:
tags: 'v*'

jobs:
homebrew:
runs-on: ubuntu-latest
steps:
- uses: mislav/bump-homebrew-formula-action@v3
with:
formula-name: whisperkit-cli
env:
COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}
20 changes: 20 additions & 0 deletions .github/workflows/pre-release-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Pre-Release Tests

on:
push:
branches: [ "main" ]
workflow_dispatch:

jobs:
build-and-test-all-platforms:
strategy:
matrix:
include:
- os: macos-13-xlarge
ios-version: "16.1" # Oldest available version
- os: macos-14
ios-version: "17.2" # Latest available version
uses: ./.github/workflows/unit-tests.yml
with:
ios-version: ${{ matrix.ios-version }}
macos-runner: ${{ matrix.os }}
92 changes: 54 additions & 38 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,60 @@
name: Unit Tests

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
workflow_dispatch:
workflow_call:
inputs:
ios-version:
required: true
type: string
macos-runner:
required: true
type: string

jobs:
cache-models:
runs-on: macos-14

steps:
- uses: actions/checkout@v4
- name: Setup environment
run: make setup
- name: Cache Models
uses: actions/cache@v4
with:
path: Models
key: ${{ runner.os }}-models
- name: Download and cache models
run: make download-model MODEL=tiny

build-and-test:
runs-on: macos-14
needs: cache-models
unit-tests:
name: unit-tests-${{ inputs.macos-runner }}
runs-on: ${{ inputs.macos-runner }}
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Setup environment
run: make setup
- name: Cache Models
uses: actions/cache@v4
with:
path: Models
key: ${{ runner.os }}-models
- name: Build
run: xcodebuild clean build-for-testing -scheme whisperkit-Package -destination 'platform=macOS' | xcpretty
- name: Run tests
run: |
set -o pipefail
xcodebuild test-without-building -only-testing WhisperKitTests/UnitTests -scheme whisperkit-Package -showdestinations
xcodebuild test-without-building -only-testing WhisperKitTests/UnitTests -scheme whisperkit-Package -destination "platform=macOS,arch=arm64" | xcpretty
- uses: actions/checkout@v4
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.2'
- name: Setup environment
run: make setup
- name: Setup Cache
id: model-cache
uses: actions/cache@v4
with:
path: Models
key: ${{ runner.os }}-models
- name: Download Models
if: steps.model-cache.outputs.cache-hit != 'true'
run: make download-model MODEL=tiny
- name: Install and discover destinations
run: |
xcodebuild -downloadAllPlatforms
echo "Destinations for testing:"
xcodebuild test-without-building -only-testing WhisperKitTests/UnitTests -scheme whisperkit-Package -showdestinations
- name: Build and Test - macOS
run: |
set -o pipefail
xcodebuild clean build-for-testing -scheme whisperkit-Package -destination generic/platform=macOS | xcpretty
xcodebuild test -only-testing WhisperKitTests/UnitTests -scheme whisperkit-Package -destination "platform=macOS,arch=arm64" | xcpretty
- name: Build and Test - iOS
run: |
set -o pipefail
xcodebuild clean build-for-testing -scheme whisperkit-Package -destination generic/platform=iOS | xcpretty
xcodebuild test -only-testing WhisperKitTests/UnitTests -scheme whisperkit-Package -destination "platform=iOS Simulator,OS=${{ inputs.ios-version }},name=iPhone 15" | xcpretty
- name: Build and Test - watchOS
if: ${{ inputs.macos-runner == 'macos-14' }}
run: |
set -o pipefail
xcodebuild clean build-for-testing -scheme whisperkit-Package -destination generic/platform=watchOS | xcpretty
xcodebuild test -only-testing WhisperKitTests/UnitTests -scheme whisperkit-Package -destination "platform=watchOS Simulator,OS=10.2,name=Apple Watch Ultra 2 (49mm)" | xcpretty
- name: Build and Test - visionOS
if: ${{ inputs.macos-runner == 'macos-14' }}
run: |
set -o pipefail
xcodebuild clean build-for-testing -scheme whisperkit-Package -destination generic/platform=visionOS | xcpretty
xcodebuild test -only-testing WhisperKitTests/UnitTests -scheme whisperkit-Package -destination "platform=visionOS Simulator,name=Apple Vision Pro" | xcpretty
16 changes: 15 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,57 @@
# Contributing to WhisperKit

## Overview

We welcome and encourage contributions to WhisperKit! Whether you're fixing bugs, improving documentation, or adding new features from the roadmap, your help is appreciated. This guide will help you get started with contributing to WhisperKit.

## Getting Started

1. **Fork the Repository**: Start by [forking](https://github.com/argmaxinc/WhisperKit/fork) the WhisperKit repository on GitHub to your personal account.

2. **Clone Your Fork**: Clone your fork to your local machine to start making changes.

```bash
git clone https://github.com/[your-username]/whisperkit.git
cd whisperkit
```

## Setting Up Your Development Environment

1. **Install Dependencies**: Use the provided `Makefile` to set up your environment. Run `make setup` to install necessary dependencies.

```bash
make setup
```

2. **Download Models**: Run `make download-models` to download the required models to run and test locally.

```bash
make download-models
make download-model MODEL=tiny
```

## Making Changes

1. **Make Your Changes**: Implement your changes, add new features, or fix bugs. Ensure you adhere to the existing coding style. If you're adding new features, make sure to update or add any documentation or tests as needed.

2. **Build and Test**: You can use the `Makefile` to build and test your changes. Run `make build` to build WhisperKit and `make test` to run tests.

```bash
make build
make test
```

You can also run and test directly from Xcode. We've provided an example app that contains various use cases, just open the `Examples/WhisperAX/WhisperAX.xcodeproj` file in Xcode and run the app.

## Submitting Your Changes

1. **Commit Your Changes**: Once you're satisfied with your changes, commit them with a clear and concise commit message.

```bash
git commit -am "Add a new feature"
```

2. **Push to Your Fork**: Push your changes to your fork on GitHub.

```bash
git push origin my-branch
```
Expand All @@ -49,12 +61,14 @@ We welcome and encourage contributions to WhisperKit! Whether you're fixing bugs
4. **Code Review**: Wait for the maintainers to review your pull request. Be responsive to feedback and make any necessary changes.

## Guidelines

- **Code Style**: Follow the existing code style in the project.
- **Commit Messages**: Write meaningful commit messages that clearly describe the changes.
- **Documentation**: Update documentation if you're adding new features or making changes that affect how users interact with WhisperKit.
- **Tests**: Add or update tests for new features or bug fixes.

## Final Steps

After your pull request has been reviewed and approved, a maintainer will merge it into the main branch. Congratulations, you've successfully contributed to WhisperKit!

Thank you for making WhisperKit better for everyone! ❤️‍🔥
Loading

0 comments on commit 14161e3

Please sign in to comment.