diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..6eb0056 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,65 @@ +name: Run tests and upload coverage + +on: + push + +jobs: + test: + name: Run tests with pytest + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: ["ubuntu-latest", "windows-latest"] + python-version: ["3.9", "3.10", "3.11", "3.12"] + exclude: + - os: windows-latest + python-version: "3.9" + - os: windows-latest + python-version: "3.11" + - os: windows-latest + python-version: "3.12" + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + allow-prereleases: true + + # Step for Windows: Create and activate a virtual environment + - name: Create and activate a virtual environment (Windows) + if: ${{ runner.os == 'Windows' }} + run: | + irm https://astral.sh/uv/install.ps1 | iex + $env:Path = "C:\Users\runneradmin\.local\bin;$env:Path" + uv venv .venv + "VIRTUAL_ENV=.venv" | Out-File -FilePath $env:GITHUB_ENV -Append + "$PWD/.venv/Scripts" | Out-File -FilePath $env:GITHUB_PATH -Append + + # Step for Unix: Create and activate a virtual environment + - name: Create and activate a virtual environment (Unix) + if: ${{ runner.os != 'Windows' }} + run: | + curl -LsSf https://astral.sh/uv/install.sh | sh + uv venv .venv + echo "VIRTUAL_ENV=.venv" >> $GITHUB_ENV + echo "$PWD/.venv/bin" >> $GITHUB_PATH + + # Install dependencies using uv pip + - name: Install dependencies + run: make install-no-pre-commit + + # Run tests with coverage + - name: Run tests under coverage + run: | + coverage run -m pytest + coverage report + + # Upload results to Codecov + - name: Upload results to Codecov + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/Makefile b/Makefile index 3e216cd..5773c96 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,12 @@ install: venv uv sync --all-extras uv run pre-commit install +install-no-pre-commit: + uv pip install ".[dev,hnsw,pynndescent]" + +install-base: + uv sync --extra dev + fix: uv run pre-commit run --all-files diff --git a/README.md b/README.md index 3a255de..1168ef2 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,22 @@ + +
+

+ Package version + Supported Python versions + + Downloads + + + Codecov + + License - MIT +

+
+ + ## Table of contents - [Quickstart](#quickstart)