Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 0 additions & 8 deletions .bumpversion.cfg

This file was deleted.

1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @aviadr1
12 changes: 10 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ body:
- type: input
id: python
attributes:
label: Python version
placeholder: "3.12.11"
label: Python version and implementation
placeholder: "CPython 3.12.11"
validations:
required: true
- type: input
Expand All @@ -41,6 +41,14 @@ body:
placeholder: "Windows 11, Ubuntu 24.04, macOS 15"
validations:
required: true
- type: textarea
id: diagnostics
attributes:
label: Diagnostics
description: Paste the output of the diagnostic snippet from the README, if import succeeds.
render: text
validations:
required: false
- type: textarea
id: reproduction
attributes:
Expand Down
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: uvloop issues
url: https://github.com/MagicStack/uvloop/issues
about: Report Linux, macOS, or POSIX backend bugs that reproduce with uvloop directly.
- name: winloop issues
url: https://github.com/Vizonex/Winloop/issues
about: Report Windows backend bugs that reproduce with winloop directly.
2 changes: 2 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ updates:
day: "monday"
time: "08:00"
timezone: "Asia/Jerusalem"
rebase-strategy: "auto"
open-pull-requests-limit: 10
groups:
upstream-event-loops:
Expand Down Expand Up @@ -40,6 +41,7 @@ updates:
day: "monday"
time: "08:30"
timezone: "Asia/Jerusalem"
rebase-strategy: "auto"
open-pull-requests-limit: 5
groups:
github-actions:
Expand Down
7 changes: 7 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,16 @@

-

## Compatibility

- [ ] Wrapper behavior is covered with fake-backend tests where practical
- [ ] Real-backend smoke behavior still works on the relevant platform
- [ ] User-facing behavior or support guidance is reflected in docs/changelog

## Checks

- [ ] `uv run ruff check .`
- [ ] `uv run ruff format --check .`
- [ ] `uv run pytest`
- [ ] `uv build`
- [ ] `uv run twine check dist/*`
6 changes: 5 additions & 1 deletion .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
name: Auto Release

on:
push:
workflow_run:
workflows: ["CI"]
branches: [main]
types: [completed]
workflow_dispatch:

permissions:
Expand All @@ -16,12 +18,14 @@ concurrency:
jobs:
tag:
name: Tag new project version
if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.workflow_run.head_sha || github.ref }}

- name: Read project version
id: version
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@ on:
branches: [main]
pull_request:
branches: [main]
merge_group:
workflow_dispatch:

permissions:
contents: read

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

jobs:
lint:
name: Lint and lock
Expand All @@ -35,6 +40,12 @@ jobs:
- name: Run ruff
run: uv run ruff check .

- name: Check formatting
run: uv run ruff format --check .

- name: Compile package
run: uv run python -m compileall -q src tests

test:
name: Test ${{ matrix.os }} / Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
Expand Down
39 changes: 36 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,45 @@ on:
permissions:
contents: read

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

jobs:
test:
name: Smoke test ${{ matrix.os }} / Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
python-version: "3.12"
- os: macos-latest
python-version: "3.12"
- os: windows-latest
python-version: "3.12"
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up uv
uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: true
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: uv sync --frozen

- name: Run tests
run: uv run pytest

build:
name: Build distributions
needs: test
runs-on: ubuntu-latest
steps:
- name: Check out repository
Expand All @@ -28,9 +64,6 @@ jobs:
- name: Install dependencies
run: uv sync --frozen

- name: Run tests
run: uv run pytest

- name: Build distributions
run: uv build

Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ All notable changes to `winuvloop` are documented here.
## 0.2.2 - Unreleased

- Add public API stubs for better editor and type-checker ergonomics.
- Add `backend_version()` for support logs and diagnostics.
- Improve missing-backend import errors with Python implementation context.
- Expand README guidance for `uvloop`, `winloop`, and `winuvloop` selection.
- Gate automatic release tagging on successful `main` CI runs.
- Add release smoke tests on Linux, macOS, and Windows before publishing.
- Add formatting and bytecode compilation checks to CI.
- Add upstream issue routing links and stronger pull request guidance.
- Include tests and maintenance docs in the source distribution.

## 0.2.1 - 2026-04-25

Expand Down
23 changes: 20 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,16 @@ Before opening a pull request, run:

```bash
uv run ruff check .
uv run ruff format --check .
uv run pytest
uv build
uv run twine check dist/*
```

Pull requests are gated by the GitHub Actions CI workflow. CI checks the
lockfile, linting, formatting, package build metadata, fake-backend unit tests,
and real-backend smoke tests on Linux, macOS, and Windows.

## Version Policy

`winuvloop` follows semantic versioning:
Expand All @@ -31,9 +36,10 @@ uv run twine check dist/*

Releases are automatic after a version change lands on `main`. If
`pyproject.toml` contains a version without a matching `vX.Y.Z` tag, GitHub
Actions creates the tag and dispatches `release.yml`. The release workflow
builds, validates, publishes to PyPI through trusted publishing or the
`PYPI_API_TOKEN` fallback secret, and creates a GitHub Release.
Actions creates the tag after CI has passed for `main` and dispatches
`release.yml`. The release workflow builds, validates, publishes to PyPI
through trusted publishing or the `PYPI_API_TOKEN` fallback secret, and creates
a GitHub Release.

## Dependency Policy

Expand All @@ -44,10 +50,21 @@ can block users from receiving fixed wheels and security releases.
Development dependencies are locked with `uv.lock` and updated by Dependabot.
Dependabot pull requests are merged automatically after CI passes.

Dependency updates should preserve the package's compatibility promise:

- keep runtime dependencies aligned with the latest usable `uvloop` and
`winloop` releases
- keep CI covering at least one oldest-supported CPython, one current CPython,
one pre-release/new CPython when available, and all three runner families
- prefer improving diagnostics over adding fallback event-loop behavior that
differs from upstream

## Pull Request Guidelines

- Keep changes focused.
- Add tests for runtime behavior.
- Update `README.md` or `CHANGELOG.md` when user-facing behavior changes.
- Do not vendor code from `uvloop` or `winloop`; this package should remain a
thin selector and compatibility wrapper.
- When reporting backend bugs, first try to reproduce with `uvloop` or
`winloop` imported directly so the issue can be routed to the right project.
Loading